Meteor Up (または Modulus のような他の Meteor アプリのデプロイ プロセス) が、Meteor アプリケーションをコピーして tmux セッションを開始し、サーバー上でアプリケーションを起動するだけの場合と比べて、何か凝ったことをするかどうか、少し興味がありmeteor
ます。よろしくお願いします!
4 に答える
Meteor UpとModulusは、node.js と Mongodb を実行するだけのようです。アプリを実稼働用にパッケージ化した後、アプリを実行しますmeteor build
。これにより、おそらくアプリのパフォーマンスが向上します。
tmuxまたはscreenセッションで meteor を実行することは可能です。私はmeteor run --settings settings.json --production
設定を渡すために使用し、コードなどを縮小するプロダクション モードも使用します。Nginx のようなプロキシ フォワーダーを使用して、リクエストをポート 80 (http) および 443 (https) に転送することもできます。
参考までに、私のNginx構成は次のとおりです。
server {
listen 80;
server_name example.com www.example.com;
return 301 https://example.com$request_uri;
}
server {
listen 443 ssl;
server_name www.example.com;
ssl_certificate /etc/ssl/private/example.com.unified.crt;
ssl_certificate_key /etc/ssl/private/example.com.ssl.key;
return 301 https://example.com$request_uri;
}
server {
listen 443 ssl;
server_name example.com;
ssl_certificate /etc/ssl/private/example.com.unified.crt;
ssl_certificate_key /etc/ssl/private/example.com.ssl.key;
location / {
proxy_pass http://localhost:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_set_header X-NginX-Proxy true;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
この方法を使用すると、すべてが meteor コンテナー内に含まれ、変更などを監視する meteor の利点が得られます。ただし、サーバーに余分なオーバーヘッドが発生する場合があります。両方の方法を十分にテストしていないため、正確にどの程度かはわかりません。
この方法を使用して私が見つけた唯一の問題は、再起動時にすべてを自動化するのは簡単ではないことです。たとえば、tmux を自動的に実行してから meteor を起動するのとは対照的に、Node.js ForeverやPM2などの特別に設計されたツールを使用するとサーバーが自動的に起動します。再起動されます。そのため、サーバーに手動でログインして実行する必要がありますmeteor
。tmuxまたはscreenを使用してこれを行う簡単な方法を見つけたら、お知らせください。
編集:
/etc/rc.local
ファイルに次の行を追加して、システムの起動時に Meteor を起動することができました。
sudo -H -u ubuntu -i /usr/bin/tmux new-session -d '/home/ubuntu/Sites/meteorapp/run_meteorapp.sh'
このコマンドはrun_meteorapp.sh
、システムの起動後に tmux セッション内でシェル スクリプトを実行します。run_meteorapp.sh には次のものがあります。
#!/usr/bin/env bash
(cd /home/ubuntu/Sites/meteorapp && exec meteor run --settings settings.json --production)
Mupx はさらに多くのことを行います。ドッカーを利用しています。これは開発版ですが、Meteor を 1.2 にアップデートした後、mup よりも信頼性が高いことがわかりました。
詳細は github リポジトリにあります: https://github.com/arunoda/meteor-up/tree/mupx
私は mupx を使用してデジタル オーシャンに展開しています。mup.json ファイルをセットアップすると、アプリをデプロイできるだけでなく、CLI を使用してサーバー上のコードを簡単に更新することもできます。他にも役立つコマンドがいくつかあります。
mupx reconfig
- 環境変数を使用してアプリを再構成します
mupx stop
- アプリを停止します
mupx start
- ...
mupx restart
- ...
mupx logs [-f --tail=100]
- これにより、展開エラーが発生したときに非常に役立つログが取得されます。
確かにアプリの更新が簡単になり、とても満足しています。
Mupx はMeteorD (Meteor Apps の Docker ランタイム) を使用します。Docker を使用 するため、次のコマンドで ssh 経由で MongoDB シェルにアクセスすると非常に便利です。
docker exec -it mongodb mongo <appName>
試してみます!