![gunicorn.service 시작 실패: 장치 gunicorn.service를 찾을 수 없습니다. 우분토 18.04](https://rvso.com/image/922397/gunicorn.service%20%EC%8B%9C%EC%9E%91%20%EC%8B%A4%ED%8C%A8%3A%20%EC%9E%A5%EC%B9%98%20gunicorn.service%EB%A5%BC%20%EC%B0%BE%EC%9D%84%20%EC%88%98%20%EC%97%86%EC%8A%B5%EB%8B%88%EB%8B%A4.%20%EC%9A%B0%EB%B6%84%ED%86%A0%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/failed-to-start-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
서비스에 [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