http://www.superuser.co.kr/superuserboard/view.html?id=59&code=linuxcom&start=50&position=


httpd

여러분들도 아시겠지만 httpd는 리눅스 명령어는 아니라 아파치의 데몬실행파일입니다. 
하지만 리눅스가 웹서버로 사용될때에는 거의 필수적으로 사용되는 것이므로 서버관리자는 꼭 확인해 보아야할 파일입니다.

따라서 필자는 리눅스 서버관리자가 알아야하는 명령어에 포함시키고 이를 설명하는 것입니다.

또한 여기서 설명되는 아파치는 RPM버전의 아파치가 아니라 소스를 컴파일하여 사용하는 아파치를 대상으로 한 것입니다.

그리고 아파치의 설치위치는 /usr/local/apache임을 알려둡니다.


사용옵션

  -D name          : <IfDefine name> 지시자에서 사용되는 이름을 정의함.
  -d directory     : 아파치실행시에 아파치의 Root 경로를 따로 지정해 줄 수 있음.
  -f file          : 아파치 설정파일을 직접 지정해 줄 수 있음.
  -C "directive"   : 아파치 설정파일을 읽기 전의 process directive
  -c "directive"   : 아파치 설정파일을 읽은 후의 process directive
  -v               : 아파치의 버전을 보여줌.
  -V               : 컴파일시 사용했던 옵션을 보여줌.
  -h               : httpd 실행시 사용할 수 있는 옵션들의 도움말을 보여줌.
  -l               : 컴파일시 사용했던 모듈들을 보여줌.
  -L               : 설정가능한 지시자를 보여줌.
  -S               : 설정되어있는 가상호스트를 보여줌.
  -t               : 설정파일(httpd.conf)파일의 문법적인 체크를 할 수 있음.
  -T               :  DocumentRoot 항목체크는 제외하고 설정파일의 문법적인 테스트함.


사용예 #1

설정파일을 지정하여 아파치를 실행합니다. 
아파치는 아파치 실행시크립트인 apachectl을 이용하여 실행을 시킵니다. 
apachectl은 기본위치에 존재하는 httpd.conf을 기본으로 사용하여 아파치를 실행합니다.

여기서 설명하는 -f옵션은 기본 설정파일이 아닌 다른 아파치설정파일을 이용하여 아파치를 실행시키고자 할때에 사용하는 것입니다.

주로 하나의 아파치에 두개이상의 설정파일을 용도별로 사용하고자할때 사용합니다.

다음은 /usr/local/apache/conf2/httpd.conf 아파치설정파일을 이용하여 아파치를 실행하는 예입니다.

[root@host3 bin]# ./httpd -f /usr/local/apache/conf2/httpd.conf
[root@host3 bin]# 
[root@host3 bin]# ps -ef | grep httpd
root     32170     1  0 21:35 ?        00:00:00 ./httpd -f /usr/local/apache/conf2/httpd.conf
nobody   32171 32170  0 21:35 ?        00:00:00 ./httpd -f /usr/local/apache/conf2/httpd.conf
nobody   32172 32170  0 21:35 ?        00:00:00 ./httpd -f /usr/local/apache/conf2/httpd.conf
nobody   32173 32170  0 21:35 ?        00:00:00 ./httpd -f /usr/local/apache/conf2/httpd.conf
nobody   32174 32170  0 21:35 ?        00:00:00 ./httpd -f /usr/local/apache/conf2/httpd.conf
nobody   32175 32170  0 21:35 ?        00:00:00 ./httpd -f /usr/local/apache/conf2/httpd.conf
[root@host3 bin]#

 

사용예 #2

-d옵션은 홈디렉토리(ServerRoot)를 지정하여 아파치를 실행하고자 할 때 사용합니다. 
즉, 아파치 실행시에 서버루트(ServerRoot)를 지정하여 실행시킵니다.

[root@host3 bin]# ./httpd -d /usr/local/apache
[root@host3 bin]# 
[root@host3 bin]# ps -ef | grep http
root     32184     1  3 21:36 ?        00:00:00 ./httpd -d /usr/local/apache
nobody   32185 32184  0 21:36 ?        00:00:00 ./httpd -d /usr/local/apache
nobody   32186 32184  0 21:36 ?        00:00:00 ./httpd -d /usr/local/apache
nobody   32187 32184  0 21:36 ?        00:00:00 ./httpd -d /usr/local/apache
nobody   32188 32184  0 21:36 ?        00:00:00 ./httpd -d /usr/local/apache
nobody   32189 32184  0 21:36 ?        00:00:00 ./httpd -d /usr/local/apache
[root@host3 bin]#


