Linux에서 부팅 시 서비스를 자동 시작하는 방법은 무엇입니까?

시스템 관리자에게 중요한 역량 중 하나는 서버가 재시작될 때 자동으로 실행되도록 서비스를 설정하는 것입니다.

서버 재부팅은 다음과 같은 다양한 원인으로 발생할 수 있습니다.

  • 정기적인 주간 또는 월간 계획
  • 하드웨어나 커널 문제로 인한 예상치 못한 상황

정확하게 구성하면 재부팅할 때마다 서비스를 수동으로 시작해야 하는 번거로움을 줄일 수 있습니다.

자동화는 언제나 편리하죠, 그렇지 않나요?

다음 설명은 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을 설치 또는 업그레이드하는 방법도 확인해 보세요.

이 글이 유익하셨나요? 그렇다면 다른 사람들과 공유해 보세요!