시스템 관리자에게 중요한 역량 중 하나는 서버가 재시작될 때 자동으로 실행되도록 서비스를 설정하는 것입니다.
서버 재부팅은 다음과 같은 다양한 원인으로 발생할 수 있습니다.
- 정기적인 주간 또는 월간 계획
- 하드웨어나 커널 문제로 인한 예상치 못한 상황
정확하게 구성하면 재부팅할 때마다 서비스를 수동으로 시작해야 하는 번거로움을 줄일 수 있습니다.
자동화는 언제나 편리하죠, 그렇지 않나요?
다음 설명은 DigitalOcean 서버에서 테스트한 두 가지 인기 있는 배포판을 기준으로 합니다.
CentOS 또는 RHEL 6.x
아래 예에서는 Apache HTTP 서버를 예시로 들었지만, RHEL(Red Hat Enterprise Linux) 또는 CentOS 6 버전에서 부팅 시 실행하려는 다른 서비스에도 동일한 절차를 적용할 수 있습니다.
스크립트 파일 이름은 자유롭게 정할 수 있지만, 여기서는 예시로 httpd를 사용했습니다.
- Linux 서버에서 root 권한으로 접속
- /etc/init.d/ 디렉토리에 스크립트를 만들거나 복사합니다.
[[email protected] init.d]# ls -ltr httpd -rwxr-xr-x. 1 root root 3371 Jan 6 08:56 httpd [[email protected] init.d]#
Linux 또는 CentOS에서 기본적으로 제공하는 chkconfig 유틸리티를 활용합니다.
chkconfig --add
명령어를 사용하여 부팅 시 실행할 스크립트를 추가합니다.
[[email protected] init.d]# chkconfig --add httpd [[email protected] init.d]# chkconfig httpd on
chkconfig --list
명령어를 사용하여 스크립트가 성공적으로 추가되었는지 확인합니다.
[[email protected] init.d]# chkconfig --list httpd httpd 0:off 1:off 2:on 3:on 4:on 5:on 6:off [[email protected] init.d]#
여기까지입니다! 이제 Linux가 부팅될 때 httpd 스크립트가 자동으로 호출되어 서비스가 시작됩니다.
자동 시작 서비스를 비활성화해야 하는 경우 다음 명령어를 사용하면 됩니다.
chkconfig httpd off chkconfig --del httpd
RHEL 또는 CentOS 7.x/8.x
RHEL 7에서 부팅 시 서비스를 설정하는 방법은 RHEL 6과 약간 다릅니다. RHEL 7부터는 서비스를 관리하는 데 systemd를 사용합니다.
Apache, PHP, MySQL, Nginx와 같은 대부분의 소프트웨어는 설치 과정에서 자동으로 서비스에 추가됩니다.
여기서는 PHP-FPM을 예시로 설명하겠습니다.
먼저 php-fpm의 상태를 확인해 보겠습니다. (/usr/lib/systemd/system/에 이미 스크립트가 있다고 가정)
[[email protected] ~]# systemctl status php-fpm php-fpm.service - The PHP FastCGI Process Manager Loaded: loaded (/usr/lib/systemd/system/php-fpm.service; disabled; vendor preset: disabled) Active: inactive (dead) [[email protected] ~]#
상태가 ‘disabled’로 표시된 것은 부팅 시 자동으로 시작되도록 설정되지 않았음을 의미합니다.
이제 systemctl 명령어를 사용하여 부팅 시 php-fpm이 실행되도록 설정해 보겠습니다.
[[email protected] ~]# systemctl enable php-fpm Created symlink from /etc/systemd/system/multi-user.target.wants/php-fpm.service to /usr/lib/systemd/system/php-fpm.service. [[email protected] ~]#
다시 상태를 확인해 보겠습니다.
[[email protected] ~]# systemctl status php-fpmphp php-fpm.service - The PHP FastCGI Process Manager Loaded: loaded (/usr/lib/systemd/system/php-fpm.service; enabled; vendor preset: disabled) Active: inactive (dead) [[email protected] ~]#
이제 php-fpm은 부팅 시 자동으로 실행되도록 설정되었습니다. 서버를 재부팅하여 테스트해 볼 수 있습니다.
부팅 시 서비스 시작을 비활성화하려면 다음 명령어를 사용합니다.
systemctl disable php-fpm
시스템 부팅과 자동 시작 서비스에 대한 추가 정보를 얻으려면 이 게시물을 참조하는 것이 좋습니다.
Ubuntu
Ubuntu에서 자동 시작 서비스를 구성하는 방법은 위와 약간 다릅니다. Nginx라는 스크립트를 예로 들어 설명하겠습니다.
- root 권한으로 Ubuntu 서버에 접속합니다.
- /etc/init.d/ 폴더에 스크립트를 복사합니다.
- 아래 명령어를 실행합니다.
update-rc.d nginx defaults
- 서비스가 제대로 시작되었는지 확인하려면 서버를 재부팅합니다.
이 내용이 여러분에게도 도움이 되기를 바랍니다.
시스템 관리는 항상 흥미롭고 도전적인 분야입니다. 이 분야에서 경력을 쌓고 싶으시다면 Udemy 강좌를 참고해 보세요.
추가적으로 Linux에서 갑작스러운 재부팅 원인을 찾는 방법과 CentOS 6.x에 PHP-FPM 5.6을 설치 또는 업그레이드하는 방법도 확인해 보세요.
이 글이 유익하셨나요? 그렇다면 다른 사람들과 공유해 보세요!