사용예 #3

-v옵션은 현재 실행중인 아파치의 버전과 컴파일된 시간을 확인해 줍니다. 
아래의 예를 보면 현재 실행중인 아파치의 버전이 1.3.28이라는 것과 컴파일된 시간이 2003년 10월 1일 오후 17시라는 것을 알려주고 있습니다.

[root@host3 bin]# ./httpd -v
Server version: Apache/1.3.28 (Unix)
Server built:   Oct  1 2003 17:00:20
[root@host3 bin]#


사용예 #4

-V옵션은 아파치를 컴파일하여 설치한 설정내용을 확인시켜줍니다. 
아래의 예를 보시면 아파치의 기본적인 설치내용과 설치위치등을 확인할 수 있습니다.

[root@host3 bin]# ./httpd -V
Server version: Apache/1.3.28 (Unix)
Server built:   Oct  1 2003 17:00:20
Server's Module Magic Number: 19990320:15
Server compiled with....
 -D HAVE_MMAP
 -D HAVE_SHMGET
 -D USE_SHMGET_SCOREBOARD
 -D USE_MMAP_FILES
 -D HAVE_FCNTL_SERIALIZED_ACCEPT
 -D HAVE_SYSVSEM_SERIALIZED_ACCEPT
 -D SINGLE_LISTEN_UNSERIALIZED_ACCEPT
 -D DYNAMIC_MODULE_LIMIT=64
 -D HARD_SERVER_LIMIT=1024
 -D HTTPD_ROOT="/usr/local/apache"
 -D SUEXEC_BIN="/usr/local/apache/bin/suexec"
 -D DEFAULT_PIDLOG="logs/httpd.pid"
 -D DEFAULT_SCOREBOARD="logs/httpd.scoreboard"
 -D DEFAULT_LOCKFILE="logs/httpd.lock"
 -D DEFAULT_ERRORLOG="logs/error_log"
 -D TYPES_CONFIG_FILE="conf/mime.types"
 -D SERVER_CONFIG_FILE="conf/httpd.conf"
 -D ACCESS_CONFIG_FILE="conf/access.conf"
 -D RESOURCE_CONFIG_FILE="conf/srm.conf"
[root@host3 bin]#


사용예 #5

-l옵션은 아파치에 설치되어 현재 사용가능한 아파치모듈들 확인시켜 줍니다. 
주로 운용중인 아파치모듈을 확인하고자 할때 사용합니다.
즉, 필요한 모듈이 아파치에 설정되어 있는가를 확인할 수 있습니다.

간단한 예로서 아래 결과의 맨 아래에 있는 mod_php4.c를 보면 현재 아파치에는 php4버전이 모듈로 들어있는 것을 알 수 있습니다.

[root@host3 bin]# ./httpd -l       
Compiled-in modules:
  http_core.c
  mod_env.c
  mod_log_config.c
  mod_mime.c
  mod_negotiation.c
  mod_status.c
  mod_include.c
  mod_autoindex.c
  mod_dir.c
  mod_cgi.c
  mod_asis.c
  mod_imap.c
  mod_actions.c
  mod_userdir.c
  mod_alias.c
  mod_access.c
  mod_auth.c
  mod_setenvif.c
  mod_php4.c
[root@host3 bin]#


사용예 #6

-L옵션은 현재 아파치의 아파치 설정지시자(configuration directives) 확인할 수 있습니다. 
아파치에는 많은 설정지시자가 있으며 아래 결과는 그 일부분입니다.

만약 특정 지시가를 확인코자 한다면 "./httpd -L | grep 지시자명"과 같이 사용하시면 됩니다.

[root@host3 bin]# ./httpd -L
<Directory (http_core.c)
        Container for directives affecting resources located in the specified directories
        Allowed in *.conf only outside <Directory>, <Files> or <Location>
</Directory> (http_core.c)
        Marks end of <Directory>
        Allowed in *.conf only inside <Directory>, <Files> or <Location>
<Location (http_core.c)
        Container for directives affecting resources accessed through the specified URL paths
        Allowed in *.conf only outside <Directory>, <Files> or <Location>
</Location> (http_core.c)
        Marks end of <Location>
        Allowed in *.conf only inside <Directory>, <Files> or <Location>
<VirtualHost (http_core.c)
        Container to map directives to a particular virtual host, takes one or more host addresses
        Allowed in *.conf only outside <Directory>, <Files> or <Location>
