web-dev-qa-db-ja.com

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

このチュートリアル に従って uWSGIDjango および nginx on Ubuntu16.04

最後のステップ(皮肉なことに...)まで問題なく動作し、このコマンドを実行しようとします。

Sudo service uwsgi start

次のエラーで失敗した場合:

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

他の人も同様のエラーを受け取るようです:

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

問題はUbuntuのバージョンに関連しているようです。そのチュートリアルはUbuntu 14.04を対象としていますが、バージョン15では Ubuntuがupstart initデーモンからsystemd initに切り替わったため、新しいバージョンでは機能しないようですデーモン

systemdを使用してuWSGIを起動してnginxおよびDjangoで動作するようにするにはどうすればよいですか?

14

first必要な変更は、/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

2番目にsystemdではなくupstartを使用しているため、次のファイルは不要ですおよび削除できます:/etc/init/uwsgi.conf

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

[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

さらに詳しい情報は here にあります。

27

そのエラーを回避するには:Sudo systemctl daemon-reload新しく作成されたwsgi.serviceロードするファイル。

再起動するたびにサービスを開始するには:Sudo systemctl enable uwsgi