지난 글에서 systemd에 대해서 간략하게 알아보았습니다.


이번에는 systemd에서 unit을 추가하여 서비스를 실행하는 방법에 대해서 알아보겠습니다.


[Unit]
Description=apache2
After=mysql.service
Requires=mysql.service

[Service]
TimeoutStartSec=0
ExecStartPre=-/usr/bin/docker kill apache2-server
ExecStartPre=-/usr/bin/docker rm apache2-server
ExecStart=/usr/bin/docker run -p 60004:80 --volumes-from apache2-volume --volumes-from mysql-volume -v /etc/localtime:/etc/localtime:ro --name apache2-server apache2-server
ExecStop=/usr/bin/docker kill apache2-server

[Install]
WantedBy=multi-user.target


제가 사용하는 CoreOS에서 apache2 container를 실행하는 설정입니다.


지난 글에서 설명했다시피 systemd의 unit 설정파일은 ini 파일 형식을 따릅니다.

섹션이 있고, 각 섹션에는 key=value형식으로 내용이 기술되어있습니다.


우선 Unit 섹션에서 보면

Description은 이 유닛에 대한 설명입니다.


그 뒤로 나오는 것이 After, Requies, Before 등이 있습니다.


After와 Requires는 비슷하지만, After는 해당 서비스의 실행 성공 여부와 무관하게 그 서비스가 실행되고 나면 실행을 합니다. 반면에 Requires는 해당 서비스가 실행에 실패하면 이 서비스를 실행하지 않습니다.



Service 섹션에서는

Exec.... 들이 있습니다. upstart-job에서도 비슷하게 있는 pre-start script, pre-stop script, post-start script, post-stop script등에 해당되는 내용입니다.


Install 섹션에는 이 서비스는 어느 레벨에 해당하는가에 대해서 기술하면 됩니다.


이렇게 systemd 설정파일을 만들고 나서 /etc/systemd/system에 복사한 후에


sudo systemctl enable apache2.service

sudo systemctl start apache2.service


이렇게 명령을 내려서 apache2 서비스를 실행할 수 있습니다.