コンテンツにスキップ

DigitalOceanへのデプロイ

このガイドでは、シンプルなHello, world VaporアプリケーションをDropletにデプロイする方法を説明します。このガイドに従うには、請求設定が完了したDigitalOceanアカウントが必要です。

サーバーの作成

まずはLinuxサーバーにSwiftをインストールしましょう。作成メニューを使用して新しいDropletを作成します。

Create Droplet

ディストリビューションでUbuntu 22.04 LTSを選択します。以下のガイドではこのバージョンを例として使用します。

Ubuntu Distro

Note

Swiftがサポートするバージョンの任意のLinuxディストリビューションを選択できます。公式にサポートされているオペレーティングシステムはSwift Releasesページで確認できます。

ディストリビューションを選択した後、お好みのプランとデータセンターのリージョンを選択します。次に、作成後にサーバーにアクセスするためのSSHキーを設定します。最後に、Dropletを作成をクリックして、新しいサーバーが起動するのを待ちます。

新しいサーバーの準備ができたら、DropletのIPアドレスにカーソルを合わせてコピーをクリックします。

Droplet List

初期設定

ターミナルを開き、SSHを使用してrootとしてサーバーに接続します。

ssh root@your_server_ip

DigitalOceanにはUbuntu 22.04の初期サーバー設定に関する詳細なガイドがあります。このガイドでは基本的な内容を簡単に説明します。

ファイアウォールの設定

OpenSSHをファイアウォール経由で許可し、有効にします。

ufw allow OpenSSH
ufw enable

ユーザーの追加

root以外の新しいユーザーを作成します。このガイドでは新しいユーザーをvaporと呼びます。

adduser vapor

新しく作成したユーザーがsudoを使用できるようにします。

usermod -aG sudo vapor

rootユーザーの認証済みSSHキーを新しく作成したユーザーにコピーします。これにより、新しいユーザーとしてSSH接続できるようになります。

rsync --archive --chown=vapor:vapor ~/.ssh /home/vapor

最後に、現在のSSHセッションを終了し、新しく作成したユーザーとしてログインします。

exit
ssh vapor@your_server_ip

Swiftのインストール

新しいUbuntuサーバーを作成し、非rootユーザーとしてログインしたので、Swiftをインストールできます。

Swiftlyウェブサイトにアクセスして、LinuxでSwiftlyとSwiftをインストールする方法の手順を確認してください。その後、次のコマンドでSwiftをインストールします:

基本的な使い方

$ swiftly install latest

Fetching the latest stable Swift release...
Installing Swift 5.9.1
Downloaded 488.5 MiB of 488.5 MiB
Extracting toolchain...
Swift 5.9.1 installed successfully!

$ swift --version

Swift version 5.9.1 (swift-5.9.1-RELEASE)
Target: x86_64-unknown-linux-gnu

Vapor Toolboxを使用したVaporのインストール

Swiftがインストールされたので、Vapor Toolboxを使用してVaporをインストールしましょう。toolboxをソースからビルドする必要があります。GitHubでtoolboxのreleasesを確認して最新バージョンを見つけてください。この例では、18.6.0を使用しています。

Vaporのクローンとビルド

Vapor Toolboxリポジトリをクローンします。

git clone https://github.com/vapor/toolbox.git

最新のリリースをチェックアウトします。

cd toolbox
git checkout 18.6.0

Vaporをビルドして、バイナリをパスに移動します。

swift build -c release --disable-sandbox --enable-test-discovery
sudo mv .build/release/vapor /usr/local/bin

Vaporプロジェクトの作成

Toolboxの新規プロジェクトコマンドを使用してプロジェクトを初期化します。

vapor new HelloWorld -n

Tip

-nフラグは、すべての質問に自動的にnoと答えることで、最小限のテンプレートを提供します。

Vapor Splash

コマンドが完了したら、新しく作成されたフォルダに移動します:

cd HelloWorld

HTTPポートを開く

サーバー上のVaporにアクセスするために、HTTPポートを開きます。

sudo ufw allow 8080

実行

Vaporがセットアップされ、ポートが開いたので、実行してみましょう。

swift run App serve --hostname 0.0.0.0 --port 8080

ブラウザまたはローカルターミナルからサーバーのIPにアクセスすると、「It works!」が表示されるはずです。この例ではIPアドレスは134.122.126.139です。

$ curl http://134.122.126.139:8080
It works!

サーバーに戻ると、テストリクエストのログが表示されているはずです。

[ NOTICE ] Server starting on http://0.0.0.0:8080
[ INFO ] GET /

CTRL+Cを使用してサーバーを終了します。シャットダウンには少し時間がかかる場合があります。

DigitalOcean DropletでVaporアプリが実行できたことをおめでとうございます!

次のステップ

このガイドの残りの部分では、デプロイメントを改善するための追加リソースを紹介します。

Supervisor

Supervisorは、Vapor実行ファイルを実行および監視できるプロセス制御システムです。Supervisorを設定すると、サーバーの起動時にアプリが自動的に開始され、クラッシュした場合に再起動されます。Supervisorについて詳しく学びましょう。

Nginx

Nginxは、極めて高速で、実戦で証明されており、設定が簡単なHTTPサーバーおよびプロキシです。VaporはHTTPリクエストを直接処理することをサポートしていますが、Nginxの背後でプロキシすることで、パフォーマンス、セキュリティ、使いやすさが向上します。Nginxについて詳しく学びましょう。