DigitalOceanへのデプロイ¶
このガイドでは、シンプルなHello, world VaporアプリケーションをDropletにデプロイする方法を説明します。このガイドに従うには、請求設定が完了したDigitalOceanアカウントが必要です。
サーバーの作成¶
まずはLinuxサーバーにSwiftをインストールしましょう。作成メニューを使用して新しいDropletを作成します。
ディストリビューションでUbuntu 22.04 LTSを選択します。以下のガイドではこのバージョンを例として使用します。
Note
Swiftがサポートするバージョンの任意のLinuxディストリビューションを選択できます。公式にサポートされているオペレーティングシステムはSwift Releasesページで確認できます。
ディストリビューションを選択した後、お好みのプランとデータセンターのリージョンを選択します。次に、作成後にサーバーにアクセスするためのSSHキーを設定します。最後に、Dropletを作成をクリックして、新しいサーバーが起動するのを待ちます。
新しいサーバーの準備ができたら、DropletのIPアドレスにカーソルを合わせてコピーをクリックします。
初期設定¶
ターミナルを開き、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 CLIツールを使用した自動インストール(推奨)¶
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と答えることで、最小限のテンプレートを提供します。
コマンドが完了したら、新しく作成されたフォルダに移動します:
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について詳しく学びましょう。