起動時にWebサーバーを起動するデバッグを行うときに使用するログはどれですか

起動時にWebサーバーを起動するデバッグを行うときに使用するログはどれですか

ウブントゥ 18.04

起動時に Gunicorn Web サーバーを起動するようにしています。

システム変数

[Unit]
Description=gunicorn daemon

[Service]
# the specific user that our service will run as
User=pcask
Group=pcask

WorkingDirectory=/home/michael/PycharmProjects/pcask/pcask
ExecStart=gunicorn pcask.wsgi
ExecReload=/bin/kill -s HUP $MAINPID
KillMode=mixed
TimeoutStopSec=5
PrivateTmp=true

[Install]
WantedBy=multi-user.target

権限

pcask@tmpgmv:~/pcask/venv/lib/python3.8/site-packages$ ls -la |grep gunicorn
drwxrwxr-x   7 pcask pcask   4096 Jul 28 19:32 gunicorn
drwxrwxr-x   2 pcask pcask   4096 Jul 28 19:32 gunicorn-20.0.4.dist-info

再起動すると、サーバーは実行されません。つまり、Web サイトを開くと、502 Bad Gateway が表示されます。これは、Gunicorn が実行されていないことを意味します。

起動時にこのサービス ファイルが使用されたときに何が問題だったかを確認できるエラー ログがあるかどうか、また、このサービス ファイルが実際に使用されたかどうかを教えてください。

後で追加

$ sudo journalctl -u gunicorn.service
[sudo] password for pcask: 
Loaded: loaded (/etc/systemd/system/gunicorn.service; enabled; vendor preset: enabled)
   Active: failed (Result: exit-code) since Fri 2020-08-14 12:36:57 MSK; 1min 11s ago
  Process: 439 ExecStart=/home/pcask/pcask/venv/lib/python3.8/site-packages/gunicorn pcask.wsgi:application (code=exited, status=203/EXEC)
 Main PID: 439 (code=exited, status=203/EXEC)

Aug 14 12:36:57 tmpgmv systemd[1]: Started gunicorn daemon.
Aug 14 12:36:57 tmpgmv systemd[439]: gunicorn.service: Failed to execute command: Permission denied
Aug 14 12:36:57 tmpgmv systemd[439]: gunicorn.service: Failed at step EXEC spawning /home/pcask/pcask/venv/lib/python3.8/site-packages/gunicorn: Permission denied
Aug 14 12:36:57 tmpgmv systemd[1]: gunicorn.service: Main process exited, code=exited, status=203/EXEC
Aug 14 12:36:57 tmpgmv systemd[1]: gunicorn.service: Failed with result 'exit-code'.

答え1

systemdは独自のログ機能を持っています。ログを表示するためのコマンドは

journalctl 

使用できます

journalctl -u gunicorn.service

特定のサービスを追跡します。

その他の例:

journalctl --since="2020-01-01 10:00:00"
journalctl --since "30 min ago"
journalctl _PID=1000
  • サービスがアクティブであることを確認してください。確認しsudo systemctl status gunicorn.service、非アクティブの場合は、 を使用してsudo systemctl enable gunicornアクティブにすることができます。

  • 他の必要なサービスがすべて開始された後にサービスが開始することを確認してください。nginx またはネットワークが起動する前に gunicon を開始しても機能しません。注目すべき点: ユニットのセクションAfter=network.targetにがありません[UNIT]

手動で起動したときに gunicorn が動作すると仮定すると、nginx ログは必要ありませんが、念のため次のログがあります。

/var/log/nginx/access.log
/var/log/nginx/error.log

関連情報