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
に何を追加すればよいですか。
すべての要件をインストールし、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
乾杯!
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はそれについて静かになります!