|
|
|
|
@ -1,31 +1,50 @@
|
|
|
|
|
#!/usr/bin/env bash
|
|
|
|
|
# 指定脚本解释器为bash
|
|
|
|
|
|
|
|
|
|
# 定义应用名称为djangoblog
|
|
|
|
|
NAME="djangoblog"
|
|
|
|
|
# 定义Django项目根目录路径
|
|
|
|
|
DJANGODIR=/code/djangoblog
|
|
|
|
|
# 定义运行应用的用户
|
|
|
|
|
USER=root
|
|
|
|
|
# 定义运行应用的用户组
|
|
|
|
|
GROUP=root
|
|
|
|
|
# 定义Gunicorn工作进程数量
|
|
|
|
|
NUM_WORKERS=1
|
|
|
|
|
# 定义Django的WSGI模块路径
|
|
|
|
|
DJANGO_WSGI_MODULE=djangoblog.wsgi
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# 输出启动信息,显示当前启动的应用名称和执行用户
|
|
|
|
|
echo "Starting $NAME as `whoami`"
|
|
|
|
|
|
|
|
|
|
# 进入Django项目根目录
|
|
|
|
|
cd $DJANGODIR
|
|
|
|
|
|
|
|
|
|
# 将项目目录添加到Python路径中,确保Python能正确导入项目模块
|
|
|
|
|
export PYTHONPATH=$DJANGODIR:$PYTHONPATH
|
|
|
|
|
|
|
|
|
|
# 执行Django项目初始化命令序列,若任何一步失败则退出脚本
|
|
|
|
|
# 1. 生成数据库迁移文件
|
|
|
|
|
python manage.py makemigrations && \
|
|
|
|
|
# 2. 应用数据库迁移
|
|
|
|
|
python manage.py migrate && \
|
|
|
|
|
# 3. 收集静态文件(无交互模式)
|
|
|
|
|
python manage.py collectstatic --noinput && \
|
|
|
|
|
# 4. 强制压缩静态文件(通常用于CSS/JS压缩)
|
|
|
|
|
python manage.py compress --force && \
|
|
|
|
|
# 5. 构建搜索索引(如果项目使用了全文搜索功能)
|
|
|
|
|
python manage.py build_index && \
|
|
|
|
|
# 6. 编译翻译文件(用于国际化支持)
|
|
|
|
|
python manage.py compilemessages || exit 1
|
|
|
|
|
|
|
|
|
|
# 启动Gunicorn作为WSGI服务器,替换当前进程(exec命令特性)
|
|
|
|
|
exec gunicorn ${DJANGO_WSGI_MODULE}:application \
|
|
|
|
|
--name $NAME \
|
|
|
|
|
--workers $NUM_WORKERS \
|
|
|
|
|
--user=$USER --group=$GROUP \
|
|
|
|
|
--bind 0.0.0.0:8000 \
|
|
|
|
|
--log-level=debug \
|
|
|
|
|
--log-file=- \
|
|
|
|
|
--worker-class gevent \
|
|
|
|
|
--threads 4
|
|
|
|
|
--name $NAME \ # 指定应用名称
|
|
|
|
|
--workers $NUM_WORKERS \ # 指定工作进程数量
|
|
|
|
|
--user=$USER --group=$GROUP \ # 指定运行的用户和用户组
|
|
|
|
|
--bind 0.0.0.0:8000 \ # 绑定监听地址和端口(0.0.0.0表示允许所有网络访问)
|
|
|
|
|
--log-level=debug \ # 设置日志级别为debug
|
|
|
|
|
--log-file=- \ # 日志输出到标准输出(-表示stdout)
|
|
|
|
|
--worker-class gevent \ # 使用gevent工作类(支持异步IO,提高并发性能)
|
|
|
|
|
--threads 4 # 每个工作进程的线程数量
|