在Ubuntu 11.10上通过NGINX使用Django + uWSGI

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

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

我已经创build了文件夹/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

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

这是nginx的example.com文件的简单例子(ubuntu 11.10的/ etc / nginx / sites-available / examplecom)

 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 

干杯!

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

 sudo apt install uwsgi-plugin-python 

与PIP的安装不同,您应该通过添加一个plugins = python行(如果使用Python)来明确地提到应用程序配置中使用的uwsgi插件,如下所示:

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

除非你这样做,否则将不会有可用的Python选项。 而Debian的/ ubuntu的uWSGI将会很安静!