这里举例家目录为/srv/test
/test 下面新建/bin启动脚本目录,按需要可新增prd/stg/tst目录正式/交互/测试
/bin目录下有run-parts.sh, run.sh, upgrade-deps.sh
run-parts.sh 项目启动脚本
#!/bin/bash
set -e
DEPLOY_ENV=$1
PROJECT_ROOT="$(realpath $(dirname $0)/../${DEPLOY_ENV})"
cd "${PROJECT_ROOT}" || exit
source "venv/bin/activate"
source "etc/custom.conf"
source "etc/system.conf"
cd repo || exit
exec ../bin/$2
run.sh 自定义脚本(例如数据库迭代更新)
#!/bin/bash
set -e
DEPLOY_ENV=$1
shift;
PROJECT_ROOT="$(realpath $(dirname $0)/../${DEPLOY_ENV})"
cd "${PROJECT_ROOT}" || exit
source "venv/bin/activate"
source "etc/custom.conf"
source "etc/system.conf"
cd repo || exit
exec $*
upgrade-deps.sh 数据库依赖更新
#!/bin/bash
set -e
BIN_DIR="$(dirname $0)"
"${BIN_DIR}/run.sh" $1 pip install -i https://pypi.douban.com/simple -Ur "requirements.txt"
prd/stg/tst三者大致相同,目录下拥有 bin etc repo var venv 四个文件夹
bin 存储项目需求启动命令:
bin目录下主要有三个文件beat, web, worker(因为项目用的celery做的异步及定时)
web是主项目启动文件
#!/bin/bash
exec gunicorn 'manage:create_app()' -b 127.0.0.1:$PORT -w 4 -t 50
beat是定时任务启动文件
#!/bin/bash
exec celery beat -A test.tasks.main --pidfile=../var/celerybeat.pid --schedule=../var/celerybeat-schedule
worker是异步任务启动文件
#!/bin/bash
exec celery -A test.tasks.main worker -l info
ect 存项目环境变量文件
一般存在custom.conf(项目配置文件),system.conf(服务器配置文件)
如果项目中需要存储自定义证书等数据也可在该目录下生成文件
repo 存项目代码
存储项目主体代码,git clone的时候可将项目名重命名为repo
var 存使用工具的日志文件
比如列子中的celerybeat.pid与celerybeat-schedule文件
venv 项目虚拟环境
每一个项目配置对应虚拟环境,不要多个共用,启动项目脚本中读取source "venv/bin/activate"