2017-08-20 11 views
2

Nodejsプロジェクトを作成したので、スムーズに実行できます。 私はforeverサービスをバックグラウンドで実行するためにサービスを使用しますが、サーバが再起動されると デーモンは自動的に起動されないため、手動で起動する必要があります。 サーバを再起動してもデーモンを実行したいサーバを再起動してもノードjsを実行する方法

+0

あなたのサーバーにはどのようなOSを使用していますか? – RaghavGarg

+0

@RaghavGarg私はcentos7を使用しています –

+0

あなたは永遠に試しましたか?pm2、nodemon、...? – jonrsharpe

答えて

4

.bash_profileにforeverコマンドを追加すると、サーバを再起動するたびにコマンドも実行されます。

次回、サーバーを再起動すると、コマンドも実行され、ノードスクリプトのデーモンが作成されます。

注:これはおそらく最良のソリューションではなく、私が持っているものです。

更新

@dlmeeteiとして、我々はLinuxサービスによって与えられた機能を使用できるように、また、サービスのようなあなたのnodejsアプリを起動することができ、提案しました。

まず/etc/systemd/systemでファイルを作成し、よう:

touch /etc/systemd/system/[your-app-name].service 
nano /etc/systemd/system/[your-app-name].service 

次に、あなたの関連性に応じて、以下のスクリプトを追加し、編集します。

[Unit] 
Description=Node.js Example Server 
#Requires=After=mysql.service # Requires the mysql service to run first 

[Service] 
ExecStart=/usr/local/bin/node /opt/nodeserver/server.js 
# Required on some systems 
# WorkingDirectory=/opt/nodeserver 
Restart=always 
# Restart service after 10 seconds if node service crashes 
RestartSec=10 
# Output to syslog 
StandardOutput=syslog 
StandardError=syslog 
SyslogIdentifier=nodejs-example 
#User=<alternate user> 
#Group=<alternate group> 
Environment=NODE_ENV=production PORT=1337 

[Install] 
WantedBy=multi-user.target 

サービスを有効にすると、サービスが起動時に起動するようにマークされます。

systemctl enable [your-app-name].service 

systemctl start [your-app-name].service 
systemctl stop [your-app-name].service 
systemctl status [your-app-name].service # ensure your app is running 
systemctl restart [your-app-name].service 

リファレンスサービスの管理:https://www.axllent.org/docs/view/nodejs-service-with-systemd/

おかげでリンクを共有するための@dlmeetei。

+0

ありがとう、私にとっても良かったよ。 –

+1

これは、あなたが 'bash'を起動したときにだけあなたのサーバーを起動します。 'systemd'と統合するか、lsbに基づいてinit.dスクリプトを書く方が良いでしょう。 – dlmeetei

+0

@dlmeetei、私はUnixシステムではあまりよくありません。あなたはそれを奉仕することを提案していますか?そうでない場合は、systemdとinit.dのどちらを使っても良いでしょうか? – RaghavGarg

関連する問題