nginx、forever、およびcrontabを使用して単一のVPSで複数のNode.jsアプリケーションをホストする方法
このチュートリアルに従うための要件
nginxとNode.jsをインストールする必要があります。また、DigitalOceanには、これらのトピックに関する十分に記述されたチュートリアルがあります。
nginxのインストール方法とNode.jsのインストール方法。
さらに、http:// [your-vps-ip]:[port]に移動する代わりに、実行中のNode.jsサービスをドメイン名にマップするために、すでにドメインを所有している必要があります。
Node.jsアプリケーションをForeverで実行する
Foreverは、Node.jsアプリケーションが継続的に実行されるようにするためのシンプルなコマンドラインツールです(つまり、 永遠に)。 これは、アプリでエラーが発生してクラッシュした場合、永久にこの問題を処理して再起動することを意味します。
グローバルに永久にインストールするだけで、数秒で永久に使用できます。
npm install forever -g
永久にスクリプトを開始するには、次の手順に従う必要があります。
Node.jsアプリケーションに移動します。
cd /path/to/your/node/app/
サーバー/メインのJavaScriptファイルを永久に実行します。
forever start --spinSleepTime 10000 main.js
どこ --spinSleepTime 10000
クラッシュするスクリプトの起動間の最小稼働時間(ミリ秒単位)を指します。 このコマンドは、ほとんどすべての場合に機能します。
次に、ブラウザでhttp:// [your-vps-ip]:[port]にアクセスし、アプリが実行されていることを確認します。
ドメインをNode.jsアプリケーションにマップする
次に、DigitalOceanコントロールパネルにDNSレコードを追加して、ドメイン名をドロップレット(VPS)にマッピングする必要があります。
従う手順は次のとおりです。
- DigitalOcean.comにログインします
- 左側のサイドバーの[DNS]セクションをクリックします
- [ドメインの追加]ボタンをクリックしてドメインを追加し、選択したVPSを選択して、[名前]フィールドに登録したドメイン名を入力します
- DigitalOceanが提供するネームサーバーをコピーします(例: NS1.DIGITALOCEAN.COM 。)ドメインレジストラのコントロールパネルのDNSレコードにそれぞれを追加します。
注:DNSの伝播には最大24時間かかる可能性があるため、変更はすぐには行われません。
nginxを使用してVPSで実行されているサービスにドメインをマッピングします
このセクションでは、いくつかの簡単な手順で、nginxを使用してリバースプロキシを設定する方法を学習します。
まず、お気に入りのエディターを使用して/etc/nginx/conf.d/に目的のドメインのファイルを作成します(nanoを使用します)。 一貫性を保つため、ファイルにはドメイン名にちなんで名前を付ける必要があります。
nano /etc/nginx/conf.d/example.com.conf
注:ファイルは好きなように呼び出すことができます。重要な部分は .conf
拡大。
このファイルでは、次のコードスニペットをコピーして、前に作成したファイルに貼り付けます。
server {
listen 80;
server_name your-domain.com;
location / {
proxy_pass http://localhost:{YOUR_PORT};
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}
今すぐ単に交換してください your-domain.com
登録したドメインと YOUR_PORT
Node.jsアプリがVPSでリッスンしているポートを使用します。
注:1つのNode.jsアプリ(www.example.comやexample.comなど)の複数のドメインを参照できるようにするには、ファイルに次のコードを追加する必要があります /etc/nginx/nginx.conf
の中に http
セクション:
server_names_hash_bucket_size 64;
DNSの変更が伝播される場合は、Webブラウザーでドメインを指定すると、インターネットからアクセスできるアプリケーションが実行されていることがわかります。
再起動時にNode.jsアプリを再起動する
クラッシュしたときなどにアプリケーションを実行し続けることに関しては、Foreverは良いことです。 しかし、VPSが再起動されるとどうなりますか?
これは、単純なcronジョブでアプリケーションとユーザーが予期しないダウンタイムを防ぐことができる場所です。
というファイルを作成します starter.sh
アプリケーションのホームフォルダに移動し、次のコードをコピーします。
#!/bin/sh
if [ $(ps -e -o uid,cmd | grep $UID | grep node | grep -v grep | wc -l | tr -s "\n") -eq 0 ]
then
export PATH=/usr/local/bin:$PATH
forever start --sourceDir /path/to/your/node/app main.js >> /path/to/log.txt 2>&1
fi
どこ main.js
アプリケーションのメインスクリプトに置き換える必要があります。
この便利なスニペットは、こちらから取得したものです。
再起動するたびにこのスクリプトを開始するには、次のコマンドでcrontabを編集する必要があります。
crontab -e
このファイルに次のコードを追加します
@reboot /path/to/starter.sh
次に、starter.shファイルへの絶対パスを設定します。
ヒント: starter.sh ファイルがある場所に移動し、現在のディレクトリを次のように出力します。 pwd
.
ドメイン/サービスごとに上記の手順を繰り返します。