在Debian系统下,为Node.js应用编写一个启动脚本可以帮助你管理应用的启动、停止和重启。以下是一个基本的启动脚本示例,你可以根据自己的需求进行修改。
start-app.sh
的文件:#!/bin/bash
# 应用名称
APP_NAME="your-app-name"
# 应用目录
APP_DIR="/path/to/your/app"
# Node.js可执行文件路径
NODE_EXECUTABLE="/usr/bin/node"
# 应用入口文件
ENTRY_POINT="app.js"
# 日志文件路径
LOG_FILE="/var/log/${APP_NAME}.log"
# 启动应用
start() {
if [ ! -f "$APP_DIR/$ENTRY_POINT" ]; then
echo "${APP_NAME} 的入口文件不存在: ${APP_DIR}/${ENTRY_POINT}"
exit 1
fi
echo "正在启动 ${APP_NAME}..."
nohup ${NODE_EXECUTABLE} ${APP_DIR}/${ENTRY_POINT} >> ${LOG_FILE} 2>&1 &
echo "${APP_NAME} 启动成功,进程ID: $!"
}
# 停止应用
stop() {
PID=$(ps -ef | grep "${NODE_EXECUTABLE} ${APP_DIR}/${ENTRY_POINT}" | grep -v grep | awk '{print $2}')
if [ -z "$PID" ]; then
echo "${APP_NAME} 未运行"
else
echo "正在停止 ${APP_NAME}..."
kill $PID
echo "${APP_NAME} 已停止"
fi
}
# 重启应用
restart() {
stop
start
}
# 根据传入的参数执行相应操作
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
restart
;;
*)
echo "用法: $0 {start|stop|restart}"
exit 1
esac
exit 0
修改脚本中的APP_NAME
、APP_DIR
、NODE_EXECUTABLE
和ENTRY_POINT
变量,使其与你的Node.js应用相匹配。
为脚本添加可执行权限:
chmod +x start-app.sh
./start-app.sh start
./start-app.sh stop
./start-app.sh restart
/etc/init.d/
目录下,并使用update-rc.d
命令创建符号链接:sudo cp start-app.sh /etc/init.d/
sudo chmod +x /etc/init.d/start-app.sh
sudo update-rc.d start-app.sh defaults
现在,你的Node.js应用将在系统启动时自动运行。如果需要停止自动运行,可以使用以下命令删除符号链接:
sudo update-rc.d start-app.sh remove