res*_*ode 192 deployment service daemon node.js
部署Node.js的最佳方法是什么?
我有一个Dreamhost VPS(他们称之为VM),我已经能够安装Node.js并设置代理.只要我保持打开节点的SSH连接,这就很好用.
mik*_*ana 100
2016答案:几乎每个Linux发行版都附带systemd,这意味着永远,monit等不再需要 - 您的操作系统已经处理了这些任务.
创建一个myapp.service文件(显然用你的应用程序名称替换'myapp'):
[Unit]
Description=My app
[Service]
ExecStart=/var/www/myapp/app.js
Restart=always
User=nobody
# Note Debian/Ubuntu uses 'nogroup', RHEL/Fedora uses 'nobody'
Group=nobody
Environment=PATH=/usr/bin:/usr/local/bin
Environment=NODE_ENV=production
WorkingDirectory=/var/www/myapp
[Install]
WantedBy=multi-user.target
Run Code Online (Sandbox Code Playgroud)
请注意,如果您是Unix新手: /var/www/myapp/app.js应该#!/usr/bin/env node在第一行.
将您的服务文件复制到该/etc/systemd/system文件夹中.
告诉systemd有关新服务的信息systemctl daemon-reload.
启动它systemctl start myapp.
启用它以在启动时运行systemctl enable myapp.
查看日志 journalctl -u myapp
这取自我们如何在Linux 2018版上部署节点应用程序,其中还包括生成AWS/DigitalOcean/Azure CloudConfig以构建Linux /节点服务器(包括.service文件)的命令.
小智 41
我在这里写了关于我的部署方法:部署node.js应用程序
简而言之:
您可以使用monit,forever,upstart或systemd来启动服务器.
您可以使用Varnish或HAProxy而不是Nginx(已知Nginx不能与websockets一起使用).
作为一种快速而肮脏的解决方案,您可以使用它nohup node your_app.js &来阻止您的应用程序终止于您的服务器,但是forever,monit其他建议的解决方案更好.
我制作了一个目前用于我的应用程序的Upstart脚本:
description "YOUR APP NAME"
author "Capy - http://ecapy.com"
env LOG_FILE=/var/log/node/miapp.log
env APP_DIR=/var/node/miapp
env APP=app.js
env PID_NAME=miapp.pid
env USER=www-data
env GROUP=www-data
env POST_START_MESSAGE_TO_LOG="miapp HAS BEEN STARTED."
env NODE_BIN=/usr/local/bin/node
env PID_PATH=/var/opt/node/run
env SERVER_ENV="production"
######################################################
start on runlevel [2345]
stop on runlevel [016]
respawn
respawn limit 99 5
pre-start script
mkdir -p $PID_PATH
mkdir -p /var/log/node
end script
script
export NODE_ENV=$SERVER_ENV
exec start-stop-daemon --start --chuid $USER:$GROUP --make-pidfile --pidfile $PID_PATH/$PID_NAME --chdir $APP_DIR --exec $NODE_BIN -- $APP >> $LOG_FILE 2>&1
end script
post-start script
echo $POST_START_MESSAGE_TO_LOG >> $LOG_FILE
end script
Run Code Online (Sandbox Code Playgroud)
在#########之前自定义所有内容,在/etc/init/your-service.conf中创建一个文件并将其粘贴到那里.
然后你可以:
start your-service
stop your-service
restart your-service
status your-service
Run Code Online (Sandbox Code Playgroud)
如果您具有root访问权限,则最好设置一个守护程序,以便它在后台运行安全可靠.您可以在Ubuntu上的博客文章Run Node.js as a Service中阅读如何为Debian和Ubuntu做到这一点.
以下是关于使用systemd解决此问题的更长篇文章:http://savanne.be/articles/deploying-node-js-with-systemd/
要注意的一些事项:
所有这些都可以通过systemd轻松完成.
| 归档时间: |
|
| 查看次数: |
90691 次 |
| 最近记录: |