23

我正在尝试部署一个 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()

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

我还通过 pip 和 easy_install 安装了 Django

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

4

2 回答 2

36

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

这是example.comnginx 文件的最小示例(/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

干杯!

于 2012-05-09T23:59:00.283 回答
9

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

sudo apt install uwsgi-plugin-python

plugins = python与 PIP 的安装不同,您应该通过添加一行(如果您使用 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 将对此保持沉默!

于 2013-03-27T11:24:55.673 回答