2025-12-30 01:17:08 +08:00
|
|
|
|
#!/bin/bash
|
|
|
|
|
|
|
|
|
|
|
|
# ZJPB 应用管理脚本
|
|
|
|
|
|
# 用法: ./manage.sh [start|stop|restart|status|logs]
|
|
|
|
|
|
|
|
|
|
|
|
APP_NAME="zjpb"
|
2025-12-30 23:44:27 +08:00
|
|
|
|
APP_DIR="/opt/1panel/apps/zjpb"
|
2025-12-30 01:17:08 +08:00
|
|
|
|
VENV_DIR="$APP_DIR/venv"
|
|
|
|
|
|
PID_FILE="$APP_DIR/logs/gunicorn.pid"
|
|
|
|
|
|
|
|
|
|
|
|
cd $APP_DIR
|
|
|
|
|
|
|
|
|
|
|
|
case "$1" in
|
|
|
|
|
|
start)
|
|
|
|
|
|
echo "启动 $APP_NAME..."
|
|
|
|
|
|
source $VENV_DIR/bin/activate
|
2025-12-30 23:44:27 +08:00
|
|
|
|
gunicorn -c gunicorn_config.py wsgi:app
|
2025-12-30 01:17:08 +08:00
|
|
|
|
echo "$APP_NAME 已启动"
|
|
|
|
|
|
;;
|
|
|
|
|
|
|
|
|
|
|
|
stop)
|
|
|
|
|
|
echo "停止 $APP_NAME..."
|
|
|
|
|
|
if [ -f $PID_FILE ]; then
|
|
|
|
|
|
kill $(cat $PID_FILE)
|
|
|
|
|
|
echo "$APP_NAME 已停止"
|
|
|
|
|
|
else
|
|
|
|
|
|
echo "PID文件不存在,可能未运行"
|
|
|
|
|
|
fi
|
|
|
|
|
|
;;
|
|
|
|
|
|
|
|
|
|
|
|
restart)
|
|
|
|
|
|
$0 stop
|
|
|
|
|
|
sleep 2
|
|
|
|
|
|
$0 start
|
|
|
|
|
|
;;
|
|
|
|
|
|
|
|
|
|
|
|
status)
|
|
|
|
|
|
if [ -f $PID_FILE ]; then
|
|
|
|
|
|
PID=$(cat $PID_FILE)
|
|
|
|
|
|
if ps -p $PID > /dev/null; then
|
|
|
|
|
|
echo "$APP_NAME 正在运行 (PID: $PID)"
|
|
|
|
|
|
else
|
|
|
|
|
|
echo "$APP_NAME 未运行(但PID文件存在)"
|
|
|
|
|
|
fi
|
|
|
|
|
|
else
|
|
|
|
|
|
echo "$APP_NAME 未运行"
|
|
|
|
|
|
fi
|
|
|
|
|
|
;;
|
|
|
|
|
|
|
|
|
|
|
|
logs)
|
|
|
|
|
|
echo "实时查看日志(Ctrl+C退出):"
|
|
|
|
|
|
tail -f logs/error.log
|
|
|
|
|
|
;;
|
|
|
|
|
|
|
|
|
|
|
|
*)
|
|
|
|
|
|
echo "用法: $0 {start|stop|restart|status|logs}"
|
|
|
|
|
|
exit 1
|
|
|
|
|
|
;;
|
|
|
|
|
|
esac
|
|
|
|
|
|
|
|
|
|
|
|
exit 0
|