Linux 운영체제에서 QuestDB를 서버 부팅 시 자동으로 실행되도록 설정하는 가장 효율적인 방법은 systemd 서비스로 등록하는 것입니다. systemd는 현대적인 Linux 배포판에서 표준으로 사용되는 서비스 관리 시스템으로, 프로세스 감시 및 자동 재시작 등의 기능을 제공합니다.
1. systemd 서비스 유닛 파일 생성
먼저 시스템 서비스 디렉토리에 QuestDB 실행 정보를 담은 설정 파일을 생성해야 합니다. /etc/systemd/system/ 경로에 questdb.service 파일을 생성합니다.
sudo nano /etc/systemd/system/questdb.service
파일 내부에 다음과 같은 구성을 작성합니다. 여기서 /usr/local/lib/questdb는 QuestDB가 설치된 실제 경로로 수정하여 사용하십시오.
[Unit]
Description=QuestDB Open Source Time-Series Database
After=network.target
[Service]
Type=simple
User=questdb-user
Group=questdb-group
WorkingDirectory=/usr/local/lib/questdb
ExecStart=/usr/local/lib/questdb/bin/questdb.sh start -d /usr/local/lib/questdb/data -t questdb
ExecStop=/usr/local/lib/questdb/bin/questdb.sh stop -d /usr/local/lib/questdb/data -t questdb
Restart=on-failure
RestartSec=10
[Install]
WantedBy=multi-user.target
2. 권한 설정 및 서비스 활성화
유닛 파일을 저장한 후, 시스템이 새로운 서비스 파일을 인식하도록 설정하고 부팅 시 실행되도록 등록합니다.
설정 파일 권한 부여:
sudo chmod 644 /etc/systemd/system/questdb.service
systemd 데몬 재로드:
sudo systemctl daemon-reload
서비스 활성화 및 시작:
# 부팅 시 자동 시작 등록
sudo systemctl enable questdb.service
# 서비스 즉시 시작
sudo systemctl start questdb.service
3. 서비스 상태 확인 및 로그 모니터링
QuestDB가 정상적으로 구동되고 있는지 다음 명령어로 확인할 수 있습니다.
sudo systemctl status questdb.service
만약 문제가 발생한다면 journalctl을 통해 상세 로그를 확인하여 원인을 분석할 수 있습니다.
sudo journalctl -u questdb.service -f
4. 기타 자동 실행 방법 (참고용)
systemd를 사용할 수 없는 환경이거나 다른 방식이 필요한 경우 다음의 대안을 사용할 수 있습니다.
Crontab의 @reboot 스케줄러
특정 사용자의 crontab에 등록하여 시스템 재부팅 시마다 실행하게 할 수 있습니다.
# crontab 편집기 실행
crontab -e
# 파일 하단에 추가
@reboot /usr/local/lib/questdb/bin/questdb.sh start -d /usr/local/lib/questdb/data
/etc/rc.local 활용
시스템 초기화 스크립트 파일 끝에 실행 명령어를 추가합니다. (최신 배포판에서는 권장되지 않음)
# /etc/rc.local 파일 하단에 추가
/usr/local/lib/questdb/bin/questdb.sh start -d /usr/local/lib/questdb/data &
주의사항
- 사용자 권한: 보안을 위해
User=root대신 별도의 전용 사용자 계정을 생성하여 실행하는 것이 좋습니다. - 경로 확인:
ExecStart및WorkingDirectory에 지정된 경로가 실제 데이터 디렉토리와 일치하는지 반드시 확인하십시오. - 포트 충돌: 자동 실행 시 QuestDB가 사용하는 기본 포트(예: 9000, 8812)가 다른 서비스에 의해 점유되지 않았는지 확인이 필요합니다.