内容目录
背景
几个服务器项目用node js,自己开发直接用node xx.js就可以了,但在linux 服务器部署的时候,就必须用nohup ,但如果多个项目就会导致分不了,除非xx.js每个项目不一样,这个时候查看 /proc/pid/cwd 看运行的目录才能知道具体的项目,这样子会导致重启项目很麻烦
解决方案
- forever 启动运行
- 采用pm 管理node项目
- 采用宝塔的node项目管理
宝塔的node项目管理
直接用宝塔web操起来非常方便,启动、停止、重启非常方便,同时可以设置各种web设置
研究一下宝塔的node项目启动脚本
PATH=/www/wwwroot/项目名字/node_modules/.bin:/www/server/nodejs/v14.17.6/bin:/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH
export NODE_PROJECT_NAME="项目名字"
cd /www/wwwroot/项目名字
nohup node index.js 2>&1 >> /www/wwwlogs/nodejs/项目名字.log &
echo $! > /www/server/nodejs/vhost/pids/项目名字.pid
- 设置path路径变量,方便找依赖库和指定对应node版本,这样子你多个版本也可以指定。
- 工程名字貌似也没有用
- 切换当前目录
- 后台运行命令
- 输出上一个执行进程的id,这个就是我运行的命令 - $! 可调用上一个进程的进程ID
上面大概就是脚本逻辑,然后结合python功能,执行脚本以www用户执行这个脚本(默认情况,这样子更加安全,以前我自己没有注意)
可以手动以www 执行
sudo -H -u www ./项目名字.sh
这个原理运行项目pid写在文件里面,然后停止读取整个pid,杀敌指定进程即可
所以按照这个逻辑可以写非常方便脚本运行