본문 바로가기

WEB/Apache,OHS

[Apache] 하나의 Apache 서버 엔진으로 다중 프로세스 기동하기

#. 참고 글

https://waspro.tistory.com/399

https://opentutorials.org/course/3647/23840

 


 

 

#. httpd.pid 파일

apache 서버 기동 시 {APACHE_HOME}/logs 디렉토리 하위에 httpd.pid 파일이 생성된다.

해당 파일은 apache 서버 프로세스의 pid 정보를 담고 있는 파일로,

각각의 프로세스 마다 unique 해야 한다.

 

아래 이미지는 httpd.conf 파일의 상단부 내용.

하나의 Apache 서버 엔진을 가지고서 다수의 프로세스를 기동하기 위해서는

PidFile 옵션을 명시하여 각 프로세스 마다 httpd.pid 파일 생성 위치를 서로 다르게 해야 한다고 되어있다.

 


 

#. 서버 인스턴스 디렉토리 구성

{APACHE_HOME} 디렉토리에 servers 라는 디렉토리를 생성하였음.

 

기동하고자 하는 apache 프로세스 개수 만큼 디렉토리를 생성하였음.

1번 업무 인스턴스 2개

2번 업무 인스턴스 2개

 

{APACHE_HOME}/conf 디렉토리를 전체 copy 하여 인스턴스 디렉토리 내에 추가한다.

프로세스 기동/정지 스크립트도 추가한다.

 


 

#. 기동/정지 스크립트

기동/정지 명령어 작성 방법은 다음과 같다.

{APACHE_HOME} 파라미터는 apache 서버 엔진 디렉토리를 의미하며,

{SERVER_HOME} 파라미터는 각각의 서버 인스턴스의 홈 디렉토리를 의미한다.

(start)
{APACHE_HOME}/bin/apachectl -f {SERVER_HOME}/conf/httpd.conf -k start

(stop)
{APACHE_HOME}/bin/apachectl -f {SERVER_HOME}/conf/httpd.conf -k stop

---------------------------------------------------

(예시)
/app/apache/apache_2454/bin/apachectl -f /app/apache/apache_2454/servers/server1_1/conf/httpd.conf -k start
/app/apache/apache_2454/bin/apachectl -f /app/apache/apache_2454/servers/server1_1/conf/httpd.conf -k stop

 

생성 완료한 스크립트 예시

 


 

#. httpd.conf 수정

PidFile 옵션을 사용하여 httpd.pid 파일을 생성할 위치를 지정한다.

httpd.pid 파일을 서버 엔진 디렉토리 내부에 위치시키는 것 보다는

ErrorLog, AccessLog 파일들과 함께 로그 파일 디렉토리에 같이 보관하는 것이 유지보수 상 용이할 듯.

 

로그 파일 디렉토리에 각각의 인스턴스 당

ErrorLog 디렉토리

AccessLog 디렉토리

httpd.pid 파일이 생성될 디렉토리를 생성해준다.

 


 

#. 서버 프로세스 기동

프로세스를 기동하면

 

httpd.conf 파일에 PidFile 옵션으로 명시한 경로에 httpd.pid 파일이 생성된다.

다른 인스턴스도 이와 같이 서로 다른 경로에 httpd.pid 파일이 생성되도록 구성하면 된다.