nginx+uwsgi部署django应用




几个月之前写了一个django应用,现在记录一下部署过程,不然之后需要的时候就该忘了。

准备工作

项目完成之后首先运行开发服务器测试,确保无误。

python manage.py runserver

安装一些东西

sudo apt-get install python-dev

安装supervisor,用来管理uwsgi

sudo pip install supervisor

安装uwsgi

sudo pip install uwsgi

用uwsgi手动运行项目进行测试

uwsgi --http :8001 --chdir /path/to/project --home=/path/to/env --module project.wsgi

按理说我们应该使用supervisor来管理uwsgi,然而我这里遇到了一些麻烦。在我的ubuntu测试环境上,只要一启动supervisord,内存就会蹭蹭蹭往上涨,直到全部内存都吃掉之后卡死。

Image 055

反正我也没有那么多的项目要管理,所以直接放弃这货。

配置uwsgi

向uwsgi.ini中写入:

[uwsgi]
chdir=/path/to/project/
module=myproject.wsgi:application
socket=/tmp/project.sock
master=True
pidfile=/tmp/myproject-master.pid
vacuum=True
max-requests=5000
daemonize=/path/to/project/myproject.log

socket=/tmp/project.sock这行需要记住,我们一会需要把它和nginx关联

完成之后我们先要让uwsgi跑起来,另外你也可以把这条命令写入rc.local来实现自启动。

uwsgi --ini /path/to/conf/uwsgi.ini

配置nginx

upstream kotori_uwsgi
{
    server unix:///tmp/project.sock;
}
server
{
    listen 80;
    server_name example.com;
    charset utf-8;
    client_max_body_size 75M;
    location /media
    {
        alias /path/to/project/media;
    }
    location /static
    {
        alias /path/to/project/static;
    }
    location /
    {
        uwsgi_pass kotori_uwsgi;
        include /etc/nginx/uwsgi_params;
    }
}

测试并重启nginx。

关闭调试

测试无误后,需要将应用的调试模式关掉以确保安全。

进入settings.py

DEBUG = True

改为

DEBUG = False

一旦调试模式关闭,就必须设置下面的ALLOWED_HOSTS,否则访问时会报HTTP 400错误。

ALLOWED_HOSTS = ['*']

Done.


5 responses to “nginx+uwsgi部署django应用”

Leave a Reply

Your email address will not be published.