从上图可以看出,浏览器发出一个HTTP请求到nginx之后,由nginx通过uwsgi协议(这里存疑,也有人说是通过socket套接字进行通信)转发给uWSGI,uWSGI转发给后台的django服务,由此实现通过nginx代理uWSGI服务。
uwsgi --http 0.0.0.0:8002 --chdir /home/djangoProject/ --wsgi-file djangoProject/wsgi.py --static-map=/static=static --master --processes 4 --threads 2
[uwsgi]
#项目目录
chdir=/home/djangoProject
#指定项目application 项目下同名目录下的wsgi.py文件
module=djangoProject.wsgi
#指定sock的文件路径(nginx转发http的目的端口)
socket=0.0.0.0:8000
# 指定IP端口,web访问入口
http=0.0.0.0:8010
# 进程个数
processess = 2
# 线程数
theads = 2
#指定启动时的pid文件路径
pidfile=/home/djangoProject/script/uwsgi.pid
#指定ip及端口(配置nginx就不需要单独启动uwsgi需要填写)
#http=0.0.0.0:8000
#启动uwsgi的用户名和用户组
#uid=root
#gid=root
#启用主进程
master=true
# 启用线程
enable-threads=true
#自动移除unix Socket和pid文件当服务停止的时候
vacuum=true
#设置日志目录
daemonize=/home/djangoProject/script/uwsgi.log
# 日志文件的权限权限不能太低,那样的话就无法写入了。
logfile-chmod = 666
#不记录信息日志,只记录错误以及uwsgi内部消息
disable-logging=true
#buffer-size=65536
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
upstream django {
server 你的ip:8000; # 该端口号一定要和之前uwsgi的那个文件里的socket对应的端口一致。
}
server {
listen 80;
server_name 你的ip:80; # 这儿如果你有域名的话,就将127.0.0.1:80换成你的域名,没有的话就用这个。
charset utf-8;
location /static {
alias /home/djangoProject/static; # 静态文件的路径(注意,这儿的allstatic是执行了python manage.py collectstatic之后,自动产生的一个目录,该目录下收集了你>项目中所有的静态文件。其实就是将你的静态文件复制了一遍过来)
}
location / {
# nginx转发动态请求到uWSGI
include /etc/nginx/uwsgi_params;
uwsgi_connect_timeout 20;
uwsgi_pass 你的ip:8000;
}
}
}
./nginx # 启动
./nginx -s reload # 重载
./nginx -s stop # 停止