강좌
클라우드/리눅스에 관한 강좌입니다.
리눅스 분류

SULINUX를 웹서버로 사용하기 1편

작성자 정보

  • 웹관리자 작성
  • 작성일

컨텐츠 정보

본문



제목 : SULINUX를 웹서버로 사용하기 1편




ㅇ 제작 : 리눅스포털(www.superuser.co.kr) 수퍼유저코리아 서버관리팀


ㅇ SULINUX  홈페이지 : www.sulinux.net

ㅇ 리눅스포털 홈페이지 : www.superuser.co.kr


1. 리눅스를 웹서버로 사용하기


웹서버란?

아파치 웹서버 환경설정

아파치 웹서버 운영방법

아파치를 이용한 웹 호스팅 서버스의 구현




1-1. 웹 서버란


웹서버는 인터넷에 홈페이지 서비스를 하기 위해 반드시 필요한 요소이다. 서버라는 개념은 물리적으로, 즉 흔히 서버 컴퓨터라고 하는 개념도 될 수 있고, 네트워크 서비스 프로그램 측면에서 보면 서비스 요청을 받아 들일 주닙를하고 있다가 요청된 서비스를 처리하는 프로그램도 서버가 된다.


이런 의미에서 웹서버는 하나의 프로그램이라고 볼 수 있다.


 ssh나 ftp도 웹서버와 마찬가지이다. 서버 컴퓨터에는 흔히 데몬이라고 하는 서버 프로세스(sshd, ftpd, httpd 등)가 서비스 요청에 항상 대기하고 있다. 예를 들어 ftp 같은 경우에는 21port로 frp 요청을 기다리고 있다가 요청이 들어오면 사용자 인증을 거친 뒤 ftp 홈디렉토리로 이동시켜주고 파일전송 요청을 처리해주는 역할을 한다. 웹서버 역시 이와 유사한 방식으로 운영된다.


웹서버로 가장 많이 사용되는 있는것이 Apache와 IIS 이다. Apache는 opensouce이며 가장 많이 사용되고 있는 웹서버이고, IIS는 MS사에서 제작된 Windows 전용 웹서버이다. SULinux는 APM_Install-tools을 이용하여 웹서버 구축을 아주 편리하게 제공하고 있다. 여기에 사용되는 웹서버는 Apache이며 몇가지 SULinux에서 제공하는 버전별 설치가 가능한다. 그럼 Apache에 관하여 알아보도록 하겠다.(Apache설치방법에 관해서는 본서의 APM_Install-tools부분을 참고하면 된다.)


1-2. 아파치 웹서버 환경설정


APM_install-tools를 통해 Apache를 설치하면 기본 설치 디렉토리는 /usr/local/apache가 된다. 이렇게 설치된 Apache의 환경설정 파일 및 구동 파일은 각각 /usr/local/apache/conf와 /usr/local/apache/bin 으로 구성된다.


/usr/local/apache/bin디렉토리에는 Apache를 구동시키거나 기타 Apache관련 실행 파일이 들어있다. /usr/local/apache/conf 디렉토리에는 Apache의 환경 설정을 할수 있는 파일들이 존재한다. 그 환결 설정 파일중에 httpd.conf파일이 Apache를 구성하는 가장 핵심 환경설정 파일이다.

httpd.conf파일 내부 내용에 관해 알아보도록 하겠다.




1-2-1. 아파치 구성


아파치를 성공적으로 설치했다면 /usr/local/apache에 여러 가지 디렉토리가 생성된다.

우선 기본적인 디렉토리만 나열했다.


디렉토리명

설    명

/usr/local/apache/bin

아파치 사용시에 필요한 유틸리티가 들어 있다.

/usr/local/apache/cgi-bin

cgi 스크립트가 있는 곳이다.

/usr/local/apache/conf

아파치 서버의 여러 가지 설정 파일이 있다.

(httpd.conf)

/usr/local/apache/icons

아파치 서버에 사용되는 아이콘이 들어 있다.

/usr/local/apache/logs

아파치 서버 사용시 발생하는 여러 가지 log가 들어있다.

