부팅 시 웹 서버 시작을 디버깅할 때 어떤 로그를 사용해야 합니까?

부팅 시 웹 서버 시작을 디버깅할 때 어떤 로그를 사용해야 합니까?

우분투 18.04

부팅 시 Gunicorn 웹 서버를 시작하려고 합니다.

/etc/systemd/system/gunicorn.service

[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

재부팅 시 서버가 실행되고 있지 않습니다. 즉, 웹시를 열면 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

관련 정보