Python实战 - Django 部署
使用 runserver 启动
$ python3 manage.py runserver 0.0.0.0:8080 &
使用 fastcgi 命令启动 + shell 脚本 + nginx
#!/bin/bash
PROJDIR="/data/github/awesome-platform/app"
PIDFILE="$PROJDIR/app.awesome-platform.pid"
ERRORLOG="/data/logs/cms_app_error.log"
OUTLOG="/data/logs/cms_app_std_out.log"
APP_EXEC="python manage.py runfcgi method=prefork daemonize=true host=127.0.0.1"
NUM_PROC=12000
NUM_PROCS=4
MIN_SPARE=2
MAX_SPARE=4
cd $PROJDIR
function start_server() {
cd $PROJDIR
ulimit -n 65535
$APP_EXEC port=$NUM_PROC minspare=$MIN_SPARE maxspare=$MAX_SPARE maxchildren=$NUM_PROCS outlog=$OUTLOG errlog=$ERRORLOG
}
function stop_server() {
ps aux | grep "$APP_EXEC" | grep "$NUM_PROC" | awk {print $2} | xargs kill -9
}
case "$1" in
start)
start_server
;;
stop)
stop_server
;;
restart)
stop_server
start_server
;;
*)
echo Usage: app.sh [start|stop|restart]
esac
-
nginx.conf
upstream cms_app {
server 127.0.0.1:12000 fail_timeout=0;
}
server {
listen 8000;
server_name 118.25.81.114;
charset utf-8;
location /static/ {
alias /data/github/awesome-platform/app/statics/;
expires 15m;
}
location / {
fastcgi_pass cms_app;
fastcgi_param PATH_INFO $fastcgi_script_name;
fastcgi_param REQUEST_METHOD $request_method;
fastcgi_param QUERY_STRING $query_string;
fastcgi_param SERVER_NAME $server_name;
fastcgi_param SERVER_PORT $server_port;
fastcgi_param SERVER_PROTOCOL $server_protocol;
fastcgi_param CONTENT_TYPE $content_type;
fastcgi_param CONTENT_LENGTH $content_length;
fastcgi_pass_header Authorization;
fastcgi_intercept_errors off;
}
}
使用 uwsgi 命令启动
$ uwsgi --http :8001 --chdir /data/github/django-cms --module cms.wsgi
uwsgi 命令 + supervisord.conf
[program:cms1] command=uwsgi --http :8001 --chdir /data/github/django-cms --module cms.wsgi directory=/data/github/django-cms startsecs=0 stopwaitsecs=0 autostart=true autorestart=true
uwsgi.ini + supervisord.conf + nginx.conf
推荐
-
uwsgi.ini
[uwsgi] socket = /home/ubuntu/cms.sock chdir = /data/github/django-cms wsgi-file = cms/wsgi.py touch-reload = /home/ubuntu/reload processes = 2 threads = 4 chmod-socket = 664 #chown-socket = ubuntu:www-data vacuum = true
配置好了,可以测试
$ uwsgi uwsgi.ini --http :8002
-
supervisord.conf
[program:cms_app] command=uwsgi --ini /home/ubuntu/uwsgi.ini directory=/data/github/django-cms startsecs=0
-
nginx.conf
server {
listen 8080;
server_name 118.25.81.114;
charset utf-8;
client_max_body_size 75M;
location /media {
alias /data/github/django-cms/media;
}
### method1 for static conf
location /static {
alias /data/github/django-cms/static;
}
### method2 for static conf
#location ~/static/ {
# root /data/github/django-cms;
# break;
#}
location / {
uwsgi_pass unix:///home/ubuntu/cms.sock;
include /data/nginx/conf/uwsgi_params;
}
}
参考资料
上一篇:
IDEA上Java项目控制台中文乱码