</VirtualHost> (http_core.c)
        Marks end of <VirtualHost>
        Allowed in *.conf only outside <Directory>, <Files> or <Location>
<Files (http_core.c)
        Container for directives affecting files matching specified patterns
        Allowed in *.conf anywhere and in .htaccess
        when AllowOverride isn't None
</Files> (http_core.c)


사용예 #7

-S옵션은 아파치에 설정된 가상호스트를 확인해 줍니다. 
가상호스트는 httpd.conf파일의 맨 마지막에 설정되는 것으로 직접 httpd.conf파일을 vi로 열어서 확인해 보면 알 수 있지만 현재 운용중인 아파치에 설정되어 있는 가상호스트를 확인하고자 한다면 아래와 같이 -S옵션을사용하시기 바랍니다.

[root@host3 bin]# ./httpd -S
VirtualHost configuration:
192.168.0.113  :80     is a NameVirtualHost
                       default server www.115.co.kr (/usr/local/apache/conf/httpd.conf:1036)
                       port 80 namevhost www.115.co.kr (/usr/local/apache/conf/httpd.conf:1036)
                       port 80 namevhost ftp.superuser.co.kr (/usr/local/apache/conf/httpd.conf:1052)
                       port 80 namevhost mall.superuser.co.kr (/usr/local/apache/conf/httpd.conf:1058)
                       port 80 namevhost www.owner.co.kr (/usr/local/apache/conf/httpd.conf:1064)
                       port 80 namevhost www.woongsang.com (/usr/local/apache/conf/httpd.conf:1071)
[root@host3 bin]#


사용예 #8

아파치의 설정파일인 httpd.conf의 문법을 검사하는 옵션으로 -t를 사용합니다. 
이 옵션은 DocumentRoot에 설정된 값의 유효성을 확인하면서 아파치설정파일(httpd.conf)의 문법을 검사합니다.

아래의 결과를 보다시피 현재 httpd.conf의 문법은 DocumentRoot지시자의 내용을 포함하여 아무런 이상이 없음을 알 수 있습니다.

[root@host3 bin]# ./httpd -t
Syntax OK
[root@host3 bin]#


사용예 #9

아파치의 설정파일인 httpd.conf의 문법을 검사하는 옵션으로 -T를 사용합니다. 
이 옵션은 DocumentRoot에 설정된 값의 유효성은 제외한채 아파치설정파일(httpd.conf)의 문법을 검사합니다.

아래의 결과를 보다시피 현재 httpd.conf의 문법은 정상임을 나타내고 있으나 DocumentRoot에 설정된 값들은 검사하지 않았으므로 그 유효성에 대한 보증은 하지 못합니다.

[root@host3 bin]# ./httpd -T
Syntax OK
[root@host3 bin]#


사용예 #10

httpd의 실행옵션을 확인하는 옵션은 -h옵션입니다. 
httpd실행을 일반적인 실행외에 별도의 옵션을 주어서 실행하고자 할 때에 이 옵션으로 사용할 옵션을 한 번 확인해 보면 도움이 됩니다.

[root@host3 bin]# ./httpd -h
Usage: ./httpd [-D name] [-d directory] [-f file]
               [-C "directive"] [-c "directive"]
               [-v] [-V] [-h] [-l] [-L] [-S] [-t] [-T] [-F]
Options:
  -D name          : define a name for use in <IfDefine name> directives
  -d directory     : specify an alternate initial ServerRoot
  -f file          : specify an alternate ServerConfigFile
  -C "directive"   : process directive before reading config files
  -c "directive"   : process directive after  reading config files
  -v               : show version number
  -V               : show compile settings
  -h               : list available command line options (this page)
  -l               : list compiled-in modules
  -L               : list available configuration directives
  -S               : show parsed settings (currently only vhost settings)
  -t               : run syntax check for config files (with docroot check)
  -T               : run syntax check for config files (without docroot check)
  -F               : run main process in foreground, for process supervisors
[root@host3 bin]#


이상으로 httpd의 실행옵션에 대한 설명을 마무리합니다. 
아파치를 일반적인 방법으로만 실행한다면 이 설명은 별다른 도움이 되지 못할 것입니다.

하지만, httpd.conf의 문법검사, 또는 아파치의 httpd.conf파일을 용도별로 사용하여 실행하는 방법, 그리고 아파치 모듈확인, 아파치 가상호스트확인등을 하기 위해서는 반드시 알고있어야할 것입니다.

+ Recent posts