요새 FAST API로 api 서버를 구축하고있다.

 

가상 컴퓨터에서 ubuntu를 설치하고 Fast API를 설치했는데 문제는 접속할때마다 서버를 실행해줘서 번거롭다.

그래서 리눅스의 system을 활용해서 항상 서비스를 실행시킬 수 있도록 설정했다.

 

어떻게 그게 가능한가? 

 

redhat 참조:

https://docs.redhat.com/ko/documentation/red_hat_enterprise_linux/7/html/system_administrators_guide/chap-managing_services_with_systemd

 

즉, 리눅스에서 윈도우의 시스템 제어판같은 역할을 하는 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

 

cli 환경에서 cmd로 현재 사용중인 포트를 종료시키는 방법

 

Windosw:

#3306 포트 상태 확인
netstat -ano | findstr :3306

#종료
taskkill /PID 3306 /F

 

Mac:

#3306 포트 상태 확인
sudo lsof -i :3306

#종료
sudo kill -9 3306

 

'Linux' 카테고리의 다른 글

[ubuntu] 시스템 자동실행 설정 / 서버 실행 설정  (0) 2024.11.01

+ Recent posts