django_uwsgi_nginx
Table of Contents
1 Django部署
django+uwsgi+nginx部署环境总结。http请求先到nginx,如果是静态页面,nginx直接获取静态页面返回结果;对于动态页面,则交给uwsgi进行处理,uwsgi再把消息转发给django。
1.1 uwsgi的部署
uwsgi的部署主要有这样几个参数:
参数名 | 取值 | 解释 |
socket | ip:port | 以socket形式侦听接收消息 |
http | ip:port | 与socket选其一,http没有报大小限制,浏览器可直接访问 |
chdir | dir | 切换当前目录,加载module使用 |
master | bool | 管理进程,其它进程重启等 |
enable-threads | num | 线程个数 |
workers | num | 进程个数 |
virtualenv | dir | 虚拟python工作目录 |
stats | ip:port | 状态,可以用telnet登录查看 |
env | key=val | 设置环境 |
module | string | 加载模块应用app |
配置示例:
[uwsgi] socket = 127.0.0.1:8077 chdir = /home/web/Env/blogenv/mezproj/project pythonpath=.. env = DJANGO_SETTINGS_MODULE=settings module = django.core.handlers.wsgi:WSGIHandler() master = true enable-threads = true workers = 4 virtualenv = /home/web/Env/blogenv/mezproj/ stats = 127.0.0.1:9191
1.2 nginx的部署
nginx基本命令
cmd | desc |
nginx -s stop | stop fast |
nginx -s quit | stop gracefully |
nginx -s reload | reloading config file |
nginx -s reopen | reopening the log file |
nginx配置分为几个块,最常用的是http,server, location等一个http配置中可以拥有多个server, 一个server可以配置多个location一个请求到达nginx后,按照一定的匹配规则,找到最终的location。简单配置:
user www-data; worker_processes 4; pid /run/nginx.pid; events { worker_connections 768; # multi_accept on; } http { ## # Basic Settings ## sendfile on; tcp_nopush on; tcp_nodelay on; keepalive_timeout 65; types_hash_max_size 2048; # server_tokens off; # server_names_hash_bucket_size 64; # server_name_in_redirect off; include /etc/nginx/mime.types; default_type application/octet-stream; ## # Logging Settings ## access_log /var/log/nginx/access.log; error_log /var/log/nginx/error.log; ## # Gzip Settings ## gzip on; gzip_disable "msie6"; server { listen 80; server_name www.domain.com; access_log /home/web/mezproj_env/mezproj/project/static/logs/nginx_access.log; error_log /home/web/mezproj_env/mezproj/project/static/logs/nginx_error.log; #charset koi8-r; #access_log logs/host.access.log main; location / { include uwsgi_params; uwsgi_pass 127.0.0.1:8077; } #error_page 404 /404.html; # redirect server error pages to the static page /50x.html # # error_page 500 502 503 504 /50x.html; # loation = /50x.html { # root html; # } location /static/ { alias /home/web/mezproj_env/mezproj/project/static/; index index.html index.htm; } location /media/ { alias /home/web/mezproj_env/mezproj/project/static/media/; } } }