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파일을 용도별로 사용하여 실행하는 방법, 그리고 아파치 모듈확인, 아파치 가상호스트확인등을 하기 위해서는 반드시 알고있어야할 것입니다.
'Infrastructure' 카테고리의 다른 글
Windows Script Encoder & Decoder (1) | 2009.12.10 |
---|---|
MySQL DB 사용자 추가 (0) | 2009.12.10 |
nice (스케줄링에 의한 프로세스 우선순위 변경) (0) | 2009.12.09 |
free (시스템메모리 사용량 확인) (0) | 2009.12.09 |
badblocks (디스크배드블럭 체크및 검사) (0) | 2009.12.09 |