본문 바로가기

Common Gateway Interface/Perl

[옛 강좌] 43. Perltip - 윈도용 Aapche Web Server 사용법

336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

 이 게시물은 지금은 폐쇄되어 접속되지 않는 Kim Young Soo(http://hours.interpia98.net/~unisoo/)님의 웹 사이트에 2001년경 게시된 내용을 바탕으로 오늘날 웹 환경에 맞게 내용을 덧붙였습니다.

Perltip - 윈도용 Aapche Web Server 사용법

Description

 윈도용 아파치 서버의 사용법에 대한 이야기입니다.

 win95, 98, NT는 유닉스계열의 운영체제와는 많이 다르죠. 여건이 되고, 하시고자 한다면, 개인적으로는 리눅스를 추천하고 싶네요. 처음 배울 땐 조금 까다롭지만, 윈도는 비교도 안 될만큼 여러가지 기능(특히 네트워크)이 있으니깐여.. 특히, 프로그래밍을 공부하신다면 더욱 권하고 싶습니다. 배우고자 하는 언어 - C, C++, Perl 등등 없는 게 없져... (visual을 원하신다면 그건 안 되지만....) 음... 조론... 그만 딴 야그를....


Aapache Web Server

 아파치 서버는 1995년, 그 당시에 가장 인기 있었던, NCSA HTTPD 1.3버젼을 기반으로 만들 어 졌습니다. 현재 인터넷 웹서버중 가장 인기를 누리고 있는 서버가 현재 여러분이 사용 하시고자 하는 Apache 웹 서버입니다. 이 아파치서버는 유닉스계열에서만 사용이 가능하였지만, 1.3버젼대 부터 윈도용으로 포팅되어서 윈도계열의 운영체제에서도 사용이 가능하게 되었습니다. 현재 1.3.9 버전까지 나와 있습니다. 자세한 정보는 http://www.apache.org/에 가시면 얻으실 수 있습니다. 이곳 자료실의 버전은 1.3.9이며 Win32용입니다.

 사용법은 1.3.9버전을 기준으로 합니다.

설치(Install)

 설치는 매우 쉽습니다. 다운받은 파일을 그냥 더블클릭하시면 되져.... 그러면 몇 가지 설정 사항이 나오는데, 하실 건 설치하고자 하는 경로만 지정해 주시면 됩니다.

 저는 c:\apache에 설치를 해서 사용하고 있습니다. 설치를 하시면 apache 디렉토리 밑에 여러 개의 디렉토리가 생깁니다. 건드릴 디렉토리는 없습니다.

 apache 디렉토리에 보시면 apache.exe라는 파일이 있는데, 이 파일이 아파치 웹 서버를 실행시키는 파일입니다. 윈도 95,98과 윈도 NT에서 사용하는 방법이 조금 다르져. 그럼 자세한 사항을 보기 전에 apache.exe에 대해서 살펴 보겠습니다.

apache.exe 사용 방법

 이보다 자세한 내용을 원하시면 http://www.apache.org/docs/windows.html을 참고하세요.

저는 여러가지 중 꼭 필요한 것만 이곳에 적겠습니다.

Windows NT

 apache.exe -(option) -n servicename - 이런식으로 쓰이게 됩니다.

 윈도 NT에 서비스를 등록시키려면

apache -i -n "service name"

특정한 환경아래서 서비스를 등록시키려면

apache -i -n "service name" -f "\my server\conf\my.conf"

윈도 NT 서비스에서 제거하려면

apache -u -n "service name"

apache -i -n apache하시면, NT 서비스에 apache라는 항목으로 서비스가 등록이 되게 됩니다. NT 사용자라면 이렇게 하시면 사용 준비는 끝입니다. [제어판]-[서비스]에 가셔서 확인하시고, 원하시는 설정 몇 가지를 만지면 됩니다.

apache -n "service name" -k restart
apache -n "service name" -k shutdown

위 내용은 서비스를 재시작하거나, 멈출 때 씁니다.

Windows 95, 98

 윈도 95, 98 사용자라면 조금 틀립니다. NT처럼 서버 서비스라는 것이 없으니깐여... 여기선 그냥

apache

 라고만 치시면 서비스가 시작됩니다.

apache -f "c:\my server\conf\my.conf"

 이렇게 하시면 사용자 정의 환경파일대로 시작하구요.

apache -k shutdown
apache -k restart

이렇게 하시면 재시작하거나, 멈춤니다. 이렇게 하지않고, 그냥 콘솔을 닫으신후, 재시작하시면, 머라머라 메세지가 뜰 겁니다. 그건 http.pid에 서버 실행 시, 실행 프로세스를 기록하는데, 이 기록이 남아 있으니깐, 왜 정상대로 하지 않았냐.. 덮어서 쓰겠다.. 뭐. 이런 내용일 겁니다.

환경설정 - httpd.conf

 아파치 서버는 httpd.conf라는 파일안에 실행시 정해지는 환경 설정내용이 들어 있습니다. 원래는 httpd.conf, srm.conf, access.conf 이렇게 세개의 파일이 있었는데, 1.3대 버젼 부터 httpd.conf 파일에 모두 통합 되었습니다. 그러니 httpd.conf파일만 보시면 됩니다. 이 파일은 apache/conf디렉토리 안에 있습니다. 보시면... 나머지 두 파일도 있는데여... 내용은 없습니다. httpd.conf에 통합되었다는 얘깁니다.

httpd.conf

 그럼 파일 내용 전체를 보면서 설명하겠습니다. 지면상 주석문은 모두 제거하였습니다. 또한 설정 시 필요한 부분만 설명하였습니다. 설명을 보시면 무슨 설정이 이해하실 수 있으실 겁니다.

# 로 시작하는 곳이 주석문입니다.
# 처음엔 아파치 웹 서버의 소개죠.
# 여기서 부텁니다. 전체 환경설정에 대한 부분.
### Section 1: Global Environment

# 서버의 유형을 선택합니다. standalone과 inetd가 있는데, standalone으로 합니다.
# inetd는 이 곳의 내용을 벗어나므로 생략합니다.
ServerType standalone

# 서버의 root경로를 나타냅니다. 제가 c:\apache에 설치했죠. 만약 c:\server\apache에 설치 했다면, 그렇게 나올 겁니다.
ServerRoot "c:/Apache"

# 서버 시작시 실행되는 프로세스를 기록하는 파일경로와 파일명입니다.
PidFile logs/httpd.pid

#
ScoreBoardFile logs/apache_status

# 환경설정 파일중 나머지 두 개의 파일에 대한 경로입니다. 사용하지 않으니 주석 처리합니다.
# ResourceConfig conf/srm.conf
# AccessConfig conf/access.conf

#
Timeout 300

#
KeepAlive On

# 접속 기간동안 처리할수 있는 최대 요청 개수 입니다. 0이면 무한대 입니다.
MaxKeepAliveRequests 100

#
KeepAliveTimeout 15

#
MaxRequestsPerChild 0

#
ThreadsPerChild 50

#
# Listen 3000
# Listen 12.34.56.78:80
#
# BindAddress *
# 모듈적재 순서입니다.
# LoadModule anon_auth_module modules/ApacheModuleAuthAnon.dll
# LoadModule cern_meta_module modules/ApacheModuleCERNMeta.dll
# LoadModule digest_module modules/ApacheModuleDigest.dll
# LoadModule expires_module modules/ApacheModuleExpires.dll
# LoadModule headers_module modules/ApacheModuleHeaders.dll
# LoadModule proxy_module modules/ApacheModuleProxy.dll
# LoadModule rewrite_module modules/ApacheModuleRewrite.dll
# LoadModule speling_module modules/ApacheModuleSpeling.dll
# LoadModule status_module modules/ApacheModuleStatus.dll
# LoadModule usertrack_module modules/ApacheModuleUserTrack.dll
#
# ExtendedStatus On

### Section 2: 'Main' server configuration
# 주 서버 설정관련 부분
###
# 웹 서버가 사용할 포트입니다. 80은 웹서버의 디폴트 입니다.
Port 80

# 에러가 났을경우 에러메제지가 나오고, 그때 표시할 관리자 이멜입니다.
# 자신의 것으로 바꾸면 됩니다.
ServerAdmin you@your.address

# 웹 서버의 이름입니다. DNS에 등록이 안된 거라면, 자신의 IP주소나, localhost를 입력합니다.
ServerName localhost

# 서버의 메인 페이지 경로입니다. 웹 브라우저 주소란에 localhost라고 치면 나오는 페이지입니다.
DocumentRoot "c:/Apache/htdocs"

# 각 디렉토리의 권한을 조정할수 있습니다. 이것은 '/'-root-디렉토리에 관한 설정입니다.
<Directory />
	Options FollowSymLinks
	AllowOverride None
</Directory>

# 메인페이지가 있는 디렉토리의 권한 설정입니다.
<Directory "c:/Apache/htdocs">
	Options Indexes FollowSymLinks
	AllowOverride None
	Order allow,deny
	Allow from all
</Directory>

# 사용자 디렉토리 입니다. ~ID했을때 나오는 곳이죠. 처음엔 이 디렉토리가 없을 겁니다.
# 만드시면 됩니다. c:/apache/users/unisoo 디렉토리를 만드셨다면,
# localhost/~unisoo 하시면 됩니다.
UserDir "c:/Apache/users/"

# 처음에 읽어들일 파일을 정의 합니다. index.cgi index.php 이런 식으로 추가하시면 됩니다.
# 파일명과 파일명사이는 공백으로 합니다.
DirectoryIndex index.html

# 각각의 디렉토리 설정을 저장한 파일명입니다.
AccessFileName .htaccess

# 위 파일의 권한 설정입니다.
<Files .htaccess>
	Order allow,deny
	Deny from all
</Files>

#
# CacheNegotiatedDocs
#
UseCanonicalName On
# 서버에서 허용할 mine 타입을 저장한 파일의 경로입니다.
TypesConfig conf/mime.types
#
DefaultType text/plain
#
<IfModule mod_mime_magic.c>
	MIMEMagicFile conf/magic
</IfModule>
#
HostnameLookups Off
#
ErrorLog logs/error.log
#
LogLevel warn
#
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %b" common
LogFormat "%{Referer}i -> %U" referer
LogFormat "%{User-agent}i" agent
#
CustomLog logs/access.log common
#
# CustomLog logs/referer.log referer
# CustomLog logs/agent.log agent
#
# CustomLog logs/access.log combined
#
ServerSignature On
# 이 설정은 실제 디렉토리와 서버에서 처리할 가상 디렉토리를 alias합니다.
# 브라우저 상에서 /icons/가 입력되면, 서버는 실제 디렉토리인 c:/apache/icons/로 인식합니다.
Alias /icons/ "c:/Apache/icons/"
# 아래의 설정도 위의 설정과 같습니다. 다만 스크립트의 가상경로를 지정합니다.
# 저는 각 유저들의 cgi-bin 디렉토리 또한 alias시켜서 사용하였습니다.
# 이렇게 지정된 경로만이 스크립트를 실행할 수 있습니다.
ScriptAlias /cgi-bin/ "c:/Apache/cgi-bin/"
ScriptAlias /cgi-bin/ "c:/Apache/users/*/cgi-bin/"
# cgi-bin 디렉토리의 권한 설정입니다.
# 유저들의 디렉토리 또한 설정하였습니다.
<Directory "c:/Apache/cgi-bin">
	AllowOverride None
	Options None
</Directory>
<Directory "c:/Apache/users/*/cgi-bin">
	AllowOverride None
	Options None
</Directory>
#
IndexOptions FancyIndexing
#
AddIconByEncoding (CMP,/icons/compressed.gif) x-compress x-gzip
AddIconByType (TXT,/icons/text.gif) text/*
AddIconByType (IMG,/icons/image2.gif) image/*
AddIconByType (SND,/icons/sound2.gif) audio/*
AddIconByType (VID,/icons/movie.gif) video/* 
AddIcon /icons/binary.gif .bin .exe
AddIcon /icons/binhex.gif .hqx
AddIcon /icons/tar.gif .tar
AddIcon /icons/world2.gif .wrl .wrl.gz .vrml .vrm .iv
AddIcon /icons/compressed.gif .Z .z .tgz .gz .zip
AddIcon /icons/a.gif .ps .ai .eps
AddIcon /icons/layout.gif .html .shtml .htm .pdf
AddIcon /icons/text.gif .txt
AddIcon /icons/c.gif .c
AddIcon /icons/p.gif .pl .py
AddIcon /icons/f.gif .for
AddIcon /icons/dvi.gif .dvi
AddIcon /icons/uuencoded.gif .uu
AddIcon /icons/script.gif .conf .sh .shar .csh .ksh .tcl
AddIcon /icons/tex.gif .tex
AddIcon /icons/bomb.gif core
AddIcon /icons/back.gif ..
AddIcon /icons/hand.right.gif README
AddIcon /icons/folder.gif ^^DIRECTORY^^
AddIcon /icons/blank.gif ^^BLANKICON^^
#
DefaultIcon /icons/unknown.gif
#
# AddDescription "GZIP compressed document" .gz
# AddDescription "tar archive" .tar
# AddDescription "GZIP compressed tar archive" .tgz
#
ReadmeName README
HeaderName HEADER
#
AddEncoding x-compress Z
AddEncoding x-gzip gz tgz
# 문서의 언어를 명시합니다. 한국어가 빠졌으므로 첫줄에 아래와 같이 넣습니다.
AddLanguage ko .ko
AddLanguage en .en
AddLanguage fr .fr
AddLanguage de .de
AddLanguage da .da
AddLanguage el .el
AddLanguage it .it
# 언어 우선순위 입니다. ko를 맨 앞에 추가 합니다.
LanguagePriority ko en fr de
# mime.type파일을 변경하지 않고, mime 타입을 추가 시킵니다.
# AddType application/x-httpd-php3 .phtml
# AddType application/x-httpd-php3-source .phps
AddType application/x-tar .tgz
# 스크립트의 확장자를 설정합니다. 처음엔 주석처리 되었을겁니다. 주석을 업애 줍니다.
# 또한 필요한 것에 대해 주석을 없애주거나, 추가 하면 됩니다.
AddHandler cgi-script .cgi
#
# AddType text/html .shtml
# AddHandler server-parsed .shtml
#
# AddHandler send-as-is asis
#
# AddHandler imap-file map
#
# AddHandler type-map var
#
# MetaDir .web
#
# MetaSuffix .meta
# 에러가 났을경우 명시할 문서입니다. 디폴트는 멋없는 문선데... 이걸 여러분이
# 이뿐 문서로 만든다음 바꾸어 주시면 됩니다.
# 각각의 에러에 대해 만드실수 있습니다.
#    1) plain text
# ErrorDocument 500 "The server made a boo boo.
#    2) local redirects
# ErrorDocument 404 /missing.html
#    3) external redirects
# ErrorDocument 402 http://some.other_server.com/subscription_info.html
#
BrowserMatch "Mozilla/2" nokeepalive
BrowserMatch "MSIE 4\.0b2;" nokeepalive downgrade-1.0 force-response-1.0
#
BrowserMatch "RealPlayer 4\.0" force-response-1.0
BrowserMatch "Java/1\.0" force-response-1.0
BrowserMatch "JDK/1\.0" force-response-1.0
#
# <Location /server-status>
#	SetHandler server-status
#	Order deny,allow
#	Deny from all
#	Allow from .your_domain.com
# </Location>
#
# <Location /server-info>
#	SetHandler server-info
#	Order deny,allow
#	Deny from all
#	Allow from .your_domain.com
# </Location>
#
# <Location /cgi-bin/phf*>
#	Deny from all
#	ErrorDocument 403 http://web.archive.org/web/20010418060025/http://phf.apache.org/phf_abuse_log.cgi
# </Location>
#
# ProxyRequests On
#
# ProxyVia On
#
# CacheRoot "c:/Apache/proxy"
# CacheSize 5
# CacheGcInterval 4
# CacheMaxExpire 24
# CacheLastModifiedFactor 0.1
# CacheDefaultExpire 1
# NoCache a_domain.com another_domain.edu joes.garage_sale.com
### Section 3: Virtual Hosts
# 가상 호스트에 관한 설정부분입니다.
###
# NameVirtualHost 12.34.56.78:80
# NameVirtualHost 12.34.56.78 
#
# <VirtualHost ip.address.of.host.some_domain.com>
#	ServerAdmin webmaster@host.some_domain.com
#	DocumentRoot /www/docs/host.some_domain.com
#	ServerName host.some_domain.com
#	ErrorLog logs/host.some_domain.com-error_log
#	CustomLog logs/host.some_domain.com-access_log common
# </VirtualHost>
# <VirtualHost _default_:*>
# </VirtualHost>
					

NOTES

 휴~~ 다 보았습니다. 제가 설명한 부분만 자신의 환경에 맞게 고치시면 됩니다. 그리고 실행합니다.(95,98,NT에 맞게....)

apache -k start

 그리고 브라우저를 띄웁니다. 그리고 주소란에 자신의 IP주소나(위에서 설정하였을 시..), localhost를 입력합니다.

 짜쟌~~~~ It's Work!!! 라면서 머라머라 하면 성공입니다.

 잘 되는 겁니다. 그리구 문서를 올리시구, cgi도 사용하시구.... 다 잘 되면 다 잘 되는 거구, 하나라두 안 되면 설정을 다시 한 번 확인하세요.


이 문서는 Perl 패키지내의 pod2html를 이용하여 만들었습니다. - Kim Young Soo