/usr/local/apache/htdocs

아파치 서버 기본 웹페이지 데이터가 들어있다.


/conf 안에 httpd.conf 파일의 경우 소스에서 다시 copy해서 사용하고, 이전 파일은 백업해 둔다. 나중이라도 설정 잘못으로 아파치를 다시 인스톨하는 일이 없도록 한다.


httpd.conf 파일은 아파치 전반에 관한 설정이 들어 있고 간단히 옵션만 고쳐서 바꿀 수 있다. 고치고 나면 당연히 데몬을 재시작(restart)해야 한다. 서두 부분은 이 파일의 내용을 담고 있다. 먼저 이 파일의 내용은 총 3가지로 구분할 수 있다.


- 아파치를 전반적으로 제어하는 부분

 

- 가상호스트에서 처리되지 않는 요청을 모두 처리하는 주서버 또는 기본 서버의 작동을 제어하는 부분.

 

- 다른 IP와 호스트 이름을 처리하는 가상호스트 설정 부분


아파치 1.3.4 이전 버전의 경우 3가지 파일 (httpd.conf, srm.conf, access.conf) 등의 파일이 존재했지만, 지금은 httpd.conf 파일로 통합되어진 상태이다. 하지만 2.0.x버전으로 아파치 버전이 올라가면서 보안과 관리적 측면의 이유로 다시 파일을 나누어 관리방향으로 우회하고 있는 추세이지만 현제 가장 많이 사용하고 있는 아파치 버전에서는 httpd.conf로 통합된 형태를 아직 유지하고 있다.

 httpd.conf 파일은 대체적으로 기본적인 상태에서 사용해도 된다. 그러나 APM 과 CGI를 제대로 구현하기 위해서는 그것들에 대한 설정을 해야 한다.


설정 파일에는 다음과 같은 내용이 있다. 대부분 설정되어 있는 대로 사용해도 서버 사용은 가능하다. 세부 설정 내용 없이 주요 내용의 개념을 설명한다.


① 아파치 서버의 전반적인 제어(Section 1)

- #ServerType - 서버의 시작을 어떻게 할 것인지 설정하는 부분이다. 설정에는 두 가지타입이 있는데 inetd 타입과 Standalone타입이 그것이다. 대부분의 경우 Standalone 방식을 사용한다. SULinux에서도 기본 Standalone을 지원하고 있다.


#ServerRoot - 이 설정은 서버의 설정 , 에러, 로그 파일이 기록되는 디렉토리를 말한다.  /usr/local/apache 가 디폴트 경로이다.


#Lockfile -

 이 설정은 아파치 컴파일을 USE_FCNTL_SERIALIZED_ACCEPT 나

USE_FLOCK_SERIALZED_ACCEPT 의 옵션으로 했을 경우 잠금 파일의 경로를 설정할 때 사용한다. 디폴트는 사용 안함으로 설정되어 있다. 로그 디렉토리가 NFS 마운트된 경로로 되어야 이 값을 바꾸어 준다.


#PidFile - 웹서버가 시작할 때 프로세스ID 번호를 기록하는 파일이다.


#ScoreBoardFile - 내부 서버 프로세승의 정보를 저장하는 파일이다. 그 결로명과 같이 적혀져 있다. 특정 아키텍처에서 필요할 경우 서로 다른 아파치 웹서버 데몬이 같은 파일을 공유하지 않아야 한다.


#ResourceConfig / AccessConfig - 아파치 1.3.4 이전의 버전에서는 srm, access conf 파일을 httpd.conf 과 함께 읽었지만 이후엔 httpd.conf 파일에 한데 뭉쳐서 관리하기 편해졌다.


#Timeout - 클라이언트가 서버에 요청한 정보를 받을 때 소요되는 시간을 전해준다. 디폴트는 300으로 설정되어져 있고 초단위로 설정을 한다. 서버 성능에 따라 적당한 값을 적어 주면 효율적이다.


#KeepAlive - 기본값이 on으로 되어 있다. 그 이유는 성능저한 때문인데, 자식 프로세스가 한 가지 일만 처리하고 죽는 것이 아니라 다음의 일도 처리함으로써 성능 향사을 꾀하는 것이다.


