nginx를 통해 서버에서 Flask 애플리케이션을 실행하고 있습니다. systemd 파일을 생성하고 싶은데 이것이 제가 가진 파일입니다:
[Unit]
Description=my123 website
After=syslog.target
Requires=postgresql.service
[Service]
ExecStart=/home/user_123/my_web_app/run.py &
ExecStop=
Restart=on-abort
WorkingDirectory=/home/user_123/my_web_app/
SyslogIdentifier=my_web_app
User=user_123
[Install]
WantedBy=multi-user.target
./run.py
이제 로컬에서 으로 실행합니다 . ExecStart
및 에는 무엇이 있어야 합니까 ExecStop
? ExecStart
갖고 있으니까 맞는 것 같아요 &
. 하지만 그래서 어쩌죠 ExecStop
?
답변1
아니 넌 그래야 해안 돼요에 추가하세요. &
이렇게 하면ExecStart
시스템이 귀하의 장치가 포크 프로세스라고 생각하게 됩니다. 또한 ExecStop
SIGTERM의 서비스(Flask에 내장된 웹 서버는 이해함)를 이해할 필요가 없으며 systemd는 신호를 보낼 위치를 알고 있습니다.
즉, systemd는 시작 PID를 추적 ExecStart
한 다음 프로세스 종료를 요청할 때 SIGTERM을 보낼 위치를 알고 있습니다.
(단위는 type=
포크를 이보다 더 복잡하게 만들 수 있습니다. 그러나 기본 단위는 type=
포크가 없다고 가정합니다.)
추가의
Nginx 뒤에 내장된 Flask 서버를 실행하면 렌더링됩니다.매우심지어 취약하다.사소한 DoS 공격. Flask 내장 서버는 프로덕션 용도로 적합하지 않습니다. Nginx의 경우 다음과 같은 것을 사용해야 합니다.uWSGI.
Flask 문서에는uwsgi 소개, 명령줄을 쉽게 매핑하여 uWSGI 구성 파일 옵션을 편집할 수 있습니다. uWSGI 문서에는시스템 정보. 내장된 Flask 대신 uWSGI와 같은 실제 웹 서버를 시작하려면 systemd를 사용해야 합니다.