요새 FAST API로 api 서버를 구축하고있다.
가상 컴퓨터에서 ubuntu를 설치하고 Fast API를 설치했는데 문제는 접속할때마다 서버를 실행해줘서 번거롭다.
그래서 리눅스의 system을 활용해서 항상 서비스를 실행시킬 수 있도록 설정했다.
어떻게 그게 가능한가?
redhat 참조:
즉, 리눅스에서 윈도우의 시스템 제어판같은 역할을 하는 systemd 를 활용해서 설정하는것.
OS에서 설정을 해주는 것으로 이해하면 된다.
데몬을 활용하는 명령어 systemctl을 사용하여 서비스를 관리할 수 있다.
명령어 설명은 redhat의 다음 페이지 참조:
https://docs.redhat.com/ko/documentation/red_hat_ceph_storage/7/html/administration_guide/starting-stopping-and-restarting-all-the-ceph-daemons_admin
작업에 필요한 내용만 정리하자면 이렇게 볼 수 있다.
1. /etc/sytemd/sytem 디렉토리에 생성하려는 서비스이름으로 .service 파일을 만든다.
sudo nano /etc/systemd/system/서비스이름.service
2. 서비스 파일 코드 설정
[Unit]
Description=FastAPI Application # 서비스 설명
After=network.target
[Service]
User=root # 사용자
Group=dev # 사용할 그룹
WorkingDirectory=/var/www/application # 실행시키려는 서비스의 위치
Environment="PATH=/var/www/application/venv/bin" # 가상환경으로 실행해야하는 경우
ExecStart=/usr/local/bin/uvicorn main:app --host 0.0.0.0 --port 1234 # 실행해야하는 파일
Restart=always # 항상 재시작하도록 설정
RestartSec=3 # 3초
[Install]
WantedBy=multi-user.target # 유닛 등록 종속성검사
nano 편집기는 ctrl + s 로 저장, ctrl + x 로 종료시킬 수 있다.
3. 서비스 설정을 저장했다면 systemd에 해당 설정을 업데이트할 수 있도록 재시작을 한다.
sudo systemctl daemon-reload
4. 서비스를 자동시작 할 수 있도록 설정
sudo systemctl enable service-name
5. 서비스 시작
sudo systemctl start service-name
설정을 마쳤다면 서비스가 잘 실행되고 있는지 확인이 필요하다.
다음은 서비스 실행을 확인할 수 있는 코드이다.
현재 서비스가 실행중인지 확인
sudo systemctl status service-name
실행중인 서비스의 로그를 실시간으로 확인
sudo journalctl -u service-name -f
'Linux' 카테고리의 다른 글
[Linux] 사용중인 포트 종료 port kill (0) | 2024.08.08 |
---|