django应用启动脚本

2024-07-10 17:55:40阅读 3评论 0
#!/bin/bash

export LD_LIBRARY_PATH="/usr/local/lib"

# 程序包目录
APP_HOME=$(readlink -f "$(dirname "$0")")
# 程序包名
APP_NAME=face

# 设置Django项目目录和虚拟环境路径(如果有)
PROJECT_DIR=${APP_HOME}/${APP_NAME}


# 日志文件路径
LOG_FILE="$APP_HOME/django.log"

# 启动Django应用
start_django() {
    echo "Starting Django application..."
    cd "$PROJECT_DIR" || { echo "Error: Could not change to directory $PROJECT_DIR"; exit 1; }

    # 启动Django应用,并将输出重定向到日志文件
    nohup env PYTHONUNBUFFERED=1 python3 manage.py runserver 0.0.0.0:8000 > "$LOG_FILE" 2>&1 &
    PID=$!

    # 检查Django进程是否成功启动
    if ps -p $PID > /dev/null; then
        echo "Django application started with PID $PID."
    else
        echo "Failed to start Django application."
        exit 1
    fi
}

# 停止Django应用
stop_django() {
    echo "Stopping Django application..."
    pid=$(ps aux | grep 'python3 manage.py runserver 0.0.0.0:8000' | grep -v grep | awk '{print $2}')
    if [ -n "$pid" ]; then
        echo "当前pid:$pid"
        for id in $pid; do
            kill -9 "$id"
        done
        echo "Django application stopped."
    else
        echo "Django application is not running."
    fi
}

# 重启Django应用
restart_django() {
    stop_django
    start_django
}

# 检查Django应用状态
status_django() {
    pid=$(ps aux | grep 'python3 manage.py runserver 0.0.0.0:8000' | grep -v grep | awk '{print $2}')
    if [ -n "$pid" ]; then
        echo "Django application is running with PID $pid."
    else
        echo "Django application is not running."
    fi
}

# 检查参数,并执行相应的操作
if [ "$1" == "start" ]; then
    start_django
elif [ "$1" == "stop" ]; then
    stop_django
elif [ "$1" == "restart" ]; then
    restart_django
elif [ "$1" == "status" ]; then
    status_django
else
    echo "Usage: $0 {start|stop|restart|status}"
    exit 1
fi


exit 0

还没有评论,来说两句吧