我是一个nodejs和devops初学者。我开发了一个nodejs&express应用程序。把它放在github上。然后将其部署在cenos服务器上。在端口3000上可用。 然后,我接下来的两个任务是确保它在端口80上可用并且在服务器重新启动时可用。
为了确保它在端口80上可用,我遵循了问题here 并且做了
`sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3000`
然后在服务器重启时启动它,我按照here的要求尝试了PM2。
但是我得到以下信息,并且应用程序在重新启动时无法启动。
[root@izp0w38zlt3vpnedj7wlznz ExpressAppfmab]# pm2 start app.js
[PM2] Starting /root/ExpressAppfmab/ExpressAppfmab/app.js in fork_mode (1 instance)
[PM2] Done.
┌──────┬────┬───────┬────────┬────────┬─────┬────────┬───────────┐
│ Name │ id │ mode │ status │ ↺ │ cpu │ memory │
├──────┼────┼───────┼────────┼────────┼─────┼────────┼───────────┤
│ app │ 0 │ 0.0.0 │ fork │ online │ 0 │ 0% │ 19.9 MB │
└──────┴────┴───────┴────────┴────────┴─────┴────────┴───────────┘
Use `pm2 show <id|name>` to get more details about an app
[root@izp0w38zlt3vpnedj7wlznz ExpressAppfmab]# sudo pm2 startup systemd
[PM2] Init System found: systemd
Platform systemd
Template
[Unit]
Description=PM2 process manager
Documentation=https://pm2.keymetrics.io/
After=network.target
[Service]
Type=forking
User=root
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
Environment=PATH=/usr/bin:/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin
Environment=PM2_HOME=/root/.pm2
PIDFile=/root/.pm2/pm2.pid
ExecStart=/usr/lib/node_modules/pm2/bin/pm2 resurrect
ExecReload=/usr/lib/node_modules/pm2/bin/pm2 reload all
ExecStop=/usr/lib/node_modules/pm2/bin/pm2 kill
[Install]
WantedBy=multi-user.target
Target path
/etc/systemd/system/pm2-root.service
Command list
[ 'systemctl enable pm2-root' ]
[PM2] Writing init configuration in /etc/systemd/system/pm2-root.service
[PM2] Making script booting at startup...
[PM2] [-] Executing: systemctl enable pm2-root...
[PM2] [v] Command successfully executed.
+---------------------------------------+
[PM2] Freeze a process list on reboot via:
$ pm2 save
[PM2] Remove init script via:
$ pm2 unstartup systemd
[root@izp0w38zlt3vpnedj7wlznz ExpressAppfmab]#
衷心感谢您的帮助。
谢谢