場景:如果通過 ssh 遠程連接到 linux 服務器時, 通過 NodeJS http-server 啟動一個服務后,如果這時候斷開遠程時,當前終端會關閉,這時候剛才起的服務也就沒了。
linux
服務器 centos
解決方法
1.通過 screen 工具多開終端
通過多開終端的方式可以解決問題,即不在遠程連接的終端中啟動服務, 而是再開一個終端進行啟動服務。然后再切回遠程的終端里。斷開遠程終端就好了,具體方法如下。
首先執行 yum install screen
安裝 screen
命令
在項目文件夾下輸入 screen -S httpserver
輸入完這個命令之后,就已經進入 screen
的一個終端去了, 在這個終端里面輸入http-server ./ -p 端口
命令
最后按住 ctrl+a+d
離開當前終端, 就是后台運行了
2.通過 pm2 運行 http-server
一般情況下我們 http-server ./ -p 端口
直接運行啟動的。如果使用 pm2 的話,需要找到 http-server 這命令的真實地址。非全局安裝一般情況下在 node-modules/bin
目錄下,如果
是全局安裝,就是全局下找找看(npm --help
會輸出 npm 所在路徑。在這個路徑附近找找即可找到)。(我這里是 通過 nvs node 包版本管理器,安裝的 node 並全局安裝的 pm2, 我的 http-server 命令所在路徑為: /root/.nvs/node/17.8.0/x64/bin/http-server
)。
具體步驟如下:
#全局安裝 pm2
npm install pm2 -g
# 通過 pm2 運行 http-server 啟動服務,並給服務起個名字叫 n-h-s
pm2 start '/root/.nvs/node/17.8.0/x64/bin/http-server ./ -p 80' --name n-h-s
# 可以查看日志,也會輸出日志存放位置
pm2 log