Django + uWSGI通过Ubuntu 11.10上的NGINX

时间:2012-05-04 17:57:41

标签: django nginx ubuntu-11.10 uwsgi

我正在尝试部署django项目。我尝试了很多教程,但没有运气。我使用一个新的干净的Ubuntu 11.10。我已经完成了

apt-get install nginx
apt-get install uwsgi
service nginx start

我已创建文件夹/deploy/project1并将manage.py和其他文件放在那里。

我当前的/deploy/project1/project1/wsgi.py包含:

import os

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "project1.settings")

from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()

那么,你能告诉我如何正确部署我的django应用程序domain.com吗?

我还通过pip和easy_install

安装了Django

我应该在/etc/nginx/sites-enabled/default中添加什么。

2 个答案:

答案 0 :(得分:36)

假设您已经安装了所有需求并且您正在使用aptitude包,那么您不需要wsgi.py.所有配置都在uwsgi ini / xml / yaml文件中。 (采用您喜欢的格式)。

以下是nginx的example.com文件的最小示例(/ etc / nginx / sites-available / examplecom for ubuntu 11.10)

server {
    listen      80;
    server_name example.com;
    access_log  /var/log/nginx/projectname.log;
    location /media {
        alias /vagrant/test/projectname/media/;
    }
    location /static {
        alias /vagrant/test/projectname/static/;
    }
    location / {
        uwsgi_pass unix:///run/uwsgi/projectname/socket;
        include uwsgi_params;
    }
}

创建指向/ etc / nginx / sites-enabled的符号链接

sudo ln -s /etc/nginx/sites-available/examplecom /etc/nginx/sites-enabled/examplecom

sudo /usr/sbin/nxensite examplecom

你完成了NGINX。

转到/etc/uwsgi/apps-available并创建您的ini文件

sudo vim /etc/uwsgi/apps-available/projectname.ini

[uwsgi]
virtualenv=/home/vagrant/.virtualenvs/projectenv
thread=3
master=1
env = DJANGO_SETTINGS_MODULE=projectname.settings
module = django.core.handlers.wsgi:WSGIHandler()
chdir = /path/to/my/django/project
socket = /run/uwsgi/projectname/socket
logto = /var/log/uwsgi/projectname.log

将你的ini指向/etc/uwsgi/apps-enabled/projectname.ini

sudo ln -s /etc/uwsgi/apps-available/projectname.ini /etc/uwsgi/apps-enabled/projectname.ini

有关详细信息,请参阅系统上的以下任何文件:

/etc/uwsgi/apps-available/README
/etc/uwsgi/apps-enabled/README
/usr/share/doc/uwsgi/README.Debian.gz
/etc/default/uwsgi

你完成了。你现在可以重启nginx& uwsgi

sudo service nginx restart
sudo service uwsgi restart

干杯!

答案 1 :(得分:9)

不要忘记Debian的,Ubuntu及其派生'uwsgi包不需要安装其Python插件 - uwsgi-plugin-python,因为uWSGI不一定只使用Python(Lua有插件, Erlang和其他语言)。但是,Django需要Python插件。安装它:

sudo apt install uwsgi-plugin-python

与PIP的安装不同,您应该在应用程序配置中明确提及uwsgi的插件,方法是向其添加plugins = python行(如果使用Python),如下所示:

[uwsgi]
plugins = python
uwsgi-socket = /var/sockets/django.sock
chmod-socket = 660
chdir = /home/v/django
module = project.wsgi

除非您这样做,否则将不会提供特定于Python的选项。而Debian的/ Ubuntu的uWSGI对此会很安静!