nginx + uwsgi 部署Django项目

时间:2021-07-13 21:05:03

nginx + uwsgi 部署Django项目

前提条件:

  • 有一个能正常运行的django项目
  • 已安装nginx
  • 已安装uwsgi

我的django项目名称为:hello,所在目录是:/media/p1/proj/py/hello/

通过uwsgi启动django项目

切换工作目录到hello项目所在目录

# cd /media/p1/proj/py/hello/

启动uwsgi

# uwsgi --http 127.0.0.1:8080 --file hello/wsgi.py --static-map=/static=static

# uwsgi --http :8080 --file hello/wsgi.py --static-map=/static=static

此时可以通过访问 http://127.0.0.1:8080/ 看看是否成功。

配置uwsgi

这一步可以避免每一次启动uwsgi都要指定那么多选项。
我的配置文件创建于:/etc/uwsgi/uwsgi.ini

# uwsig使用配置文件启动
[uwsgi]
# 项目目录
chdir=/media/p1/proj/py/hello/
# 指定项目的application
module=hello.wsgi:application
# 指定sock的文件路径
socket=/media/p1/proj/py/script/uwsgi.sock
# 进程个数
workers=1
pidfile=/media/p1/proj/py/script/uwsgi.pid
# 指定IP端口
http=127.0.0.1:9090
# 指定静态文件
static-map=/static=/media/p1/proj/py/hello/static
# 启动uwsgi的用户名和用户组
uid=root
gid=root
# 启用主进程
#master=true
# 自动移除unix Socket和pid文件当服务停止的时候
vacuum=true
# 序列化接受的内容,如果可能的话
# thunder-lock=true
# 启用线程
# enable-threads=true
# 设置自中断时间
#harakiri=30
# 设置缓冲
#post-buffering=4096
# 设置日志目录
daemonize=/var/log/uwsgi/uwsgi.log

nginx配置

server {
listen 80;
server_name a.test.haoxueba.net;

location / {
include uwsgi_params;
#uwsgi_pass 127.0.0.1:9090;
uwsgi_pass unix:/media/p1/proj/py/script/uwsgi.sock;
#uwsgi_param UWSGI_PYHOME test.py;
uwsgi_param UWSGI_SCRIPT hello.wsgi;
#uwsgi_param UWSGI_CHDIR;
}

error_page 404 /404.html;

error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}

试一试

启动uwsgi

uwsgi --ini /etc/uwsgi/uwsgi.ini

和刚开始启动的方式不同,我们现在指定了配置文件,就不需要再每次设置那么多选项了。

更新nginx配置:nginx -s reload或启动nginx:nginx

在浏览器地址栏输入:http://a.test.haoxueba.net 看看我们期待的结果会不会出现?

注意:我当初做到这一步,并没有成功,检查发现uwsgi.sock文件没有创建,原来是权限问题,我将其目录开放了写权限,就OK了。
设置目录可写:chmod +w /media/p1/proj/py/script