本文主要介绍
node
项目在没有docker
环境的linux
部署脚本。
脚本文件
#!/bin/sh
GREEN="\033[32m"
BLUE="\033[34m"
NC="\033[0m"
# 服务名称全局唯一并且要能通过ps -ef|grep xxx 查询到
PROJECT_NAME='nginx'
# 项目后台启动运行的脚本
PROJECT_START_CMD='systemctl start nginx'
PROCESS=$(ps -ef | grep $PROJECT_NAME | grep -v grep | grep -v PPID | awk '{ print $2}')
if [ -n "$PROCESS" ]; then
echo -e "${GREEN}杀死老进程${NC}"
for i in $PROCESS; do
echo "Kill the $PROJECT_NAME process [ $i ]"
kill -9 $i
done
fi
# 在后台运行该脚本
echo -e "${GREEN}执行应用启动命令 [$PROJECT_START_CMD]${NC}"
echo `eval $PROJECT_START_CMD`
# 如果是占用了端口的程序,则可以查询端口并进行输出
LISTEN_PORTS=$(netstat -tlnp|grep $PROJECT_NAME | awk '{print $4}')
if [ -n "$LISTEN_PORTS" ]; then
echo -e "${BLUE}服务启动成功 listening on${NC}"
for i in $LISTEN_PORTS; do
echo -e "${BLUE}$i${NC}"
done
fi
参数详解
PROJECT_NAME
项目名称
一般项目中都有一个
app.js
文件作为项目启动入口,我们则需要更改该文件的名称作为全局唯一,比如smartAcsApp.js
PROJECT_START_CMD
项目后台启动脚本
一般使用
nohup node app.js > /dev/null 2>&1 &
示例
我没有启动
node
项目,我使用了nginx
来替代了
sh start.sh