![gunicorn.service の起動に失敗しました: ユニット gunicorn.service が見つかりません。Ubunto 18.04](https://rvso.com/image/922397/gunicorn.service%20%E3%81%AE%E8%B5%B7%E5%8B%95%E3%81%AB%E5%A4%B1%E6%95%97%E3%81%97%E3%81%BE%E3%81%97%E3%81%9F%3A%20%E3%83%A6%E3%83%8B%E3%83%83%E3%83%88%20gunicorn.service%20%E3%81%8C%E8%A6%8B%E3%81%A4%E3%81%8B%E3%82%8A%E3%81%BE%E3%81%9B%E3%82%93%E3%80%82Ubunto%2018.04.png)
私はフォローしていますこれ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.
これを解決するために、私は
- https://stackoverflow.com/questions/40711747/gunicorn-service-unit の開始に失敗しました-gunicorn-service-not-foundこれは、古いバージョンの Linux を使用していることを除いて、私が実行しているガイドとまったく同じです。
- これは同じコードではないので回答されませんユニット gunicorn.service の読み込みに失敗しました: そのようなファイルまたはディレクトリはありません
- 実行:
systemctl status gunicorn.socket
結果:Warning: The unit file, source configuration file or drop-ins of gunicorn.socket changed on disk ● gunicorn.socket - gunicorn daemon Loaded: error (Reason: Invalid argument) Active: inactive (dead)
- 実行:
systemctl is-enabled gunicorn.socket
結果:enabled
- 実行:
systemctl is-enabled gunicorn.service
結果:Failed to get unit file state for gunicorn.service: No such file or directory
答え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