#MaxKeepAliveTimeout - KeepAlive가 설정되어 있을때, 클라이언트의 요청을 몇 번이나 처리하고 다시 처음 상태로 돌아가는지를 설정한다. 만약 이 설정이 ‘0’일 경우 클라이언트가 접속을 끊을 때까지 계속 연결 상태로 있는다(대부분의 경우 높은 성능 향상을 위해 높은 값을 적어준다.).


#KeepAliveTimeout - KeepAlive가 설정되어 있을 경우 클라이언트의 요청이 정해진 초안에 없을 경우 접속을 끊는다. 서버에 맞게 초를 바꾸어 주면 된다.


#MinSpareServer, MaxSpareServer - 서버 풀을 설정하는 부분이다. 여기 설정된 기본값은 대부분의 서버에 적합한 상태이다. 즉, 클라이언트의 요청이 많은 사이트라면 적당히 이 값을 증가 또는 감소해서 사용해야 한다. 아파치는 최소값과 최대값을 정해줌으로써 클라이언트의 요청이 많은 경우든 작은 경우든 쉽게 프로세스를 늘리고 줄일 수 있도록 하는 것이다. 즉, 아파치는 클라이언트이 요청이 적을 경우 또는 최소 여유 서버의 개수를 맞추도록 노력한다. 최대 값보다 프로세스가 많을 겨우라면 자동적으로 최대 여유 서버의 개수에 맞추어 준다.


#StartServer - 아파치 서버를 실행할 때 같이 생성될 여분의 프로세스의 개수를 정한다. 기본값은 5이다.(6개 생성된다.)


#MaxClients - 동시에 아파치 서버에 접속할 수 있는 클라이언트의 개수를 설정한다. 이 값을 늘리거나 줄일 경우 MinSpare, MaxSpareServer, StartServer의 값도 조정해 주어야 한다. 즉, 최대값을 넘어설 클라이언트의 요청은 앞의 요청이 끝날때까지 대기 상태로 있어야 한다. 이 설정은 아파치 서버가 많은 자원을 낭비해 서버 부하가 생기는 것을 막기 위해 사용된다.


#MaxRequestsChild - 각각의 자식 프로세스가 죽기 전까지 처리할 수 있는 요청수를 설정 한다. 대부분의 시스템이 서는 하나의 프로세스가 오랫동안 사용되면 메모리 E는 자원 누출 현상이 발생할 수 있으므로 이 프로세스는 자동으로 제거된다. 하지만, 솔라리스 운영체제의 경우 이 설정이 필요하다.


#Listen - 아파치를 특정 IP 또는 포트와 결합시킬 경우 사용한다.


#BindAddress - 이 옵션을 사용해서 가상 호스트를 지원 할 수 있다. 옵션에는 ‘*’, ‘IP address', '인터넷 도메인 이름’을 사용할수 있다.


#Dynamic Shared Object(DSO) - DSO(동적 공유 객체)를 사용하기 위해서 모듈을 지시하는 설정이다. DSO의 작동 방식을 보려면 아파치 1.3 배포판의 README.DSO 파일을 참고하기 바란다. httpd 바이너리에 내장된 모듈 목록을 확인하려면 ‘http -l'을 실행한다. 모듈 적재의 순서는 중요 사항이므로 아무렇게나 순서를 바꾸면 안된다.


#ExtendedStatus - 'server-status' 가 호출되었을 때 자세한 서버 상태 정보를 만들 것인지 여부를 설정한다. Off일 경우 기본적인 사항의 정보만 생성한다.



② 아파치의 주 서버 설정(Section 2)


가상호스트에서 처리되지 않는 요청을 모두 처리하는 주 서버 또는 기본 서버의 작동을 제어하는 부분이다.


#Port - 독립형 서버가 대기하는 포트를 설정한다. 포트 번호가 1023번 보다 낮을 경우 처음 root 권한으로 httpd가 실행되어야 한다. 기본적으로 설정된 포트 외에 다른 포트를 설정함으로써 일반 계정 유저도 httpd를 운영할 수 있다.


