Linux에서 bootime에서 Apache를 시작하려면 어떻게합니까?


32

Linux 상자의 소스에서 Apache 2를 설치했습니다. apachectl -k start잘 작동하지만 부팅시 Apache를 시작하려면 어떻게해야합니까?

이것은 Red Hat Linux 배포판에 있습니다 :

Linux <호스트 이름> 2.6.9-55.ELsmp # 1 SMP 금 4 월 20 일 17:03:35 EDT 2007 i686 i686 i386 GNU / Linux


1
어느 배포판?
ayaz 2016 년

답변:


46

init 스크립트를 적절한 실행 레벨에 추가하려고합니다. init 스크립트는 일반적 /etc/init.d/apache2으로 수동으로 실행 /etc/init.d/apache2 start하여 시작할 수있는 곳입니다.

젠투에서는 다음과 같이 씁니다.

rc-update add apache2 default

우분투 / 데비안에서는 다음과 같이 작동합니다.

sudo update-rc.d apache2 defaults

Red Hat Linux / Fedora / CentOS에서 약간의 인터넷 검색에서 다음을 보여줍니다.

chkconfig --add httpd

배포판마다 약간 씩 다르지만 아이디어는 일반적으로 동일합니다. 기본적으로 이러한 모든 명령은 /etc/init.d/에서 적절한 실행 수준 폴더로 심볼릭 링크를 만듭니다 /etc/.


1
대답을 주셔서 감사합니다. 올바른 방향으로 지적했습니다. 아래에 내가 한 일을 요약했습니다.
슬픔

소스에서 아파치를 빌드했다면 init 스크립트가 없을 것입니다. /etc/init.d/에 init 스크립트를 올바르게 설정하면 서비스로만 구성됩니다. t apache 2에 대해 잘 문서화 됨
Jaime Hablutzel

26

마침내 나를 위해 일한 것이 있습니다. 이것은 귀하가 루트 사용자라고 가정합니다.

  1. vi /etc/init.d/apache2 (아래 그림과 같이 편집)
  2. chmod 755 /etc/init.d/apache2
  3. chkconfig --apache2 추가
  4. chkconfig --list apache2 (작동하는지 확인)

/etc/init.d/apache2의 내용 :

#! / bin / bash
#
# apache2 Apache HTTP Server 시작 스크립트
#
# chkconfig : 3 85 15
# 설명 : Apache는 월드 와이드 웹 서버입니다. 봉사하는 데 사용됩니다 \
# HTML 파일 및 CGI.

/ usr / local / apache2 / bin / apachectl $ @

내 경우에는 3 인 / sbin / runlevel을 실행하여 실행 수준을 얻을 수 있습니다. 물론 내 경우에는 / usr / local / apache2 / bin / apachectl 인 apachectl 버전을 호출해야합니다.

다음 덕분에 :


나는 내 자신의 대답을 받아들이기를 정말로 싫어하지만 그것이 효과가있는 것입니다.
슬픔

이것이 바로 내가 필요한 것입니다! (/ usr / local / apache2에 2.2.27 Apache를 다시 컴파일하여 설치해야했습니다). 고마워
Christophe Muller

이 줄 "/ usr / local / apache2 / bin / apachectl $ @"이 실제로 httpd를 시작합니까? sudo chkconfig apache2 start 또는 sudo chkconfig apache2 on을 실행해야합니까?
ollala

8

디렉토리에 httpdinit 스크립트 가 있는지 확인하십시오 /etc/rc.d. 그렇다면 다음 명령을 실행하여 부팅시 httpd 서비스를 시작할 수 있습니다.

chkconfig --level 345 httpd on

init 스크립트가 없다면 /etc/rc.local파일을 apachectl -k start(Apache를 시작하는 명령)으로 추가하십시오 .


4

소스로 설치 했으므로 /etc/init.d/ 디렉토리에 init 스크립트가 설치되지 않습니다. apachectl 바이너리는 표준 init 스크립트 옵션과 호환되도록 설계되었으므로 래퍼 스크립트 (예 : ln -s / usr / local / sbin / apachectl /etc/init.d/)를 작성하는 대신 간단히 심볼릭 링크 할 수 있습니다. 아파치)

그런 다음 다른 게시물에 요약 된 절차에 따라 링크를 추가하여 올바른 런레벨에서 init 스크립트를 호출 할 수 있습니다.

인용 : 아파치 문서 http://httpd.apache.org/docs/2.2/invoking.html

부팅시 시작

시스템 재부팅 후 서버를 계속 실행하려면 시스템 시작 파일 (일반적으로 rc.local 또는 rc.N 디렉토리의 파일)에 apachectl에 대한 호출을 추가해야합니다. 그러면 루트로 Apache가 시작됩니다. 이 작업을 수행하기 전에 서버가 보안 및 액세스 제한에 맞게 올바르게 구성되어 있는지 확인하십시오.

apachectl 스크립트는 표준 SysV init 스크립트처럼 작동하도록 설계되었습니다. 인수 start, restart 및 stop을 사용하여 httpd에 대한 적절한 신호로 변환 할 수 있습니다. 따라서 종종 apachectl을 적절한 init 디렉토리에 링크 할 수 있습니다. 그러나 시스템의 정확한 요구 사항을 확인하십시오.


대답을 주셔서 감사합니다. 올바른 방향으로 지적했습니다. 아래에 내가 한 일을 요약했습니다.
슬픔

1

chkconfig-수준 345 httpd

런레벨 3,4,5에서 httpd를 시작합니다.

chkconfig --list는 모든 서비스와 현재 시작 런레벨을 보여줍니다. 345는 네트워크 서비스에 일반적입니다.


1
CentOS 6에서 다음과 같은 오류가 발생합니다. "chkconfig 쿼리에 대해 하나의 실행 수준 만 지정할 수 있습니다." 그러나 명령 끝에 "on"을 추가하면 ( "chkconfig --levels 345 httpd on") 매력처럼 작동했습니다.
akame

1

Red Hat Linux에는 현재 실행 레벨에서 시작할 서비스를 선택할 수있는 ntsysv라는 유용한 유틸리티가 있습니다. 를 사용하여 유틸리티를 시작할 때 편집 할 실행 레벨을 지정하십시오 --level.

아래로 스크롤하여 httpd로 스크롤 Space하여 왼쪽 상자에 별표가 표시되도록합니다. 그런 다음 Tab확인하십시오. Return저장하고 쉘로 돌아가려면을 누르십시오 .

기본적으로 거의 설치되는 것으로 나타났습니다. 나는 그것이 설치되지 않은 위치에 적이있다.

서비스 스크립트를 /etc/init.d에 복사 한 후 다음을 실행하여 서비스를 먼저 설치해야합니다.

chkconfig --add <script name>

1

그것은 당신의 리눅스 맛에 달려 있습니다. /etc/init.d/apache2 파일이 작성되었다고 가정하면 다음을 시도하십시오.

chkconfig -a apache2

또는

update-rc.d apache2 defaults

그들 중 하나가 작동해야합니다.


1
chkconfig 답변은 ​​Red-Hat와 같은 시스템 (예 : CentOS)에 대한 것이고 update-rc.d는 데비안과 같은 시스템 (예 : 우분투)에 대한 것입니다
Kyle Brandt
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.