gunicorn.service の起動に失敗しました: ユニット gunicorn.service が見つかりません。Ubunto 18.04

gunicorn.service の起動に失敗しました: ユニット gunicorn.service が見つかりません。Ubunto 18.04

私はフォローしていますこれUbuntu 18.04 で Postgres、Nginx、Gunicorn を使用して Django を設定する方法ガイド。

私は次のファイル.socketを作成しました

sudo nano /etc/systemd/system/gunicorn.socket

[Unit]
Description=gunicorn socket

[Socket]
ListenStream=/run/gunicorn.sock

[Install]
WantedBy=sockets.target

次のファイルを作成しました。.service

sudo nano /etc/systemd/system/gunicorn.service

オリジナルのRECOMENDED_FORMATTING-sはガイド

[Unit]
Description=gunicorn daemon
Requires=gunicorn.socket
After=network.target


[Service]
User=sammyRECOMENDED_FORMATTING
Group=www-data
WorkingDirectory=/home/sammyRECOMENDED_FORMATTING/myprojectdirRECOMENDED_FORMATTING
ExecStart=/home/sammyRECOMENDED_FORMATTING/myprojectdirRECOMENDED_FORMATTING/myprojectenvRECOMENDED_FORMATTING/bin/gunicorn \
          --access-logfile - \
          --workers 3 \
          --bind unix:/run/gunicorn.sock \
          myprojectRECOMENDED_FORMATTING.wsgi:application

[Install]
WantedBy=multi-user.target

私自身のバージョンのフォーマット方法仮想環境をサーバー上のプロジェクトフォルダの外に持っていた

[Unit]
Description=gunicorn daemon
Requires=gunicorn.socket
After=network.target

[Service]
User=SERVER_USER
Group=www-data
WorkingDirectory=/home/SERVER_USER/MAIN_PROJECT_FOLDER
ExecStart=/home/SERVER_USER/ven/bin/gunicorn \
          --access-logfile - \
          --workers 3 \
          --bind unix:/home/SERVER_USER/MAIN_PROJECT_FOLDER/MAINAPPLICATION_FOLDER.sock \
          MAINAPPLICATION_FOLDER.wsgi:application

[Install]
WantedBy=multi-user.target

これらを当初の推奨どおりに残すことも試みました

--bind unix:/run/gunicorn.sock \

私は次のコードを実行しようとしました

sudo systemctl start gunicorn

エラーメッセージ 1

Failed to start gunicorn.service: Unit gunicorn.service not found.

そして私は2つも試しました

sudo systemctl start gunicorn.socket

エラーメッセージ2

Failed to start gunicorn.socket: Unit gunicorn.socket is not loaded properly: Invalid argument.
See system logs and 'systemctl status gunicorn.socket' for details.

これを解決するために、私は

答え1

sudo systemctl enable gunicorn.serviceサービスに [Install] セクションがあるため、システムの起動時にサービスを開始するにはコマンドを実行する必要があります。

コマンドを実行すると、このファイルへのシンボリックリンクがディレクトリに作成されます/etc/systemd/system/multi-user.target.wants/

という名前のソケット ファイルも作成しgunicorn.socket、有効にする必要があることに注意してください。有効にしたら、コマンドを実行してソケットをアクティブ化できますsudo systemctl start gunicorn.socket。systemd が依存関係を認識するため、サービスを実行する必要はありません。

サービスのステータスは で確認できますsystemctl status gunicorn.service

答え2

私の場合、サーバーはgunicorn.socketファイルを作成しませんでした。そのため、自分でファイルを作成して有効にする必要がありました。

に移動して/etc/systemd/system、コマンドで利用可能なすべてのファイルとディレクトリを確認しますls

ファイルがない場合は、、sudo nano ~/etc/systemd/system/gunicorn.socketまたはを使用して最初からファイルを再作成してみてくださいsudo nano gunicorn.socket

まず次のようにして有効にしsudo systemctl enable gunicorn.socket、有効にした後で次のようにしますsudo systemctl start gunicorn.socket

すべてが正常に動作している場合は、ファイルのステータスがアクティブであることがわかりgunicorn.socket、コマンドを実行するとsudo systemctl status gunicorn.socket次のように表示されます。

     gunicorn.socket - gunicorn socket
     Loaded: loaded (/etc/systemd/system/gunicorn.socket; enabled; vendor prese>
     Active: active (listening) since Fri 2020-06-26 17:53:10 UTC; 14s ago
   Triggers: ● gunicorn.service
     Listen: /run/gunicorn.sock (Stream)
      Tasks: 0 (limit: 1137)
     Memory: 0B
     CGroup: /system.slice/gunicorn.socket

関連情報