我有一个ubuntu服务器。我在其中传输了一些包含 js 和 html 代码的文件。
我使用node.js 中的http-server 来启动Web 服务器,以便我可以在服务器上显示html 页面。
我使用了 nohup,这样即使我断开连接或关闭系统,它也可以保持运行。
这是我使用的命令:
nohup http-server -p 8000 -a 10.4.145.182 &
现在,这允许我可视化 10.4.145.182:8000 上的文件,但我注意到一段时间后服务器出现故障,人们无法在浏览器中访问该 ip 上的 html 页面。
我认为 nohup 是用于在后台运行的东西,即使人们关闭了系统或从服务器注销。
所以我在这里询问了一下,有人建议使用 pm2。所以安装了它。
根据使用 pm2 的建议,我安装了最新版本的节点,然后使用 pm2 启动服务。
它说 http-server 的服务已启动,但是当我在浏览器上使用端口 8000 访问 ip 时,它没有打开。
这是我在包含 html 和 d3 文件的目录中运行的命令。
$ pm2 start $(which http-server) -p 8000
这是 pm2 的 shell 中的输出
如何让服务器永远运行而不停止?pm2 出了什么问题?
答案1
如果你不关心后果,你只想做这样的事情......
#!/bin/bash
while sleep 5; do
http-server -p 8000 -a 10.4.145.182
wait
done
然后给脚本命名,赋予它执行权限,这样当你不希望“服务器”不断重新启动时,你可以杀死脚本。理论上它只会在结束时重新启动服务器。
这只会回答您的问题,但使用评论中建议的 systemd 单元会好得多。
以下是 systemd 自动重启单元的一些示例: https://singlebrook.com/2017/10/23/auto-restart-crashed-service-systemd/