nginx + uwsgi 部署Django项目

nginx + uwsgi 部署Django项目

前提条件:html

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

个人django项目名称为:hello,所在目录是:/media/p1/proj/py/hello/nginx

经过uwsgi启动django项目

切换工做目录到hello项目所在目录shell

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

启动uwsgidjango

# 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/ 看看是否成功。app

配置uwsgi

这一步能够避免每一次启动uwsgi都要指定那么多选项。
个人配置文件建立于:/etc/uwsgi/uwsgi.inisocket

# 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 {
        }
}

试一试

启动uwsgipost

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

和刚开始启动的方式不一样,咱们如今指定了配置文件,就不须要再每次设置那么多选项了。.net

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

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

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

相关文章
相关标签/搜索