본문 바로가기
프로그램

아파치 centos7 에 자동 실행 - rc.local 등록하기

by Dog_발자 2022. 11. 16.
반응형

Centos 6 버전에서 rc.local에 아파치, proftp, 등 서버 실행과 동시에 실행해 주어야 하는 프로그램들을 자동으로 실행시켰습니다. 그런데 Centos 7 버전에서는  rc.local에 프로그램을 등록해 주어도 자동 실행이 되지 않습니다. 이유는 매번 centos의 버전이 올라가면서 항상 보안 관련된 내용들이 강화되는데 이번에는 rc.local 이 보안상 이유 활성화가 안되어 있습니다. 새로운 버전에 익숙해져야 되지만 익히기가 쉽지 않아 rc.local을 centos7에서도 사용을 할 수 있도록 세팅을 해 보았습니다.

 

[root@localhost data_room]# cat /etc/rc.local
-----------------------------------
#!/bin/bash
# THIS FILE IS ADDED FOR COMPATIBILITY PURPOSES
#
# It is highly advisable to create own systemd services or udev rules
# to run scripts during boot instead of using this file.
#
# In contrast to previous versions due to parallel execution during boot
# this script will NOT be run after all other services.
#
# Please note that you must run 'chmod +x /etc/rc.d/rc.local' to ensure
# that this script will be executed during boot.

touch /var/lock/subsys/local

 

1. rc.local파일의 실행 권한을 확인 후 실행 권한 ( cmod +x )을 허용해줍니다.

#> ll /etc/rc.d/rc.local
--------------------------------------------------
-rw-r--r--. 1 root root 473  9월  1 23:57 /etc/rc.d/rc.local

 

  • 실행 권한 ( cmod +x ) 을 허용
#> chmod +x /etc/rc.d/rc.local
#> ll /etc/rc.d/rc.local
--------------------------------------------------
-rwxr-xr-x. 1 root root 473  9월  1 23:57 /etc/rc.d/rc.local

 

  • lc-local의 실행 상태를 확인해 봅니다.
#> systemctl status rc-local.service
--------------------------------------------------
rc-local.service - /etc/rc.d/rc.local Compatibility
 Loaded: loaded (/usr/lib/systemd/system/rc-local.service; static; vendor preset: disabled)
 Active: inactive (dead)

 Active: inactive (dead) : 서비스가 아직 실행이 안되어 있는 상태입니다.

 

2.  rc.local  서비스를 실행합니다.

[root@test ~]# systemctl start rc-local.service

 

  • 서비스 상태를 다시 확인 
#> systemctl status rc-local.service
--------------------------------------------------
rc-local.service - /etc/rc.d/rc.local Compatibility
Loaded: loaded (/usr/lib/systemd/system/rc-local.service; static; vendor preset: disabled)
Active: active (exited) since 수 2022-11-16 20:13:37 KST; 5s ago
Process: 14156 ExecStart=/etc/rc.d/rc.local start (code=exited, status=0/SUCCESS)

 

3. 서버가 재부팅 되어도 실행되도록 설정을 변경합니다.

  • rc-local.service 서비스 상태 확인
#>systemctl list-unit-files | grep rc.local
--------------------------------------------------
rc-local.service static

systemctl list-unit-files | grep rc.local 명령으로 상태를 확인할 수 없는 경우 systemctl list-units --type=service |grep rc.local의  명령으로 실행해 보십시오.

 

  • 리부팅되어도 실행되게끔 서비스 설정을 enable 해줍니다.
#> vi /usr/lib/systemd/system/rc-local.service 
--------------------------------------------------

#  This file is part of systemd.
#
#  systemd is free software; you can redistribute it and/or modify it
#  under the terms of the GNU Lesser General Public License as published by
#  the Free Software Foundation; either version 2.1 of the License, or
#  (at your option) any later version.

# This unit gets pulled automatically into multi-user.target by
# systemd-rc-local-generator if /etc/rc.d/rc.local is executable.
[Unit]
Description=/etc/rc.d/rc.local Compatibility
ConditionFileIsExecutable=/etc/rc.d/rc.local
After=network.target

[Service]
Type=forking
ExecStart=/etc/rc.d/rc.local start
TimeoutSec=0
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target

 

rc-local.service 설정에 아래 내용을 추가하여 줍니다.

[Install]

WantedBy=multi-user.target

 

  • rc-local.service 파일 수정 후 rc-local.service를 enable 해줍니다.
#>systemctl enable rc-local.service

 

 

  • rc-local.service 서비스 상태를 다시 확인해 봅니다.
#>systemctl list-unit-files | grep rc.local
--------------------------------------------------

rc-local.service     enabled

rc-local.service의 상태가  static에서 enabled로 변경되었습니다.

 

4. rc.local 파일에 실행 명령어를 기입 후 서버 재실행하여 정상작동 확인.

rc-local.service의 상태가 enabled 정상적으로 작동된다면 자동 실행 프로그램을 rc.local 에 추가하여 자동 실행이 되는지 다시 재부팅하여 확인해 주십시오.

//rc.local에 ftp 서비스를 자동 실행 등록 예
#>echo '/usr/local/proftpd/sbin/proftpd' >> /etc/rc.d/rc.local

 


이상  centos7 에서도 rc-local.service를 이용해 자동 실행 등록을 할 수 있도록 하는 내용이였습니디.

개인적 서버 운영을 위한 메모임으로 서버의 상태에 따라 오작동이 발생할 수도 있으니 참고만 하여 주십시요.

반응형

댓글