如果前面的步骤都没问题了,这一步只要把配置文件写正确,就没什么问题了。记得在虚拟环境中安装所有的 project 需要依赖包。
下面是一个简单示例:
uwgsi 配置
uwsgi 支持多种形式的配置,可以执行 uwsgin 直接带参数,可以用 xml 文件配置等等,这里用 ini 文件配置。
新建一个 ini 文件,比如命名为:'dj_uwsgi.ini'
[uwsgi]
socket = :9090
chdir = /home/sharpcj/PythonProjects/testsite # 切换到 project 目录
env = DJANGO_SETTINGS_MODULE=testsite.settings
module = testsite.wsgi
master = true
wsgi-file = testsite/wsgi.py
home = /home/sharpcj/.virtualenvs/testsite_evn # python 及相关依赖包所在 path
touch-file = testsite/wsgi.py
processes = 4
threads = 2
chmod-socket = 664
vacuum = true
注意:为了配合 nginx 工作,端口协议是 socket , 如果换成 http ,则可以直接运行uwsgi,就能通过浏览器访问页面了。命令为 uwsgi dj_uwsgi.ini。
nginx 配置
在 /etc/nginx/conf.d/ 下创建 testsite.conf 文件:
server {
listen 9999;
server_name 127.0.0.1
charset UTF-8;
access_log /var/log/nginx/myweb_access.log;
error_log /var/log/nginx/myweb_error.log;
client_max_body_size 75M;
location /media {
alias /home/sharpcj/PythonProjects/testsite/media;
}
location /static {
alias /home/sharpcj/PythonProjects/testsite/static;
}
location / {
uwsgi_pass 127.0.0.1:9090;
include /etc/nginx/uwsgi_params;
}
}
listen 指定的是nginx代理uwsgi对外的端口号。
server_name 网上大多资料都是设置的一个网址(例,),我这里如果设置成网址无法访问,所以,指定的到了本机默认ip。在进行配置的时候,我有个问题一直想不通。nginx到底是如何uwsgi产生关联。现在看来大概最主要的就是这两行配置。
include uwsgi_params;
uwsgi_pass 127.0.0.1:8000;
include 必须指定为 uwsgi_params ;而 uwsgi_pass 指的本机IP的端口号与 dj_uwsgi.ini 配置中的文件中的必须一致。
此时启动 nginx 服务,并启动 uwsgi 服务,即可通过 ip:9999 访问网站。
通过这个IP和端口号的指向,请求应该是先到nginx的。如果你在页面上执行一些请求,就会看到,这些请求最终会转到uwsgi来处理。
ps: 这个过程本应不算复杂,前天花了一下午时间没搞定,昨天又花了一下午时间才搞定。网上搜到的文章比较乱,有些太简单的看不懂,有些又太啰嗦的不知道核心的几步是什么,有些又因为版本不对,或者环境不同,不能成功,希望本文能帮到后面的人。