Ubuntu 16.04でDjangoおよびnginxと連動するようにuWSGIを配線する


14

私は従うことをしようとしていますこのチュートリアルを設定するuWSGIDjangonginxUbuntu16.04

このコマンドを実行しようとする最後のステップ(皮肉なことに...)まではすべて正常に動作します。

sudo service uwsgi start

次のエラーで失敗する場合:

uwsgi.serviceの開始に失敗しました:ユニットuwsgi.serviceが見つかりません。

他にも同様のエラーが発生するようです:

uwsgi.serviceの開始に失敗しました:ユニットuwsgi.serviceのロードに失敗しました:そのようなファイルまたはディレクトリはありません。

この問題はUbuntuのバージョンに関連しているようです。そのチュートリアルは、Ubuntuの14.04を目指しているが、それはそれは新しいバージョンでは動作しませんようですので、バージョン15でUbuntuが切り替わるupstartまでのinitデーモンsystemdのinitデーモン

systemdnginxとDjangoで動作するようにuWSGIを起動するにはどうすればよいですか?

回答:


27

最初に必要な変更は、にある/etc/uwsgi/sites/firstsite.iniファイル。必要な変更は、権限をから664に置き換えることだけ666です。スクリプトは次のようになります。

[uwsgi]
project = firstsite
base = /home/user

chdir = %(base)/%(project)
home = %(base)/Env/%(project)
module = %(project).wsgi:application

master = true
processes = 5

socket = %(base)/%(project)/%(project).sock
chmod-socket = 666
vacuum = true

第二にsystemdではなくを使用しているupstartため、次のファイルは不要であり、削除できます。/etc/init/uwsgi.conf

3番目に、次のsystemdスクリプトを作成します/etc/systemd/system/uwsgi.service

[Unit]
Description=uWSGI Emperor service
After=syslog.target

[Service]
ExecStart=/usr/local/bin/uwsgi --emperor /etc/uwsgi/sites
Restart=always
KillSignal=SIGQUIT
Type=notify
StandardError=syslog
NotifyAccess=all

[Install]
WantedBy=multi-user.target

ボード上のこの新しいuWSGIサービスでsystemd initシステムの状態を更新します

sudo systemctl daemon-reload

スクリプトを開始するには、次を実行する必要があります。

sudo systemctl start uwsgi

uWSGI再起動時に開始するには、次のものも必要です。

sudo systemctl enable uwsgi

以下を使用して、そのステータスを確認できます。

systemctl status uwsgi

詳細については、こちらをご覧ください


1
systemdでPython virtualenvを使用するにはどうしますか?実行するsystemctl status uwsgiとが得られImportError: No module named siteます。
tlng05

2
叙事詩.....私はこれに長い間苦労していました。+1
ラキブ

1
私はそれを数回、非常に有用な答えを使用
jozi

0

そのエラーを回避するにsudo systemctl daemon-reloadは、新しく作成したuwsgi.serviceファイルをロードします。

再起動ごとにサービスを開始するには:sudo systemctl enable uwsgi

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.