gunicorn.service 시작 실패: 장치 gunicorn.service를 찾을 수 없습니다. 우분토 18.04

gunicorn.service 시작 실패: 장치 gunicorn.service를 찾을 수 없습니다. 우분토 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

서비스에 [Install] 섹션이 있습니다. 즉, sudo systemctl enable gunicorn.service시스템 시작 시 서비스를 시작하려면 명령을 실행해야 합니다.

명령을 실행하면 이 파일에 대한 심볼릭 링크가 디렉토리에 생성됩니다 /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활성화한 후 do: 를 사용하여 활성화합니다 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

관련 정보