Uvicorn 유닛 파일 설정값
유닛으로 등록한 프로세스는 부팅 시 기동되고 장애 시 재기동되며, 재시작 정책·메모리 상한·작업 디렉터리는 유닛 파일에 지정한다.
유닛 파일
수동으로 기동한 프로세스는 재부팅하면 유지되지 않는다. 유닛으로 등록하면 부팅 시 기동되고, 장애로 종료되면 다시 기동된다.
[Unit]
Description=blog (uvicorn :5011)
After=network-online.target
Wants=network-online.target
[Service]
User=app
WorkingDirectory=/srv/blog/source/server
Environment=PYTHONUNBUFFERED=1
ExecStart=/srv/blog/venv/bin/python -m uvicorn main:app --host 127.0.0.1 --port 5011
Restart=on-failure
RestartSec=5
MemoryMax=512M
TasksMax=128
[Install]
WantedBy=multi-user.target
설정값의 근거
--host 127.0.0.1: 외부에서 직접 접근할 수 없게 하고 nginx를 경유한 접근만 허용한다.Restart=on-failure: 오류로 종료된 경우에만 재시작한다. 수동으로 중지한 서비스는 재시작하지 않는다.MemoryMax: 한 서비스가 메모리를 전부 소진하는 상황을 방지한다.PYTHONUNBUFFERED=1: 로그가 버퍼에 누적되지 않고 즉시journalctl에 표시된다.
등록과 기동
sudo systemctl daemon-reload
sudo systemctl enable --now blog.service
systemctl status blog.service