このチュートリアル に従って uWSGI
を Django
および nginx
on Ubuntu
16.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で動作するようにするにはどうすればよいですか?
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 にあります。
そのエラーを回避するには:Sudo systemctl daemon-reload
新しく作成されたwsgi.serviceロードするファイル。
再起動するたびにサービスを開始するには:Sudo systemctl enable uwsgi
。