강좌 & 팁
지난 글에서 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 서비스를 실행할 수 있습니다.