Update Digital Ocean deploy (#765)

* Update Digital Ocean deploy

* Change HTTP port to 8080

---------

Co-authored-by: Tim Condon <0xTim@users.noreply.github.com>
This commit is contained in:
Tyler Waitt 2023-02-05 18:26:47 -05:00 committed by GitHub
parent affde5fb5d
commit ff7cadd323
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
8 changed files with 59 additions and 37 deletions

View File

@ -1,6 +1,6 @@
# Deploying to DigitalOcean
This guide will walk you through deploying a simple Hello, world Vapor application to a [Droplet](https://www.digitalocean.com/products/droplets/). To follow this guide, you will need to have a [DigitalOcean](https://www.digitalocean.com) account with billing configured.
This guide will walk you through deploying a simple Hello, world Vapor application to a [Droplet](https://www.digitalocean.com/products/droplets/). To follow this guide, you must have a [DigitalOcean](https://www.digitalocean.com) account with billing configured.
## Create Server
@ -8,12 +8,12 @@ Let's start by installing Swift on a Linux server. Use the create menu to create
![Create Droplet](../images/digital-ocean-create-droplet.png)
Under distributions, select Ubuntu 18.04 LTS. The following guide will use this version as an example.
Under distributions, select Ubuntu 22.04 LTS. The following guide will use this version as an example.
![Ubuntu Distro](../images/digital-ocean-distributions-ubuntu-18.png)
![Ubuntu Distro](../images/digital-ocean-distributions-ubuntu.png)
!!! note
You may select any Linux distribution with a version that Swift supports. At the time of writing, Swift 5.2.4 supports Ubuntu 16.04, 18.04, 20.04, CentOS 8, and Amazon Linux 2. You can check which operating systems are officially supported on the [Swift Releases](https://swift.org/download/#releases) page.
You may select any Linux distribution with a version that Swift supports. At the time of writing, Swift 5.7.3 supports Ubuntu 18.04, 20.04, 22.04, CentOS 7, and Amazon Linux 2. You can check which operating systems are officially supported on the [Swift Releases](https://swift.org/download/#releases) page.
After selecting the distribution, choose any plan and datacenter region you prefer. Then setup an SSH key to access the server after it is created. Finally, click create Droplet and wait for the new server to spin up.
@ -29,7 +29,7 @@ Open your terminal and connect to the server as root using SSH.
ssh root@your_server_ip
```
DigitalOcean has an in-depth guide for [initial server setup on Ubuntu 18.04](https://www.digitalocean.com/community/tutorials/initial-server-setup-with-ubuntu-18-04). This guide will quickly cover the basics.
DigitalOcean has an in-depth guide for [initial server setup on Ubuntu 22.04](https://www.digitalocean.com/community/tutorials/initial-server-setup-with-ubuntu-22-04). This guide will quickly cover the basics.
### Configure Firewall
@ -77,38 +77,40 @@ Install Swift's required dependencies.
```sh
sudo apt-get update
sudo apt-get install clang libicu-dev libatomic1 build-essential pkg-config
sudo apt-get install binutils git gnupg2 libc6-dev libcurl4-openssl-dev
\ libedit2 libgcc-9-dev libpython3.8 libsqlite3-0 libstdc++-9-dev
\ libxml2-dev libz3-dev pkg-config tzdata unzip zlib1g-dev
```
### Download Toolchain
### Download Swift Toolchain
This guide will install Swift 5.2.4. Visit the [Swift Releases](https://swift.org/download/#releases) page for a link to latest release. Copy the download link for Ubuntu 18.04.
This guide will install Swift 5.7.3. Visit the [Swift Releases](https://swift.org/download/#releases) page for a link to latest release. Copy the download link for Ubuntu 22.04.
![Download Swift](../images/swift-download-ubuntu-18-copy-link.png)
![Download Swift](../images/swift-download-ubuntu-copy-link.png)
Download and decompress the Swift toolchain.
```sh
wget https://swift.org/builds/swift-5.2.4-release/ubuntu1804/swift-5.2.4-RELEASE/swift-5.2.4-RELEASE-ubuntu18.04.tar.gz
tar xzf swift-5.2.4-RELEASE-ubuntu18.04.tar.gz
wget https://download.swift.org/swift-5.7.3-release/ubuntu2204/swift-5.7.3-RELEASE/swift-5.7.3-RELEASE-ubuntu22.04.tar.gz
tar xzf swift-5.7.3-RELEASE-ubuntu22.04.tar.gz
```
!!! note
Swift's [Using Downloads](https://swift.org/download/#using-downloads) guide includes information on how to verify downloads using PGP signatures.
### Install Toolchain
### Install Swift Toolchain
Move Swift somewhere easy to acess. This guide will use `/swift` with each compiler version in a subfolder.
```sh
sudo mkdir /swift
sudo mv swift-5.2.4-RELEASE-ubuntu18.04 /swift/5.2.4
sudo mv swift-5.7.3-RELEASE-ubuntu22.04 /swift/5.7.3
```
Add Swift to `/usr/bin` so it can be executed by `vapor` and `root`.
```sh
sudo ln -s /swift/5.2.4/usr/bin/swift /usr/bin/swift
sudo ln -s /swift/5.7.3/usr/bin/swift /usr/bin/swift
```
Verify that Swift was installed correctly.
@ -117,59 +119,79 @@ Verify that Swift was installed correctly.
swift --version
```
## Setup Project
## Install Vapor Using the Vapor Toolbox
Now that Swift is installed, let's clone and compile your project. For this example, we'll be using Vapor's [API template](https://github.com/vapor/api-template/).
Now that Swift is installed, let's install Vapor using the Vapor Toolbox. You will need to build the toolbox from source. View the toolbox's [releases](https://github.com/vapor/toolbox/releases) on GitHub to find the latest version. In this example, we are using 18.6.0.
First let's install Vapor's system dependencies.
### Clone and Build Vapor
Clone the Vapor Toolbox repository.
```sh
sudo apt-get install openssl libssl-dev zlib1g-dev libsqlite3-dev
git clone https://github.com/vapor/toolbox.git
```
Allow HTTP through the firewall.
Checkout the latest release.
```sh
sudo ufw allow http
cd toolbox
git checkout 18.6.0
```
### Clone & Build
Now clone the project and build it.
Build Vapor and move the binary into your path.
```sh
git clone https://github.com/vapor/api-template.git
cd api-template
swift build
swift build -c release --disable-sandbox --enable-test-discovery
sudo mv .build/release/vapor /usr/local/bin
```
### Create a Vapor Project
Use the Toolbox's new project command to initiate a project.
```sh
vapor new HelloWorld -n
```
!!! tip
If you are building this project for production, use `swift build -c release`
The `-n` flag gives you a bare bones template by automatically answering no to all questions.
![Vapor Splash](../images/vapor-splash.png)
Once the command finishes, change into the newly created folder:
```sh
cd HelloWorld
```
### Open HTTP Port
In order to access Vapor on your server, open an HTTP port.
```sh
sudo ufw allow 8080
```
### Run
Once the project has finished compiling, run it on your server's IP at port 80. The IP address is `157.245.244.228` in this example.
Now that Vapor is setup and we have an open port, let's run it.
```sh
sudo .build/debug/Run serve -b 157.245.244.228:80
vapor run serve --hostname 0.0.0.0 --port 8080
```
If you used `swift build -c release`, then you need to run:
```sh
sudo .build/release/Run serve -b 157.245.244.228:80
```
Visit your server's IP via browser or local terminal and you should see "It works!".
Visit your server's IP via browser or local terminal and you should see "It works!". The IP address is `134.122.126.139` in this example.
```
$ curl http://157.245.244.228
$ curl http://134.122.126.139:8080
It works!
```
Back on your server, you should see logs for the test request.
```
[ NOTICE ] Server starting on http://157.245.244.228:80
[ NOTICE ] Server starting on http://0.0.0.0:8080
[ INFO ] GET /
```

Binary file not shown.

Before

Width:  |  Height:  |  Size: 71 KiB

After

Width:  |  Height:  |  Size: 86 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 98 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 73 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 44 KiB

After

Width:  |  Height:  |  Size: 39 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 452 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 220 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 111 KiB