less than 1 minute read

Heroku를 떠나기로 했다. Tbot-800.ex은 세심한 관리가 필요한 프로그램이 아니라서 Linux 인스턴스에서 직접 관리해도 충분하다. 두 가지가 필요하다. 프로그램이 크래시로 종료하거나 재부팅을 했을 때, 자동으로 실행해야 한다. 지난 로그도 적당히 볼 수 있으면 좋겠다. systemdsystemd-journald 로 할 수 있다.

/etc/systemd/system/tbot800.service 파일에 프로그램 실행 정보를 설정한다.

[Unit]
Description=Tbot-800
After=network.target
StartLimitIntervalSec=0

[Service]
Type=simple
Restart=always
RestartSec=1
User=ubuntu

Environment="ACCOUNT1_INTERVAL_MINUTE=60"
Environment="ACCOUNT2_INTERVAL_MINUTE=60"
# ...

ExecStart=/home/ubuntu/app/bin/tbot800 start

[Install]
WantedBy=multi-user.target

이제 systemctl 프로그램을 실행해서 설정을 로딩하고 재부팅해도 자동으로 시작하게 활성화한다. 그리고 바로 시작한다.

$ sudo systemctl daemon-reload
$ sudo systemctl enable tbot800.service
$ sudo systemctl start tbot800.service

프로그램이 잘 실행되고 있는지 로그를 확인해 보자. journalctl 프로그램을 실행한다.

$ journalctl -u tbot800 -f

tbot800[4530]: 13:30:33.648 [info] ########################################
tbot800[4530]: 13:30:33.649 [info] tweet items url: ...
tbot800[4530]: 13:30:33.649 [info] tweet items url: ...
tbot800[4530]: 13:30:33.649 [info] ########################################
tbot800[4530]: 13:30:34.411 [info] shuffle: 535 tweets
tbot800[4530]: 13:30:35.059 [info] shuffle: 626 tweets

잘 나온다. 로그를 얼마나 저장할까?

$ cat /etc/systemd/journald.conf

[Journal]
Storage=persistent  # 로그를 영구적으로 저장 (기본값: auto)
SystemMaxUse=500M   # 최대 저장 용량 지정 (500MB)
SystemKeepFree=1G   # 최소 남길 여유 공간 (1GB)
MaxRetentionSec=7day # 로그를 7일간 보관

/etc/systemd/journald.conf 파일로 설정할 수 있다. Linux 인스턴스 사정에 맞게 용량을 조정한다.

systemd 로 프로세스를 시작하고 systemd-journald 로 로그를 본다. 좋은 디폴트 옵션이다.