部署工具

uwsgi+django+nginx+supervisor

Uwsgi

参考链接

大江狗的blog

实例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
[uwsgi]
# 项目目录
chdir=/home/wind_speed/speed
# wsgi文件地址
module=speed.wsgi
# 项目虚拟环境
home=/home/speed/speed_venv
# 主进程
master=true
# 同时进行的进程数
processes=1

# 使用TCP socket与nginx通信
# 下面等同于socket=0.0.0.0:4002
socket=:4002
# socket权限设置
chmod-socket=664
chown-socket=www-data

# 状态文件
stats=%(chdir)/uwsgi/uwsgi.status
# 进程文件
pidfile=%(chdir)/uwsgi/uwsgi.pid
# 静态文件地址
static-map = /static=%(chdir)/static

# 服务停止时,自动移除unix socket和pid文件
vacuum=true

Nginx

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
server{
# 向外的端口
listen 4011;
# 虚拟服务器的识别路径
server_name 120.78.194.246;
client_max_body_size 75M;

# 映射/static路径
location /static {
alias /home/wind_speed/speed/static;
}

location / {
# 本地uwsgi的启动端口
uwsgi_pass 127.0.0.1:4002;
# 将所有的参数转到uwsgi下
include /etc/nginx/uwsgi_params;
}
}

alias解释 散尽浮华的blog
server_name解释csnd ## Nginx 根目录重定向

1
2
3
if ($request_uri ~* "^/$") {
rewrite / https://www.reach-power.tech permanent;
}
# Supervisor ## 参考链接 简书M_GBO

实例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
[program:wind_speed]
# 启动program的命令
command=/home/wind_speed/speed/uwsgi --ini uwsgi.ini
# supervisord作为守护进程的时候,会转换路径到这个dictionary
directory=/home/wind_speed/speed
# supervisord启动进程时使用的用户
user=root
# 是否在supervisord启动的时候自动启动进程
autostart=true
# 当进程在running状态下exit时,是否自动重启
autorestart=true
startsecs=1

stderr_logfile=/var/log/supervisor/wind_speed/error.log
stdout_logfile=/var/log/supervisor/wind_speed/speed.log

常用命令

参考链接

supervisor用法-亚楠老猎人

实例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# nginx 重启
service nginx restart
service nginx reload

# uwsgi启动
uwsgi --ini uwsgi.ini
# uwsgi重启
uwsgi --reload uwsgi.pid
# uwsgi关闭
uwsgi --stop uwsgi.pid

# 关闭所有任务
supervisorctl shutdown
# 启动某个进程
supervisorctl start programxxx
# 重启某个进程
supervisorctl restart programxxx
# 停止全部进程 注:start、restart、stop都不会载入最新的配置文件
supervisorctl stop all
# 载入最新的配置文件,停止原有进程并按新的配置启动、管理所有进程。
supervisorctl reload
# 根据最新的配置文件,启动新配置或有改动的进程,配置没有改动的进程不会受影响而重启。
supervisorctl update