우분투에서 systemd 서비스 (service) 를 등록하고 실행하는 방법을 알아보자.
서비스란 특정한 상황에서 자동으로 실행되는 백그라운드 프로세스 (background process) 를 의미한다. 서비스는 대개 시스템이 시작할 때 실행된다.
이 글에서는 구체적인 예로서 PHP 웹서버를 서비스로 등록하고 실행하는 방법을 설명한다.
1. systemd 유닛 파일 작성
systemd 유닛 (unit) 파일은 /etc/systemd/system 디렉토리 안에 작성한다.
systemd 유닛 파일의 확장자는 .service 이다.
sudo vi /etc/systemd/system/php-web-server.service
파일에 아래와 같은 내용을 입력한다.
해시 (#) 기호 뒤에 있는 내용은 주석이므로 입력하지 않아도 된다.
[Unit]
Description=PHP web server # 서비스에 대한 간단한 설명.
[Service]
ExecStart=/usr/bin/php -S 192.168.0.7:80 -t /docroot # 서비스가 시작될 때 실행되는 명령.
[Install]
WantedBy=default.target # 서비스와 서비스 사이의 상호 의존성과 관계가 있다. 대개의 경우 default.target 으로 지정하면 문제가 없다.
파일을 저장하고 편집기를 닫는다.
2. systemd 서비스의 실행
새로 작성한 systemd 유닛 파일을 systemd 데몬이 읽게 한다.
sudo systemctl daemon-reload
서비스를 활성화 (enable) 한다. 이렇게 해야 시스템이 시작될 때 서비스가 실행된다.
sudo systemctl enable php-web-server.service
서비스를 시작한다.
sudo systemctl start php-web-server.service
서비스의 상태를 확인한다.
sudo systemctl status php-web-server.service
3. 기타 명령
서비스를 비활성화 (disable) 한다. 이렇게 하면 시스템이 시작될 때 서비스가 실행되지 않는다.
sudo systemctl disable php-web-server.service
서비스의 활성화 여부를 확인한다.
sudo systemctl is-enabled php-web-server.service
실행 중인 서비스를 종료한다.
sudo systemctl stop php-web-server.service