반응형
들어가며...
Ubuntu 서버에 프로그램을 Command 단위로 테스트를 진행하는 것 보다 Daemon 형태로 만들어서 로그 확인 등 테스트를 더욱 용이하게 만들어본다.
Daemon 생성
1. Daemon 스크립트 준비
# sudo vi /etc/systemd/system/{프로그램명}.service
[Unit]
Description=unicorn instance to backend # 설명부
After=network.target
[Service]
User=ubuntu # 동작 권한 (유저)
Group=www-data # 동작 권한 (그룹)
# 작업 디렉토리
WorkingDirectory=/home/ubuntu/{프로젝트}/src
# 환경변수 설정
Environment="PATH=/home/ubuntu/{프로젝트}/bin"
# 실행 명령어
ExecStart=/home/ubuntu/{프로젝트}/bin/uvicorn main:app --workers 3 --reload --uds unix:backend.sock
[Install]
WantedBy=multi-user.target
2. Daemon 반영
# sudo systemctl daemon-reload
3. Daemon 관련 명령어
# sudo systemctl enable {프로그램명} (서버 재시작 시 실행)
# sudo systemctl disable {프로그램명} (서버 재시작 시 미실행)
# sudo systemctl start {프로그램명} (프로그램 시작)
# sudo systemctl stop {프로그램명} (프로그램 종료)
# sudo systemctl restart {프로그램명} (프로그램 재시작)
Daemon 관리 (systemctl status)
1. Daemon 상태 확인
# sudo systemctl status {프로그램명}
● {프로그램명}.service - unicorn instance to backend (설명부)
Loaded: loaded (/etc/systemd/system/{프로그램명}.service; enabled; vendor preset:
Active: active (running) since Wed 2022-04-27 16:46:30 KST; 1 weeks 5 days ag
Main PID: 20583 (uvicorn)
Tasks: 17 (limit: 4915)
CGroup: /system.slice/{프로그램명}.service
├─20583 /home/ubuntu/{프로그램명}/bin/python3 /home/ubuntu/{프로그램명}/bin/uvi
├─20616 /home/ubuntu/{프로그램명}/bin/python3 -c from multiprocessing.sema
└─25327 /home/ubuntu/{프로그램명}/bin/python3 -c from multiprocessing.spaw
# 로그 내역
May 09 18:27:02 {Server} uvicorn[20583]: 2022-05-09 18:27:02,883 INFO sql
May 09 18:27:02 {Server} uvicorn[20583]: INFO: {IP}:0 - "GET
May 09 18:27:02 {Server} uvicorn[20583]: 2022-05-09 18:27:02,883 INFO sql
May 09 18:27:02 {Server} uvicorn[20583]: 2022-05-09 18:27:02,884 INFO sql
May 09 18:31:34 {Server} uvicorn[20583]: INFO: {IP}:0 - "GET /
May 09 18:31:35 {Server} uvicorn[20583]: INFO: {IP}:0 - "POST
May 09 18:31:36 {Server} uvicorn[20583]: INFO: {IP}:0 - "GET /
- Daemon 상태를 파악하여 프로그램 실행 부분의 이슈를 파악할 수 있다. (loaded, failed 로그 확인)
Daemon 관리 (journalctl)
1. journalctl -u {프로그램명} | tail -n 3000
May 09 18:31:34 {Server} uvicorn[20583]: INFO: 20.109.4.50:0 - "GET /.env HTTP/1.0" 404 Not Found
May 09 18:31:35 {Server} uvicorn[20583]: INFO: 20.109.4.50:0 - "POST / HTTP/1.0" 404 Not Found
May 09 18:31:36 {Server} uvicorn[20583]: INFO: 20.109.4.50:0 - "GET /vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php HTTP/1.0" 404 Not Found
May 09 18:39:06 {Server} uvicorn[20583]: INFO: 45.9.20.101:0 - "GET /?XDEBUG_SESSION_START=phpstorm HTTP/1.0" 404 Not Found
May 09 18:48:38 {Server} uvicorn[20583]: INFO: 192.241.213.173:0 - "GET /actuator/health HTTP/1.0" 404 Not Found
May 09 19:00:48 {Server} uvicorn[20583]: INFO: 45.32.17.205:0 - "GET /api/v1/notices?page=1&per_page=1&thread_name=general HTTP/1.0" 404 Not Found
- Daemon 동작 시 프로그램 개발에 활용한 Logging 처리 내용을 파악할 수 있다. (내부 이슈 확인)
728x90
반응형
'Ubuntu' 카테고리의 다른 글
[Ubuntu] Nginx 웹서버 활용 (0) | 2024.05.25 |
---|---|
[certbot] SSL Certification 갱신 방법 (0) | 2022.05.17 |