#User, Group - 독립형 서버에서 사용되며, 일반적으로 서버에서 작업 프로세스는 nobody로 설정해 준다. 즉, 루트로 설정하지 않는다. 보안 때문에 이렇게 설정을 하는 것이고, 만약 nobody로 설정된 상태라면 텔넷으로의 접근 또한 막아야 한다.


#ServerAdmin - 서버에 문내가 생겼을 경우 메일을 보낼 주소를 적어주는 곳이다. 이 주소는 에러 문서와 같이 서버가 생성하는 페이지에 나타난다.


#ServerName - 만약 등록된 DNS를 가지고 있다면 그것을 적어주면 된다. 만약 클라이언트에 보낼 서버 이름이 다를 경우 호스트의 실제 이름이 아닌 WWW를 사용하게 할 수도 있다(IP를 입력해도 된다). 만일 DNS가 존재하지 않는 것이라면 개인 홈페이지 서비스에도 영향을 준다. 그러한 이유 때문에 이 설정은 유의해야 된다.


#DocumentRoot - 기본적인 html 또는 php 등의 관련 문서의 기본 디렉토리를 설정한다.


#Directory 옵션 - 각각의 디렉토리에 관한 권한 등의 려러가지 설정을 하는 곳이다. <Directory “디렉토리”> </Directory>로 설정한다. 여기에는 여러 가지 옵션이 주어지는데, 차례로 보도록 한다.


옵션의 사용

종 류

설    명

None

옵션을 주지 않는다.

All

모든 옵션을 준다.

Indexes

해당 디렉토리 안에 DirectoryIndex 지시자 부분의 파일이 없을 경우, 디렉토리와 파일들을 목록화해서 보여준다.

Includes

Server Side Includes를 가능하게 한다.

FollowSymLinks

심볼릭 링크로의 이동을 가능하게 한다.

ExecCGI

CGI 프로그램을 실행 가능하게 한다.

AllowOverride [옵션]

None일 경우 .htaccess 내용이 httpd.conf의 옵션에 의해 효력이  없어진다(해당 디렉토리 안에 .htaccess 파일이 존재할 경우). 즉, httpd.conf 설정의 어느 부분을 무시할 것인지의 여부를 설정한다.

Order [옵션]

해당 디렉토리에 대한 IP, DNS 필터링의 순서를 설정한다.


#UserDir - 개인 홈페이지 서비스를 위한 개인 홈페이지 디렉토리 설정 부분이다. 즉, 개인의 디렉토리에 public_html 디렉토리를 만들면 홈페이지 서비스를 받을 수있다.(예, http://Server_IP/~username 위의 디폴트 디렉토리명을 다른 이름으로 해주면 그곳에서 홈페이지 서비스를 받는다.)


#UserDir 옵션 - 개인 홈페이지 디렉토리에 대한 접근 권한 등을 설정한다. <Limit> </Limit>로 각각의 접근을 제어할 수 도 있다. 옵션들은 앞 부분에서 설명한 대로 하면 도니다. 물론, 사용자 인증도 할 수 있다.


#DirectoryIndex - 브라우저가 아파치 서버로 처음 접근했을 때 보여줄 문서를 설정한다. 한 개 이상 나열이 가능하고, 앞에 설명한 디렉토리 설정에서 Option indexes로 되어 있고, DirectoryIndex 지시자에 표시한 파일이 디렉토리에 없을 경우 해당 디렉토리와 파일들은 목록화되어 브라우저에 나타난다.


#AccessFileName - 각각의 디렉토리의 접근을 제어하는 정보를 가진 파일 이름이다. 즉, 이 파일을 제어하려는 디렉토리에 넣어 사용한다. 앞의 디렉토리 지시자와 연관하여 본다.


#Htaccess 파일에의 접근 - <Files 파일명> </Files>로 설정을 하며, 사용되는 옵션은 앞에서 설명한 것과 같다. 그리고 파일명을 .htaccess가 아닌 다른 이름으로 앞의 AccessFileName에서 바꾸었다면 그 이름을 적어줘야 된다.


