#!/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 \            # 绑定监听地址和端口（0.0.0.0表示允许所有网络访问）
--log-level=debug \              # 设置日志级别为debug
--log-file=- \                   # 日志输出到标准输出（-表示stdout）
--worker-class gevent \          # 使用gevent工作类（支持异步IO，提高并发性能）
--threads 4                      # 每个工作进程的线程数量