web-dev-qa-db-ja.com

Django + Ubuntu11.10のNGINX経由のuWSGI

Djangoプロジェクトをデプロイしようとしています。多くのチュートリアルを試しましたが、うまくいきませんでした。新しいクリーンなUbuntu11.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 app for domain.comを適切にデプロイする方法を教えてください。

Django pipとeasy_install経由でインストールしました

/etc/nginx/sites-enabled/defaultに何を追加すればよいですか。

23
f1nn

すべての要件をインストールし、aptitudeパッケージを使用していると仮定すると、wsgi.pyは必要ありません。すべての構成はuwsgiini/xml/yamlファイルにあります。 (お好みの形式を取ります)。

これはnginxのexample.comファイルの最小限の例です(ubuntu11.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

乾杯!

36
ScotchAndSoda

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はそれについて静かになります!

9