#CacheNegotiatedDocs - 아파치에 기본적으로 협상된 문서에 대해서는 <Pragma: no-cache>내용을 보낸다. 즉, 프록시 서버들이 문서를 캐시하지 못하게 요청한다. #을 제거하고 옵션을 실행하면 모든 프록시가 문서를 캐시할 수 있게 한다.


#UseCanonicalName - 아파치 1.3 버전에서 새롭게 등장한 기능으로, 이 옵션이 켜져 있을 경우 자신의 URL(응답이 오는 서버에 되돌려 줄 URL)을 만들 필요가 있을 때마다 공식적인 이름을 만들기 위해 ServerName과 Port를 사용한다. 그러나 off로 설정할 경우 아파치 서버는 그것이 가능한 때, 공식적 이름을 만들기 위해 클라이언트가 보냈던 hostname:port를 사용할 것이다. 이것은 EH한 CGI 스크립트의 SERVER_NAME와 SERVER_PORT에도 영향을 준다.


#TypeConfig - mime.type파일의 위치를 설정한다.


#DefaultType - 서버에서 사용되는 문서 중 MIME 타입으로 알 수 없는 문서에 대해 적용할 기본 MIME 타입을 설정한다. 기본값은 text/plain이며, 이 값은 주로 서버에 문서 파일이 많을 경우에 사용한다.


#mod_mine_magic - mod_mine_magic 모듈을 사용할 경우 해당 파일의 내용으로 파일 타입 힌트를 얻는 역할을 한다. 이것을 사용하기 위해서는 해당 모듈을 탑재해야 한다. <IfModule> </IfModule>지시자는 이 모듈이 있을 때 적용이 가능하다.


#HostnameLookups - 아파치는 클라이언트의 요청을 받아들이면서 IP를 확인하고 확인한 주소를 DNS 서버에 다시 의뢰하는 작업을 하기 때문에 상당한 시간을 요하게 된다. 기본값인 off로 두고 사용하길 권장한다.


#Errorlog - 에러를 기록할 파일의 위치를 적어준다. <VirtualHost> 지시자에서 ErrorLog 설정을 하지 않았다면 여기서의 설정을 따른다. 로그 파일의 경우는 계속 용량이 증가하기 때문에 수시로 용량을 줄여야 한다.


#LogLevel - 로그 메시지의 크기를 제어하는 부분이다. 옵션에는 debug, info, notice, warn, error, crit, alert, emerg 등이 있다.


#LogFormat - CustomLog 지시자에서 사용할 별명을 정의한다.

항목

설   명

 %h

호스트명

 %l

리모트 로그 이름

 %u

사용자 인증에 사용된 유저명

 %t

시간

 %r

요청한 내용의 첫 번째 줄

 %s

서버 상태

 %b

전송량(헤더 포함)

 %{헤더}

요구된 헤더 내용

 %U

요구한 URL


#CustomLog - access_log 파일의 우치를 설정한다. <VirtualHost> 지시자에서 이 설정 부분이 없을 경우 여기서 설정한 위치로 모두 저장된다. 가상 호스트별로 따로 접근 로그 파일을 만들고 싶으면 이 설정을 각각의  <VirtualHost> 지시자 안에 넣어줘야 한다.


#agent_log, referrer_log - 만약 agent_log, referrer_log파일을 생성하고자 할 경우 #을 제거한다.


#single logfile - 만약 access, agent, referrer 정보를 하나의 파일에 모두 저장하기를 원한다면 combined 옵션을 이용한다.


# ServerSingnature - 아파치 서버가 생성하는 페이지(에러문서, FTP 디렉토리 list, mod_status, mod_info output, CGI 생성 문서 제외)에 서버 버전과 가상호스트 이름을 포함하는 행을 넣는 것을 설정한다. 옵션에는 On | Off | Email 등이 있고, Email의 경우 ServerAdmin으로의 mailto: 링크도 포함된다.


