抱歉,您的浏览器无法访问本站
本页面需要浏览器支持(启用)JavaScript
了解详情 >

快速配置 uWSGI + nginx 运行Django 项目

1.新建 Django 项目

1
2
django-admin startproject site_uwsgi
cd site_uwsgi

2.对网站进行 nginx 配置

目录中新建 site_uwsgi.conf 文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
server {
listen 8001;
server_name your_server_name.com;
client_max_body_size 50m;


location /static/ {
alias /data/www/vhosts/site_uwsgi/static/;
}

location / {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
uwsgi_pass web;
include /data/www/vhosts/site_uwsgi/uwsgi_params;
}
access_log /var/log/nginx/site_uwsgi.access_log;
error_log /var/log/nginx/site_uwsgi.error_log;
}

upstream web {
server unix:///data/www/vhosts/site_uwsgi/socket.sock;
}

连接进 /etc/nginx/sites-enabled/

1
sudo ln -s /data/www/vhosts/site_uwsgi/site_uwsgi.conf /etc/nginx/sites-enabled/

3.编辑 site_uwsgi/settings.py 文件及收集静态资源

1
2
ALLOWED_HOSTS = ['...'] # 有服务器的话需增加服务器ip
STATIC_ROOT = os.path.join(BASE_DIR, 'static/')

收集静态资源

1
python manage.py collectstatic

4.目录中新建 uwsgi_params 文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
uwsgi_param  QUERY_STRING       $query_string;
uwsgi_param REQUEST_METHOD $request_method;
uwsgi_param CONTENT_TYPE $content_type;
uwsgi_param CONTENT_LENGTH $content_length;

uwsgi_param REQUEST_URI $request_uri;
uwsgi_param PATH_INFO $document_uri;
uwsgi_param DOCUMENT_ROOT $document_root;
uwsgi_param SERVER_PROTOCOL $server_protocol;
uwsgi_param REQUEST_SCHEME $scheme;
uwsgi_param HTTPS $https if_not_empty;

uwsgi_param REMOTE_ADDR $remote_addr;
uwsgi_param REMOTE_PORT $remote_port;
uwsgi_param SERVER_PORT $server_port;
uwsgi_param SERVER_NAME $server_name;

5.修改 /etc/nginx/nginx.confuserroot 用户

重启 nginx

1
sudo /etc/init.d/nginx restart

6.配置 uWSGI 使用 .ini 文件去运行项目
site_uwsgi.ini

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# site_uwsgi.ini file
[uwsgi]
# Django-related settings
# the base directory (full path)
chdir = /data/www/vhosts/site_uwsgi/
# Django's wsgi file
module = site_uwsgi.wsgi
# the virtualenv (full path)
# process-related settings
# master
master = true
# maximum number of worker processes
processes = 30
# the socket (use the full path to be safe
socket = /data/www/vhosts/site_uwsgi/socket.sock
# ... with appropriate permissions - may be needed
chmod-socket = 664
# clear environment on exit
vacuum = true
# pidfile
pidfile = /data/www/vhosts/site_uwsgi/site_uwsgi.pid
# logger
# daemonize = /data/www/vhosts/site_uwsgi/access.log

7.后台挂载 uwsgi:

1
nohup uwsgi --ini mysite_uwsgi.ini &

输入 ip:8001, done

8.挂载之后,每次修改models.py,需要 reload uwsgi,和重启数据库

1
2
uwsgi --reload yxpp.pid
service mysql restart

评论