前端Node项目部署简单脚本

236 阅读1分钟

本文主要介绍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

image.png