#Alias - 별칭을 설정하는 부분이다. 별칭의 설정은 Alias /별치/“path"하면 된다. 별칭 사용시에 별칭 다음에 ‘/’를 적어주어 별칭을 표현할 때(별칭) 이렇게 표현해야 된다. 디렉토리 설정은 앞에서 사용한 옵션을 사용하면 된다. 별칭은 하나이상 여러개 만들어 사용 가능하기 때문에 필요한 만큼 만들어 사용하면 된다. 물론, 주의할 부분은 별칭 다음의 ‘/’를 적어 주어야 한다는 것이다. 왜냐하면 서버는 URL에 ‘/’이 있어야 처리하기 때문이다.


#ScriptAlias - 서버 스크립트를 포함한 디렉토리를 제어하는 설정이다. Alias와 설정하는 부분은 같지만, 이 설정은 가리키는 디렉토리 안의 문서를 실행하는 프로그램으로 인식하여 실행하게 된다. CGI 알리아스 설정시 디렉토리 설정 path부분은 ScriptAlias로 별칭 처리된 실제 CGI 디렉토리로 설정해야 된다.


#Redirect - 서버에 존재하지 않는 문서로 접근이 올 경우 현재 존재하는 문서로의 위치를 바꿔주는 설정이다. 즉, 옛날에 사용하던 URL로 접속하는 사용자를 위해 새로운 URL로 이동하게 해주는 것이다. 사용 방법은 ‘Redirect 옛날URL 새로운URL‘이다.


#IndexOptions - DirectIndex 지시사에서 표시한 파일이 존재하지 않을 경우 디렉토리와 파일들의 목록을 보여줄때 디렉토리와 파일의 속성에 따른 아이콘을 사용할지 여부를 설정한다.


#AddIcon - IndexOptions에서 FancyIndexing으로 설정 되어 있을 경우 사용되며, 각각의 확장자에 따른 아이콘의 모양을 정해준다.


#DefaultIcon - AddIcon에서 설정되지 않은 기본 아이콘을 설정한다. 디폴트 아이콘은 unknown.gif이다.


#AddDescription - 이 설정은 서버 자동 생성 인덱스파일의 뒤에 간단한 설명을 추가할 때 사용한다.(FancyIndexing설정일 때 가능하다). 방법은 AddDescription ‘설명’ 파일명이다.


#ReadmeName, HeaderName - ReadmeName은 서버가 디렉토리 목록 뒤에 붙여 넣을 README 파일의 이름을 설정하며, HeaderName은 디렉토리 인덱스 앞에 내용을 넣을 파일의 이름을 설정한다. 서버는 처음 name.html 파일 찾고, 존재하면 그 내용을 포함한다. 만약 파일이 존재하지 않는다면 name.txt을 찾고 txt 내용으로 포함한다.


#IndexIgnore - DirectoryIndexing에서 목록에서 제외할 파일명을 설정한다. 셸 스타일과 와일드카드 사용이 가능하다.


#AddEncoding - 특정 브라우저(Mosaic/x 2.1+)가 자료를 받으면서 압축을 풀 수 있도록 해준다. 이것은 모든 브라우저가 가능한 것은 아니다.(FancyIndexing의 Add 지시자와 지금부터 나열하는 Add 지시자와는 관련이 없다,).


#AddLanguage - 문서의 언어를 표시한다. 즉, 내용 협상관정을 통해 브라우저가 이해하는 언어의 문서를 제공할 수 있다. 폴란드어의 경우 펄과 구분하기 위해 pl.po로 표기한다.


#LanguagePriority - 문서 문장을 읽어 들이는 동안 여러 가지 언어가 존재할 경우, 우선되는 언어를 나열해 준다. 설정은 내림차순으로 나열한다.


#AddType - php 확장자를 사용하기 위해서는 꼭 필요한 설정 부분이다. 즉, mime.types의 수정 없이 mime의 설정을 가능하게 해준다. 아파치 1.3.27일 경우는 php를 설정하는 부분이 따로 나와 있다. 그 이전 버전일 경우 위와 같이 설정을 하면 된다. 해당  확장자에 대해서는 특정 타입으로 실행되게 하는 것이다. 여러분들의 목적은 php를 사용하는 것이므로 알맞게 고치면 된다(php3.htm). 이 부분은 .htm 확장자를 php3타입으로 실행한다는 말이다.

1-3. 아파치 웹서버 운영방법


1-3-1. 아파치 웹서버의 실행


SULinux에 설치된 아파치 웹서버를 시작하려면 간단히 /etc/init.d/httpd start라고 치면 끝이다. 이렇게 실행하여도 httpd 데몬이 정상동작을 하지 않는다면 /etc/init.d/httpd configtest라는 명령을 내려서 아파치 환경설정파일인 httpd.conf의 문법 이상을 체크해본다. 체크시 "Syntax OK"라는 메시지가 떨어지면 정상 문법이므로 다른 문제를 찾아야한다.


만약 "Syntax OK"라는 메시지가 나오지 않고 다른 메시지가 나왔다면 그 부분의 메시지를 유심히 읽고 그 지시에 따라 수정작업을 한 이후에 다시 /etc/init.d/httpd start하면 정상동작됨을 확인 할수 있을 것이다. 만약 "Syntax OK"라는 메시지 떨어졌음에도 동작을 하지 않을 경우가 있는데 이때는 아파치 로그 파일을 참고하여 분석하여 보아야한다.

아파치 로그 파일은 /usr/local/httpd/error_log파일을 참고하면 왜 웹서버가 실행되지 않는지에 대해 알 수 있을것이다.


1-3-2. 아파치 웹서버의 종료와 재시작


아파치 웹서버의 작동을 중지하고 싶으면 /etc/init.d/httpd stop 명령을 내리면 중단한다. 다시 기동하는 방법은 stop 대신 start 옵션을 넣으면 된다.(/etc/init.d/httpd start)

httpd restart하는 방법은 /etc/init.d/httpd restart하면된다.


매번 시스템을 리부팅할때 마다 위의 작업을 수동으로 진행해야 한다면 피곤한 일일것이다. 그럼 아파치 서버를 자동으로 시작하게 하는 방법을 알아보자. 아파치 서버를 시스템이 부팅될 때마다 자동 시작되게 하려면 간단히 두가지 방법이 있다.


첫번째 방법은 /etc/rc.d/rc.local 이란 시스템 부팅시 참고하는 파일에 수동 작업 명령을 입력해놓는 방법이다.


두번째 방법은 ntsysv라는 명령어를 이용하여 httpd라는 데몬 앞에 부팅시 자동 시작할수 있게 체크만 해주면 된다.


좀더 자세히 알아보도록 하겠다.


먼저 /etc/rc.d/rc.local을 열어 맨 아래쪽 줄에 /etc/init.d/httpd start 라는 명령어 한줄만 넣어주면 된다.


PIC3E7.gif

[그림] rc.local에 httpd 시작명령어 추가모습


두번째 방법은 조금 복잡할수있다. 먼저 ntsysv명령어는 RedHat에서 제작한 프로그램이여서 RedHat관련 설정내용을 /etc/init.d/httpd의 실행파일에 아래 내용을 추가해주어야 한다.


# Comments to support chkconfig on RedHat Linux

# chkconfig: 2345 64 36

# description: A very fast and reliable httpd engine.


이 내용은 주석문으로 httpd파일의 앞부분에 들어가야 한다. 실제 이 내용이 들어가 있는 화면을 보자.


PIC3E8.gif

[그림] 주석문이 들어간 httpd 파일내부


이렇게 등록한수 ntsysv 명령어를 실행하면 아래와 같은 화면이 나타납니다.


PIC3E9.gif

[그림] ntsysv 실행화면


위와 같은 화면에서 "[ ] httpd"라는 항목을 찾아 스페이스바를 눌러 '[ ]'을 '[ * ]' 모습으로 바꾼 다음 "확인"버튼을 눌러 설정하게 되면 이제 부터 시스템이 리부팅되더라도 자동 아파치 웹서버가 가동되게 된다.



관련자료

댓글 0
등록된 댓글이 없습니다.

공지사항


뉴스광장


  • 현재 회원수 :  60,042 명
  • 현재 강좌수 :  35,846 개
  • 현재 접속자 :  110 명