apm > 개발자팁

개발자팁

개발과 관련된 유용한 정보를 공유하세요.
질문은 QA에서 해주시기 바랍니다.

apm 정보

MySQL apm

본문

Apache

19.1 설정 파일

# 설정 파일 : /etc/httpd/conf/httpd.conf
# 문법 점검 : /usr/sbin/httpd -t
#  오류가 없는 경우 : Syntax OK
#  오류가 있는 경우 : Syntax error on line 91 of /etc/httpd/conf/httpd.conf:
#                     ServerType must be either 'inetd' or 'standalone'
# 모듈 점검 : /usr/sbin/httpd -l
 
# 기본 섹션
#  섹션 1 : Global Environment  (전체 환경)
#  섹션 2 : Main Configuration  (주 서버 설정)
#  섹션 3 : Virtual Hosting     (가상 호스트)

# 섹션 1 : 전체 환경 (Global Environment)
ServerType standalone
# inetd 또는 standalone 중 하나이다.
# inetd 방식은 유닉스 플랫폼에서만 지원된다.
 
ServerRoot "/etc/httpd"
#  서버의 설정 파일, 에러 파일, 접근 로그 파일이 기록되는 디렉토리의 최상위 경로
#  디렉토리 경로뒤에 slash(/) 문자를 쓰지 않는다!!!

# LockFile logs/accept.lock
# apache를 USE_FCNTL_SERIALIZED_ACCEPT 또는 USE_FLOCK_SERAILIZED_
# ACCEPT 옵션으로 컴파일한 후, lockfile의 경로를 지정할 때 사용한다.
# 일반적으로 기본값으로 하지만 값을 바꾸는 경우는 로그 디렉토리가 NFS 마운트된 # 곳에 있는 경우로서 잠금 파일은 항상 네트웤 파일 시스템이 아닌 로컬 디스크에
# 저장되어야 하기 때문이다.

 

 


PidFile /var/run/httpd.pid
#  웹 서버가 시동될 때 자신의 고유 프로세스 번호를 기록할 파일
#  주 서버 프로세서의 PID 값이 자동으로 파일 이름뒤에 붙는다.

ScoreBoardFile /var/run/httpd.scoreboard
#  내부 서버 프로세스 정보를 기록하는데 사용하는 파일
# 꼭 필요한 것은 아니지만 필요하다고 생각하는 경우 하나의 아파치 프로그램을 두번
# 이상 실행시키는 경우 값이 중복되지 않도록 해주어야 한다.

#ResourceConfig conf/srm.conf
#AccessConfig conf/access.conf
표준 설정에서 서버는 httpd.conf, src.conf, access.conf 파일을 차례대로 읽어나간다. 나중의 2개의 파일은 현재 아무 내용도 없는 빈 상태로 배포되고 있다.

Timeout 300
#  데이타 받기/보내기 소요 시간(초)

KeepAlive On
# 지속성(persistent) 접속을 허가할 것인가 말 것인가를 결정
# (한 번의 접속에서, 즉 사용자와의 세션을 유지한 상태에서 여러 개의 요청을
# 처리할 것인가 여부)
# 허가하지 않기 위해서는 Off
# 허가하는 것과 허가하지 않는 것과의 효율 차이는 매우 크다.

MaxKeepAliveRequests 50
#  지속성 접속 기간 동안 처리할 수 있는 최대 요청 개수
#  0을 넣으면 무한대이며 높은 성능을 내기 위해서는 높은 값 설정
#  하나의 세션으로부터 동시에 받을 수 있는 최대의 요청 개수

KeepAliveTimeout 15
#  같은 접속 상태에서 같은 클라이언트가 다음 요청이 들어올 때까지 연결을 유지
# (초 단위)
# 사용자의 세션 유지 시간, 즉 사용자와의 세션을 서버측에서 유지시킬 기본적인 시간

 

 

# 서버 풀(Server-pool) 크기 조정 : 몇 개의 프로세스가 필요한지 사용자에게
# 추측하도록 하기 보다는 현재의 부하 상태에서 자동으로 적응하도록 되어 있다.
# 아파치 서버는 현재의 부하 상태와 순간적으로 급격히 상승하는 경우 값(예를 들어
# 하나의 netscape browser에서 동시에 여러 개의 요청이 들어올 경우)을 처리할 수
# 있는 충분한 개수의 서버 프로세스를 유지하려 노력한다.

MinSpareServer 7
MaxSpareServer 12
#  아파치 서버는 주기적으로 몇 개의 서버가 요청 대기 상태인지 점검한다.
#  만약 MinSpareServer보다 적다면 여유 서버 프로세스를 생성한다.
#  만약 MaxSpareServer보다 많으면 불필요한 여유 프로세스를 제거한다.
#  이 곳에 제시된 기본값은 거의 대부분의 site에서 적합하다.

StartServers 7
#  초기에 시작될 웹 서버의 숫자

MaxClients 100
#  서버 프로세스의 최대값, 즉 동시에 접속할 수 있는 클라이언트 개수를 제한
#  만약 이 값에 도달한다면 클라이언트의 요청은 봉쇄될 것이다. 이 값이 너무
#  낮아서는 안된다.
#  아파치 서버가 너무 많은 자원을 소비하여 전체 시스템이 down 되는 것을 방지
 
MaxRequestPerChild 100
#  각 자식 프로세스가 죽기 전까지 처리할 수 있는 요청 개수.
#  한 프로세스가 너무 오랫동안 사용되면 메모리 누출이나 자원 누출이 발생할 수
# 있으므로 자식 프로세스는 자동으로 죽는다.

# Listen 3000
Listen 211.170.43.119:80
Listen 211.170.43.119:8001
#  아파치를 기본 값 이외에도 특정 IP 주소 또는 포트에 연결하도록 해준다.
#  두개의 NIC가 있어 둘 이상의 IP 주소를 가질 때 특정 IP 주소를 아파치에 연결

 


BindAddress *
#  가상호스트 지원
#  "*", IP 주소, 완전한 domain 이름을 지정

#  동적 공유 객체(Dynamic Shared Object, DSO) 지원
#  DSO 방식으로 만들어진 모듈의 기능을 사용하기 위해서는 해당 모듈과 관련된
# 지시어를 사용하기에 앞서 'LoadModule' 지시어로 모듈을 메모리에 탑재해야 한다.
#  httpd -l : httpd binary에 내장된(정적으로 링크되어 항상 사용가능한) 모듈 목록
# 나열
#  주의: 모듈을 적재하는 순서는 매우 중요.
# LoadModule 설정을 하나라도 바꾸었다면 LoadModule 설정뒤에 따라 나오는
# AddModule 설정도 똑같이 바꾸어주기 바란다.
 
#LoadModule mmap_static_module  modules/mod_mmap_static.so
LoadModule config_log_module    modules/mod_log_config.so
LoadModule agent_log_module     modules/mod_log_agent.so
LoadModule referer_log_module   modules/mod_log_referer.so
#LoadModule mime_magic_module   modules/mod_mime_magic.so
LoadModule negotiation_module   modules/mod_negotiation.so
LoadModule status_module        modules/mod_status.so
LoadModule info_module          modules/mod_info.so
LoadModule includes_module      modules/mod_include.so
LoadModule autoindex_module     modules/mod_autoindex.so
LoadModule dir_module           modules/mod_dir.so
LoadModule cgi_module           modules/mod_cgi.so
LoadModule asis_module          modules/mod_asis.so
LoadModule imap_module          modules/mod_imap.so
LoadModule action_module        modules/mod_actions.so
#LoadModule speling_module      modules/mod_speling.so
LoadModule userdir_module       modules/mod_userdir.so
LoadModule proxy_module         modules/libproxy.so
LoadModule alias_module         modules/mod_alias.so

 


LoadModule rewrite_module       modules/mod_rewrite.so
LoadModule access_module        modules/mod_access.so
LoadModule auth_module          modules/mod_auth.so
LoadModule anon_auth_module     modules/mod_auth_anon.so
LoadModule dbm_auth_module      modules/mod_auth_dbm.so
LoadModule db_auth_module       modules/mod_auth_db.so
LoadModule digest_module        modules/mod_digest.so
LoadModule cern_meta_module     modules/mod_cern_meta_so
LoadModule expires_module       modules/mod_expires.so
LoadModule headers_module       modules/mod_headers.so
LoadModule usertrack_module     modules/mod_usertrack.so
#LoadModule example_module      modules/mod_example.so
#LoadModule unique_id_module    modules/mod_unique_id.so
LoadModule setenvif_module      modules/mod_setenvif.so
 
#  확장 모듈
#LoadModule php_module          modules/mod_php.so
 
# 다음은 서버 scripting 언어인 php3 모듈이다.
# 설정을 바꾸고 나서 다음 행의 주석을 풀어준다.
# AddType application/x-httpd-php3 .php3

LoadModule php3_module         modules/libphp3.so

# 모듈 실행 순서를 정확하게 하기 위해 사용 가능한 모듈(정적 또는 공유 모듈
# 포함)로부터 완전한 목록을 다시 만들어 둔 것이다.
# [LOADMODULE] 섹션을 하나라도 수정했다면 이 부분도 역시 수정하라!!
ClearModuleList
#AddModule  mod_mmap_static.c
AddModule   mod_env.c
AddModule   mod_log_config.c
AddModule   mod_log_agent.c

 


AddModule   mod_log_referer.c
AddModule   mod_mime_magic.c
AddModule   mod_mime.c
AddModule   mod_negotiation.c
AddModule   mod_status.c
AddModule   mod_info.c
AddModule   mod_include.c
AddModule   mod_autoindex.c
AddModule   mod_dir.c       //URL에서 마지막에 붙는 "/"에 대한 재지향, 디렉토리
인덱스 파일 제공
AddModule   mod_cgi.c
AddModule   mod_asis.c      //
AddModule   mod_imapc
AddModule   mod_actions.c
AddModule   mod_speling.c
AddModule   mod_userdir.c
AddModule   mod_proxy.c
AddModule   mod_alias.c     //
AddModule   mod_rewrite.c
AddModule   mod_access.c
AddModule   mod_auth.c
AddModule   mod_auth_anon.c
#AddModule  mod_auth_dbm.c
AddModule   mod_digest.c
#AddModule  mod_cern_meta.c
AddModule   mod_expires.c
AddModule   mod_headers.c
AddModule   mod_usertrack.c
#AddModule  mod_example.c
#AddModule  mod_unique_id.c
AddModule   mod_so.c
AddModule   mod_setenvif.c

 


#Extra Modules
#AddModule mod_php.c
AddModule mod_php3.c
#AddModule mod_perl.c

ExtendedStatus On
# "server-status" 처리기가 호출되었을 때 아파치가 매우 자세한 상태정보를 생성시킬
# 것인지(ExtendedStatus On) 아니면 매우 기본적인 정보만 생성시킬
# 것인지를(ExtendedStatus Off) 제어
# default는 Off이다.

# 섹션 2 : 주 서버(Main Server) 설정

Port 80
#  독립 실행형(standalone) 서버가 요청을 기다리는 포트.
# 1023번보다 낮은 번호의 포트에 대해서는 httpd가 처음에는 root의 권한으로
# 실행되어야 한다.

User nobody
Group nobody
# httpd가 다른 사용자 또는 그룹 권한으로 실행되게 하려면 우선 httpd가 root 사용자
# 권한으로 실행된 후 설정된 다른 사용자 권한으로 전환해야 한다.
ServerAdmin root@localhost
#  서버에 문제가 발생했을 때 메일을 보낼 주소

ServerName www.linuxone.co.kr

#  ServerName은 클라이언트 프로그램에게 돌려주는 서버이름이 다른 경우 호스트
# 이름을 설정할 수 있다.
#  호스트 이름은 타당한 DNS 이름이어야 한다.
#  호스트가 등록된 DNS 이름을 갖고 있지 않은 경우에는 이 곳에 IP 주소를 적는다.

 

 

DocumentRoot "/var/www/html"
#  DocumentRoot : 제공할 문서의 상위 디렉토리
#  기본적으로 모든 요청은 이 디렉토리로부터 처리된다.
#  하지만 symbolic link나 alias를 사용하여 다른 위치를 가리키도록 할 수 있다.

# 아파치에 의해서 각 클라이언트가 접근할 수 있는 각 디렉토리(아파치 웹 서버가
# 서비스를 제공하는 디렉토리)에 대하여 어떤 서비스와 기능을 허용할 것인지 거부할
# 것인지를 설정
# 디렉토리에 대한 설정 내용은 그 하부 디렉토리에도 영향을 미친다.
# 우선 기본값은 매우 제한적인 상태로 설정한다.
# 서버로부터 자료를 얻어갈 수 있는 위치를 제어한다.
# <Directory />
#     Order allow,deny
#     Allow from all
# </Directory>

# 예제 ####
# <Location /home/dream/topsecret.html>
#     order deny,allow
#     deny from all
#     allow from .yourdomain.com (공백) .mydomain.com
# </Location>

# <Directory "/var/www/html">
#     Options FollowSymLinks
#     AllowOverride None
# </Directory>
# 다음 내용을 설정된 DocumentRoot 값으로 변경해서 사용한다.
# 다음 값에는 "None", "All", 또는 "Indexes", "Includes", "FollowSymLinks",
# "ExecCGI", "MultiViews"의 조합이 가능하다.
# "MulitViews"만큼은 "Options All"을 사용한다 할지라도 명시적으로 적어야만
# 작동한다.
# Options Indexes FollowSymLinks Includes

# 웹 브라우저를 통해 디렉토리에 개별적으로 접근하는 것은 .htaccess 파일로 제어할
# 수 있다.
# All, Options, FileInfo, AuthConfig, Limit의 자유로운 결합이 가능하다.


UserDir public_html
# UserDir : ~user요청을 받았을 때 사용자의 홈 디렉토리 뒤에 추가할 디렉토리 이름
# chmod a+x ~ : 개인 홈 디렉토리를 가질 사람은 chmod a+x ~ 명령을 실행하여
# nobody 권한의 아파치 process가 홈 디렉토리에 접근할 수 있도록 허가해주어야
# 한다.

# 다음은 사용자 홈페이지에 대하여 읽기만 가능하도록 한 예제 설정 내용이다.
# <Directory /*/homepage>
#     AllowOverride FileInfo AuthConfig Limit
#     Options MultiViews Indexes SymLinksIFOwnerMatch IncludesNoExec
#     <Limit GET POST OPTIONS PROPFIND>
#         Order allow,deny
#         Allow from all
#     </Limit>
# <Limit PUT DELETE PATCH PROPPATCH MKCOL COPY MOVE LOCK
# UNLOCK>
#         Order allow,deny
#         Deny from all
#     </Limit>
# </Directory>

# <Directory /*/public_html>
#     Options Indexes FollowSymLinks Includes
#     AllowOverride None

 


#     Order allow,deny
#     Allow from all
# </Directory>

DirectoryIndex index.php3 index.html index.shtml index.cgi
#DirectoryIndex index.html index.htm index.shtml index.cgi
#  준비된 HTML 디렉토리 인덱스로 사용할 파일이나 파일 목록의 이름을 나열
#  여러 개를 나열할 때는 space로 구분

AccessFileName .htaccess
#  각 디렉토리에 대한 접근제어 정보내용을 담고 있는 파일 이름
<Files .htaccess>
    Order allow,deny
    Deny from all
</Files>
#  웹 브라우저가 .htaccess 파일을 접근할 수 없도록 하는 설정
#  .htaccess에는 인증 정보가 있으므로 보안상 이유로 이 파일에 대한 접근 불허

# CacheNegotiateDocs
#  기본적인 형태의 컨텐츠에 대해서 "Pragma: no-cache"를 웹 서버에서 전송해서
# 프록시 서버가 내용을 캐쉬하지 않도록 지정
# 주석을 풀면 모든 캐쉬가 해당 컨텐츠를 프록시 서버에 저장하여 사용자의 요구에
# 빠르게 전송

UseCanonicalName On
#  (1.3에 등장) 이 설정을 켜두면, 아파치는 자기 참조 URL(데이타가 오고 있는
# 서버를 다시 가리키는 URL)을 만들 필요가 있을 때마다 "공식적인" 이름을 만들기
# 위해 ServerName과 Port를 사용한다.
#  그렇지 않으면 아파치 서버는 클라이언트가 제공한 호스트이름:포트 값을 사용
 
TypesConfig /etc/mime.types
#  TypeConfig는 mime.types 파일 또는 이에 해당하는 파일을 찾을 위치를 결정

 


DefaultType text/plain
#  DefaultType application.octet-stream
# 파일 확장자와 같은 것을 통해 MIME 타입을 알 수 없는 문서에 대하여 사용할 기본
# MIME 타입을 말한다.
# 서버에 text나 HTML문서가 많다면 "test/plain"을 쓰는 것이 좋다.
# 대부분이 응용 프로그램이거나 이미지 같은 바이너리인 경우는 "application.octet-
# stream"

<IfModule mod_mime_magic.c>
    MIMEMagicFile conf/magic
</IfModule>
#  mod_mime_magic 모듈을 사용하면 파일의 내용을 가지고 파일의 타입에 대한
# 힌트를 얻는다.
#  MIMEMagicFile 지시자를 사용하여 모듈에게 힌트정보가 저장되어 있는 파일을
# 설정한다.
#  mod_mime_magic은 기본 서버의 일부가 아니다.(따라서 LoadModule 설정을 통해
#  모듈을 추가)

HostnameLookups Off
#  클라이언트의 이름 또는 IP 주소만을 기록할지 여부
#  On  : www.apache.org
#  Off : 204.62.129.132
# 기본값이 Off인 이유는 각 클라이언트 요청이 올 때마다 최소한 1번 이상의
# 네임서버 요청이 발생하기 때문이다.

ErrorLog logs/error_log
#  ErrorLog: 에러 기록 파일의 위치
#  <VirtualHost>컨테이너 안에서 ErrorLog 설정을 하지 않으면 그 가상 호스트에
# 관련된 에러 메시지도 역시 이곳에 기록된다.
 
Loglevel warn
#  Loglevel: error_log에 기록될 메시지 분량을 제어

 


#  debug, info, notice, warn, error, crit, alert, emerg 등

LogFormat "%h  %1 %u %t \"%h\" %>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에서 사용할 형식에 대한 별명

CustomLog logs/access_log common
# 접근 로그 파일의 위치와 형식(공통 로그 파일 형식)
# <VirtualHost> 컨테이너 안에서 접근 로그파일 설정을 하지 않으면 모든 기록이 이
# 파일에 남게 된다.
#CustomLog logs/referer_log referer
#CustomLog logs/agent_log agent
# 에이젼트 로그파일과 참조자(referer) 로그파일을 갖기 위해서는 다음 지시 내용을
# 주석처리
# 에이젼트란 사이트에 방문하는 브라우저
# 에이젼트 로그를 남기면 사이트에 방문하는 브라우저의 종류에 대한 통계를 낼 수
# 있다
# 참조자란 배너 광고주에게 중요한 것으로 사이트 바로 직전에 방문한 사이트

#CustomLog logs/access_log combined
# 하나의 로그파일에 접근, 에이젼트, 참조자 정보를 다 저장하기 위함
# 접속이 많은 사이트에서 combined 로그 파일이 커져서 루트 파일 시스템을
# 채워버리기도 한다.

#ServerSignature On
# 서버가 생성하는 페이지(에러문서, FTP 디렉토리 목록, mod_status, mod_info 출력
# 등)에 부가적으로 서버 버전과 가상 호스트 이름을 포함하는 행을 추가
# "Email"로 설정하면 ServerAdmin으로의 mailto: 링크를 포함한다.
# On | Off | Email 중 하나

 


#Alias /icons/ "/var/httpd/icons/"
# Alias: 필요한 만큼의 별칭을 만들어 사용(제한 없음)
# Alias 별칭  실명
# 별칭 뒤에 /를 포함하면 아파치 서버는 URL에서도 반드시 "/"를 포함시켜야 한다.
# "/icons"는 별칭 처리되지 않고 "/icons/"만 별칭처리

#<Directory "/var/httpd/icons">
#     Options Indexes MultiViews
#     AllowOverride None
#     Order allow,deny
#    Allow from all
#</Directory>

# ScriptAlias: 서버 스크립트를 포함하는 디렉토리를 지정
# ScriptAlias는 근본적으로 Alias와 같으나 가리키고 있는 실제 디렉토리 안에
# 들어있는 문서를 실행 프로그램으로 취급하여 실행
# 맨 뒤에 붙는 "/"에 대한 규칙은 Alias와 같다.
ScriptAlias /cgi-bin/ "/var/httpd/cgi-bin/"

AddType application/x-httpd-cgi .cgi
#AddType application/x-httpd-cgi .pl
#AddType application/x-httpd-cgi .sh
#AddType application/x-httpd-cgi .tk

# "/var/httpd/cgi-bin"부분은 ScriptAlias로 별칭 처리된 실제 CGI 디렉토리로 설정

<Directory "/var/httpd/cgi-bin">
     AllowOverride All
#    Options Indexes FllowSymLinks Includes ExecCGI
     Options IncludesNoExec ExecCGI
     <Limit GET POST>
     Order allow,deny

 


     Allow from all
     </Limit>
</Directory>

<Directory "/var*">
    Options Includes ExecCGI
    AllowOverride All
    <Limit GET POST>
    Order allow,deny
    Allow from all
    </Limit>
</Directory>

# localhost에서는 local system 문서를 접근할 수 있도록 허용
#Alias /doc /usr/doc
#<Directory>
#     order deny,allow
#     deny from all
#     allow from localhost
#     Options Indexes FollowSymLinks
#     </Directory>

# Redirect를 사용하면 서버의 이름공간에 존재했으나 현재에는 존재하지 않는 문서에
# 대하여 클라이언트에게 통보해줄 수 있다.
# 위치가 변한 새로운 문서를 찾을 수 있도록 한다.
# 형식 : Redirect old-URL new-URL

# FancyIndexing은 예쁜 디렉토리 목록 또는 표준적인 디렉토리 목록 여부를 결정한다.
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이란 명시적인 아이콘을 갖고 있지 않는 파일에 대한 기본 아이콘을
# 설정한다.
DefaultIcon /icons/unknown.gif

# AddDescription은 서버 자동 생성 index의 file명 뒤에 간단한 설명을 넣을 때 사용
# FancyIndexing을 사용할 때에만 보인다.
# 형식 : AddDescription "설명" file명
#AddDescription "GZIP compressed document" .gz

 


#AddDescription  "tar archive" .tar
#AddDescription "GZIP compressed tar archive" .tgz

# ReadmeName은 서버가 디렉토리 목록 뒤에 내용을 덧붙여 넣을 README 파일의
# 이름 설정
# HeaderName은 디렉토리 index 앞에 내용을 덧붙일 파일명을 설정
# 서버는 먼저 README.html을 찾고 그것이 있으면 그 내용을 포함하고 만약 없다면
# 서버는 README.txt 파일을 찾고 평범한 text 내용으로 추가
ReadmeName README.html
HeaderName HEADER.html
# IndexIgnore는 디렉토리 index를 출력할 때 출력된 목록에서 제외시킬 파일명을
# 설정
# shell style의 wildcard를 사용할 수 있다.
IndexIgnore .??* *∼ *# HEADER* README* RCS CVS *.v *.t


# AddEncoding은 특정 브라우져(모자익/X 2.1+)로 하여금 자료를 받으면서 정보의
# 압축을 풀수 있도록 한다.
# 주의: 모든 브라우져가 이 기능을 지원하는 것은 아니다.
# 다음의 Add로 시작하는 지시자들은 FancyIndexing과는 관련이 없다.
AddEncoding x-compress Z
AddEncoding x-gzip gz

# AddLanguage는 문서를 제작할 때 사용할 언어를 지정한다.
# 컨텐츠를 브라우저에게 보낼 때 브라우저가 이해할 수 있는 언어로 제작된 내용을
# 제공
# 접미어(suffix)는 언어 keyword와 꼭 같을 필요는 없다.
# 폴란드어(Polish)로 된 문서는 network 표준 언어 코드가 pl이지만 perl script와
# 확연히 구별하기 위해 "AddLanguage pl .po"라고    사용한다.
AddLanguage ko .ko
AddLanguage en .en
AddLanguage fr .fr

 


AddLanguage de .de
AddLanguage da .da
AddLanguage el .el
AddLanguage it .it

# LanguagePriority는 컨텐츠 교섭시 먼저 처리할 언어를 지정
# 언어의 우선권은 내림차순으로 나열
LanguagePriority ko en fr de

# AddType을 사용하면 mime.types 파일 수정없이 MIME 설정을 할 수 있고 특정
# 파일에 대해서는 특정 타입으로 처리할 수 있다.
AddType application/x-httpd-php3 .php3 .php
AddType application/x-httpd-php3-source .phps

# PHP 4.x
#AddType application/x-httpd-php .php
#AddType application/x-httpd-php-source .phps
#AddType application/x-tar .tgz

# MS 계열의 운영체제에서 사용할 경우에 .html을 지원하기 위해
#AddType text/html.htm

# AddHandler를 사용하면 특정 파일 확장자와 "처리기"를 연결하거나 특정 파일
# 타입에 특정 동작(action)을 연결할 수 있다.
# 서버에 내장되어 있거나 또는 Action 명령을 사용하여 추가할 수 있다.

# SSI(Server Side Include) 또는 ScriptAlias에서 지정된 디렉토리 이외의 영역에서
# CGI를 사용하고 싶을 때 다음의 주석 해제.
# CGI 스크립트를 사용하기 위해
AddHandler cgi-script .cgi

# 서버 처리 HTML 파일 사용하기 위해

 


AddType text/html .shtml
AddType text/html .htm
AddHandler server-parsed .shtml

# 아파치의 send-asis HTTP 파일 기능을 사용하기 위해서는 다음 행의 주석을
# 없앤다.
#AddHandler send-asis-is asis

# 서버 처리 이미지 map 파일을 사용하려면
#AddHandler imap-file map

# type map을 사용하려면
#AddHandler type-map var

# perl 모듈을 사용하려면 다음 세션의 주석을 없앤다.
#Alias /perl /var/httpd/perl
#<Location /perl>
#SetHandler perl-script
#PerlHandler Apache::Registry
#Options +ExexCGI
#</Location>

# Action 지시어는 해당되는 파일이 호출될 때마다 그 스크립트의 미디어 타입을 지정
# 빈번하게 사용되는 CGI 파일 프로세서에 대하여 반복적으로 URL을 사용하지 않아도
# 된다.
#Format: Action media/type /cgi-script/location
#Format: Action handler-name /cgi-script/location

# MetaDir: 아파치 서버가 meta 정보 파일을 찾을 디렉토리 이름
# 이 파일에는 문서를 보낼 때 추가하고자 하는 추가 HTTP 헤더 정보가 포함되어
# 있다.
#MetaDir .web

 


# MetaSuffix : meta 정보를 담고 있는 파일의 접미어를 설정한다.
#MetaSuffix .meta

# 사용자 정의 에러 반응 메시지(아파치 스타일)
# 3가지 방법
# 1) 보통의 text
#ErrorDocument 500 "The server made a boo boo.
# 주의: " 표시는 text임을 알려주는 것으로서 그 자체는 출력되지 않는다.

# 2) 지역적인 방향 전환
#ErrorDocument 404 /missing.html
# 지역적 URL인 /missing.html로 방향전환하기
#ErrorDocument 404 /cgi-bin/missing_handler.pl
# 주목: 스크립트나 SSI로 방향전환 가능

# 3) 외부 방향 전환
#ErrorDocument 402 http://some.other_server.com/subscription_info.html
# 주목: 원래 요청과 관련 있는 환경변수의 상당수가 스크립트에 전달되지 못함.
# 다음 지시자는 보통의 HTTP 반응 방식을 수정한다.
# 첫 번째 것은 netscape 2.x 또는 그를 흉내내는 브라우저에 대하여 KeepAlive
# 기능을 쓰지 않도록 한다.  이 브라우저들은 KeepAlive 구현에 문제가 많다.
# 두 번째 것은 HTTP/1.1을 잘못 구현하였고 301 또는 302(redirect) 응답에 대하여
# KeepAlive를 제대로 지원하지 못하는 microsoft explorer 4.0b2를 위한 것이다.
BrowserMatch "Mozilla/2" nokeepalive
BrowserMatch "MSIE 4\.0b2;" nokeepalive downgrade-1.0 force-response-1.0

# 다음은 기본적인 1.1 응답도 제대로 처리하지 못함으로서 HTTP/1.1 spec을
# 위반하고 있는 브라우저에 대하여 HTTP/1.1 응답을 하지 않도록 한다.
BrowserMatch "RealPlayer 4\.0" force-response1.0
BrowserMatch "Java/1\.0" force-response-1.0
BrowserMach "JDK/1.\.0" force-response-1.0

 

 

# 홈페이지를 퍼가는 웹 로봇을 막아주는 설정
BrowserMatch "WebZIP" go_out
BrowserMatch "Teleport" go_out
BrowserMatch "GetRight" go_out

# http://servername/server-status을 통해 서버 상태 보고를 허용한다.
# ".your_domain.com" 부분을 허용할 domain으로 바꿔 사용
#<Location /server-status>
#     SetHandler server-status
#     Order deny,allow
#     Deny from all
#     Allow from .your_domain.com
#</Location>

# http://servername/server-info를 통하여 원격 서버 설정 보고를 허용한다.
# (mod_info.c가 적재되어 있어야 한다.)
# ".your_domain.com" 부분을 허용할 domain으로 바꿔 사용
#<Location /server-info>
#     SetHandler server-info
#     Order deny,allow
#     Deny from all
#     Allow from .your_domain.com
#</Location>

# 1.1 버전 이전의 오래된 버그는 아파치 일부분으로 제공한 CGI 스크립트와 연관있다.
# 이 부분의 주석처리를 없애면 이 버그를 악용하는 공격이 있을 때
# phf.apache.org상의 기록 스크립트로 방향 전환 가능
#<Location /cgi-bin/phf*>
#     Deny from all
#     ErrorDocument 403 http://phf.apache.org/phf_abuse_log.cgi
#</Location>

 

 

# 프로시 서버 지시자
# 프록시 서버 기능을 작동시키려면 다음 행의 주석을 해제
#<IfModule mod_proxy.c>
#     ProxyRequests On

#<Directory proxy:*>
#     Order deny,allow
#     Deny from all
#     Allow from .your_domain.com
#</Directory>

# HTTP/1.1 "Via:" 헤더를 처리할 것인지 여부를 결정
# ("Full"은 서버 버전을 포함하고 "Block"은 나가는 모든 자료에서 Via: 헤더를
# 제거한다.)
# Off | On | Full | Block 중 하나
#ProxyVia On

# 캐시 기능을 사용하기 위해서는 다음 행의 주석을 해제
# (CacheRoot가 없으면 캐쉬하지 않음)
#CacheRoot "/var/httpd/proxy"
#CacheSize 5
#CacheGcInterval 4
#CacheMaxExpire 24
#CacheLastModifiedFactor 0.1
#CacheDefaultExpire 1
#NoCache a_domain.com another_domain.edu joes.garage_sale.com

#</IfModule>
# 프록시 설정 끝

# 섹션 3: Virtual Host ( 가상 호스트)
# 리눅스 박스에 여러 개의 도메인/호스트 이름을 관리하고 싶다면 각각에 대하여

 


# VirtualHost 컨테이너 설정
# 가상 호스트 설정 내용을 점검 : 아파치 실행 -S

#NameVirtualHost 12.34.56.78:80
#NameVirtualHost 12.34.56.78
NameVirtualHost 211.170.43.119
NameVirtualHost 211.170.43.119:8001

# 가상 호스트 예제
# 거의 모든 지시자가 VirtualHost 컨테이너에 올 수 있다.

#<VirtualHost ip.address.of.host.some_domain.com>
#     ServerAdmin *** 개인정보보호를 위한 이메일주소 노출방지 ***
#     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>

# 디렉토리의 속성을 분명히 명시한다.
# web이 보여지는 디렉토리에 대한 설정
<Directory "/var/httpd/kfriendj/html">
    Options IncludesNoExec ExecCGI
    AllowOverride None
    Order allow,deny
    Allow from all
    Deny from env=go_out
</Directory>
<Directory "var/httpd/linuxone">

 


    Options IncludesNoExec ExecCGI
    AllowOverride None
    Order allow,deny
    Allow from all
    Deny from env=go_out
</Directory>

19.2  Virtual Hosting Setting
19.2.1 Name-Based Virtualhosting
[root @edu00 linux]#vi /etc/httpd/conf/httpd.conf
-------------------------------------
NameVirtualHost 192.168.0.xx

<VirtualHost 192.168.0.xx>
DocumentRoot  /home/dream
ServerName eduxx.net

</VirtualHost>
<VirtualHost 192.168.0.xx>
DocumentRoot /home/dream1
ServerName virt.eduxx.net
</VirtualHost>
---------------------------------
[root @edu00 linux]#/usr/sbin/httpd -t
[root @edu00 linux]# cd /home
[root @edu00 /home]# mkdir dream
[root @edu00 /home]# mkdir dream1
[root @edu00 /home]#cd dream
[root @edu00 dream]#vi index.html
-------------------------------------
<h1>   eduxx.net virtual hosting sample  </h1>
----------------------------------------------  

 


[root @edu00 dream]#cd /home
[root @edu00 /home]#cd dream1
[root @edu00 dream1]#vi index.html
------------------------------------
<h1>   virt.eduxx.net hosting sample </h1>
------------------------------------
[root @edu00 linux]#vi /etc/hosts
192.168.0.xx   virt.eduxx.net
192.168.0.xx   eduxx.net 

[root @edu00 linux]#/etc/rc.d/init.d/named restart
[root @edu00 linux]#/etc/rc.d/init.d/httpd restart
[root @edu00 linux]#netscape & http://eduxx.net
[root @edu00 linux]#netscape & http://virt.eduxx.net
: web browser에서 http://eduxx.net, 그리고  http://virt.eduxx.net

[root @edu00 linux]#lynx  eduxx.net
[root @edu00 linux]#lynx  virt.eduxx.net
[root @edu00 linux]#lynx -dump http://eduxx.net
[root @edu00 linux]#lynx -dump http://virt.eduxx.net

19.2.1.1 w3m을 이용한 web 탐색
 
19.2.1.2 site : www.w3m.org

19.2.1.3 파일 : w3m-0.1.10-tb2.tar.gz

19.2.1.4 lynx와 비교

19.2.1.5 설치
[root @edu00 linux]#./configure
: 옵션        --> enter

 


: language --> english
: 모델        --> mouse
[root @edu00 linux]#make
[root @edu00 linux]#make install

19.2.1.6 실행
[root @edu00 linux]#w3m www.yahoo.co.kr
[root @edu00 linux]#w3m eduxx.net
[root @edu00 linux]#w3m virt.eduxx.net

19.2.2 IP-Based Virtual hosting
[root @edu00 linux]#ifconfig eth0:0 192.168.1.2 netmask 255.255.255.0
[root @edu00 linux]#route add -host 192.168.1.2 eth0:0
[root @edu00 linux]#ifconfig
eth0    192.168.1.1
eth0:0  192.168.1.2
lo      127.0.0.1
   
[root @edu00 linux]#vi /etc/httpd/conf/httpd.conf
----------------------------
NameVirtualHost  
<VirtualHost 192.168.1.1>
ServerAdmin
DocumentRoot
ServerName
ErrorLog
TransferLog
</VirtualHost>

<VirtualHost 192.168.1.2>
ServerAdmin
DocumentRoot

 


ServerName
ErrorLog
TransferLog
</VirtualHost>
-----------------------------
 
19.3 apache php mysql 설치 guide

19.3.1 APM 개요
19.3.1.1 Apache
리눅스, 유닉스, MS-WINDOW에서도 설치 운영이 가능

19.3.1.2 php
personal hypertext preprocessor
html 문서 내부에 포함되어서 서버측에서 실행되는 스크립트 언어
(서버에서 실행되는 cgi를 작성하는 도구)
데이터베이스와의 연동이 뛰어남

19.3.1.3 Mysql
중소형급에서 사용되는 관계형 데이터베이스 서버

19.3.2 apm 설치

19.3.2.1 기본 개념
대부분의 소스 설치는
[root @edu00 linux]#./configure
[root @edu00 linux]#make
[root @edu00 linux]#make install  형식으로 이루어진다.

19.3.2.2 configure
컴파일에 필요한 여러 가지 옵션을 제공하는 기능이다.
설치위치 지정(--prefix=/usr/local/xxx)나 언어사용(--with-charset=euc_kr)이

 


옵션으로 설정된다.
[root @edu00 linux]#./configure --help

19.3.2.3 make
본래 복잡한 compile을 자동화하는 유틸리티인데, 수많은 소스들을 각기 compile하여 목적 코드를 생성하고 이를 링크하는 과정을 도와주는 것이다.
형식은 make [target]이다.
target없이 make 명령을 내리면 같은 디렉토리에 있는 makefile or Makefile을 찾아서 그 안에 적혀있는 규칙에 따라 compile한다.
make distclean은 이미 존재하는 목적 file들을 지워서 잘못된 설정값을 수정할 수 있다.
make clean
make install은 compile된 실행file들이 자기 위치에 제대로 자리잡도록 설치하는
명령이며 root 권한을 요구한다..

19.3.3 apm 삭제
[root @edu00 linux]#ps -aux | grep httpd
[root @edu00 linux]#ps -eaf | grep httpd
[root @edu00 linux]#killall httpd
[root @edu00 linux]#rpm -qa | grep apache
[root @edu00 linux]#rpm -e apache
: 의존성 문제로 삭제가 되지 않을 때 차례로 지워준다.

19.3.3.1 apache 삭제
[root @edu00 linux]#rm -rf /var/httpd
[root @edu00 linux]#rm -rf /etc/httpd
[root @edu00 linux]#rm -rf /usr/lib/apache
[root @edu00 linux]#rm -rf /var/log/httpd

19.3.4 site
www.apache.org
php.net

 


mysql.com

19.3.5 설치 유형
static  - apache와 함께 compile이 되게 하는 것으로 compile의 순서가 중요
dynamic - module로 만들어서 module을 올리고 내릴 수 있다.

19.3.6 설치
[root @edu00 root]#cd /tmp
[root @edu00 tmp]#tar -xvzf apache* /usr/local --directory=/usr/local
[root @edu00 tmp]#tar -xvzf php* --directory=/usr/local
[root @edu00 tmp]#tar -xvzf mysql*  --directory=/usr/local

19.3.7 Mysql 설치
1) [root @edu00 tmp]#cd /usr/local
2) [root @edu00 local#groupadd mysql
3) [root @edu00 local]#useradd -g mysql mysql
4) [root @edu00 local]#cd mysql-version
5) [root @edu00 mysql-version]#./configure --prefix=/usr/local/mysql --with-
charset=euc_kr
6) [root @edu00 mysql-version]#make ; make install
7) [root @edu00 mysql-version]#./scripts/mysql_install_db
: /usr/local/mysql-version에서 실행
8) [root @edu00 mysql-version]#chown -R root /usr/local/mysql
9) [root @edu00 mysql-version]#chown -R mysql /usr/local/mysql/var
10) [root @edu00 mysql-version]#chown -R mysql /usr/local/mysql
11) [root @edu00 mysql-version]#cp support-files/my-example.cnf /etc/my.cnf
:  my.cnf 적당하게 수정
12)[root  @edu00 mysql-version]#/usr/local/mysql/bin/safe_mysqld --user=
mysql &

19.3.8  Php와 Apache 설치
1) [root @edu00 mysql]#cd /usr/local/apache-version

 


2) [root @edu00 apache-version]#./configure --prefix=/usr/local/apache
3) [root @edu00 apache-version]#cd ../php-version
4) [root @edu00 php-version]#./configure --with-mysql --with-
apache=../apache-version --enable-track-vars
5) [root @edu00 php-version]#make ; make install
6) [root @edu00 php-version]#cd ../apache-version
7) php3  :[root @edu00 apache-version]#./configure --activate-
module=src/modules/php3/libphp3.a  #php3
php4 : [root @edu00 apache-version]#./configure --activate-
module=src/modules/php4/libphp4.a  #php4 
8) [root @edu00 apache-version]#make ; make install
9) [root @edu00 apache-version]#cd ../php-version
10)php3à[root @edu00 php-version]#cp php3.ini-dist /usr/local/lib/php3.ini
   php4à[root @edu00 php-version]#cp php.ini-dist /usr/local/lib/php.ini
11)[root @edu00 apache-version]#vi /usr/local/apache/etc/httpd.conf
: Edit httpd.conf or srm.conf (/usr/local/apache/etc/) 파일에 다음을 추가, 수정, 확인
: 추가  php3: AddType application/x-httpd-php3 .php3
: 추가  php4: AddType application/x-httpd-php .php
: 수정 ServerName
: 확인 DocumentRoot /usr/local/apache/share/htdocs
[root @edu00 apache-version]#vi /usr/local/apache/share/htdocs/test.php
----------------------------
<? phpinfo(); ?>
-----------------------------
12) web server 구동
[root @edu00 apache-version]#/usr/local/apache/sbin/apachectl start

19.3.9  PHP4.0인 Zend에서 한글이 깨진다?
Zend는 기본적으로 default_charset이 iso-8859-1
[root @edu00 php-version]#vi /usr/local/lib/php.ini
: php.ini 파일에서
: default_charset = "iso-8859-1" 이 부분을 찾아 주석을 풀고

 


: default_charset = "euc_kr"

19.4 Internet Server
19.4.1 rpm package 삭제하기
rpm package를 삭제할 때 의존성이 걸려있는 mod_perl, php 등의 패키지부터 거꾸로 지워나가야 쉽게 삭제할 수 있다.
[root @edu00 linux]#rpm -qa | grep apache
[root @edu00 linux]#rpm –qa | grep imap
[root @edu00 linux]#rpm -qa | grep mysql
[root @edu00 linux]#rpm -qa | grep php
[root @edu00 linux]#rm -rf /home/httpd
[root @edu00 linux]#rm -rf /etc/httpd
[root @edu00 linux]#rm -rf /usr/lib/apache
[root @edu00 linux]#rm -rf /var/log/httpd

19.4.2 아파치 웹 서버 설치의 기본
아파치는 발전을 거듭할 수록 모듈화되어가고 있다.
이는 웹 서버 자체와 추가기능을 분리시킴으로써 동적으로 기능을 지원하거나 불필요한 기능의 추가로 인한 시스템 자원의 낭비를 막고자 하는 의도로 보인다.

19.4.3 아파치와 모듈들 다운로드
1) 아파치의 공식 웹 사이트  http://www.apache.org
2) FastCGI 지원 웹 사이트  http://fastcgi.com에서 FastCGI의 최신버젼
(mod_fastcgi-버전.tar.gz)
3) 아파치 내장 Perl 인터프리터 웹 사이트  http://perl.apache.org에서 Perl
인터프리터의 최신버전(mod_perl.버전.tar.gz)
4) PHP 공식 웹 사이트  http://php.net
5) Mysql 공식 웹 사이트  http://mysql.com
6) Imap 웹 사이트 httpd://washington.edu/imap

19.4.4 아파치 소스 설정, 설치 방법
아파치는 GNU의 컴파일 방법을 따르는 APACI라는 Autoconf형의 인터페이스를

 


제공하고 있다. 이에 따라 configure라는 Shell 스크립트를 실행하여 Makefile을 생성하게 되는데, 이때 소스에 여러 설정을 할 수 있다.
대표적인 것이 설치위치 지정과 모듈 설정이다.
1. GNU 컴파일 방법 : configure (설정)  --> make(컴파일) --> make install(설치)
2. 아파치 설치 위치 지정 방법
1)하나의 디렉토리 아래 모두 설치(스크립트 이용)
#./configure --perfix=절대경로
: ./configure --perfix=/usr/local/apache
#./configure --perfix=절대경로 --logfiledir=절대경로
: ./configure –-prefix=/usr/local/apache --logfiledir=/var/log/httpd
2) layout에 근거하여 파일시스템으로 분산 설치
#./configure --with-layout=레이아웃이름
:./configure --with-layout=RedHat
3. 모듈 추가 방법 (모듈 추가 후 재 컴파일의 편의를 위해 이전 configure 옵션을
 config.status로 저장하고 있다.)
아파치의 기본 내장 모듈의 추가/삭제, 구동/다운 방법 (우선순위에 의해
구동되어야 하므로 스크립트를 이용)
#./config.status --enable-module=모듈이름
#./config.status --disable-module=모듈이름
2)서드파티 모듈(외부 확장 모듈)의 추가 방법 (스크립트 이용)
#./config.status --activate-module=src/modules/디렉토리명/lib모듈명.a
4. 압축 해제

19.4.5 MySQL Compile & Installing
[root @edu00 local]#cd mysql-3.22
[root @edu00 mysql-3.22]#./configure --prefix=/usr/local/mysql --with-
charset=euc_kr
[root @edu00 mysql-3.22]#make ; make install
[root @edu00 mysql-3.22]#cd /usr/local/mysql
[root @edu00 mysql]#./bin/mysql_install_db
[root @edu00 mysql]#./bin/safe_mysqld &
[root @edu00 mysql]#vi /etc/rc.d/rc.local

 


----------------------------------------
..................
#MySQL Starting!!
/usr/local/mysql/bin/safe_mysqld &
---------------------------------------
[root @edu00 mysql]#./bin/mysqladmin -u root password 'password'

19.4.6 IMAP & POP Installing
[root @edu00 local]#mv imap-4.7c imap
[root @edu00 local]#cd imap
[root @edu00 imap]#make slx
[root @edu00 imap]#cp imapd/imapd /usr/sbin
[root @edu00 imap]#cp ipopd/ipop[23]d /usr/sbin
[root @edu00 imap]#ln -s c-client include
[root @edu00 imap]#ln -s c-client lib
[root @edu00 imap]#ln -s c-client libc-client
[root @edu00 imap]#vi /etc/inetd.conf
[root @edu00 imap]#killall -HUP inetd
[root @edu00 imap]#telnet 0 143
[root @edu00 imap]#telnet 0 110

19.4.7 ZendOptimizer.so, GD_Freetype library Install
19.4.7.1 ZendOptimizer.so Install
[root @edu00 linux]#cd /usr/local/ZendOptimizer-B*
[root @edu00 ZendOptimizer-Beta]#mkdir -p /usr/local/Zend/lib
[root @edu00 ZendOptimizer-Beta]#cp ZendOptimizer.so /usr/local/Zend/lib
19.4.7.2 gd library Install
[root @edu00 linux]#cd /usr/local/gd1.5
[root @edu00 gd1.5]#make
[root @edu00 gd1.5]#cp libgd.a /usr/local/lib
[root @edu00 gd1.5]#mkdir /usr/local/include
[root @edu00 gd1.5]#cp *.h /usr/local/include

 


19.4.7.3 freetype library Install
[root @edu00 linux]#cd /usr/local/freetype-1.2
[root @edu00 freetype-1.2]#./configure
[root @edu00 freetype-1.2]#make ; make install
: 에러 발생시 /usr/local/freetype-1.2/test/arch/unix/Makefile 수정
[root @edu00 freetype-1.2]#vi test/arch/unix/Makefile

19.4.8 Third-Party Module 추가하기
19.4.8.1 아파치 소스설정 방법(Apache Makefile 생성)
대부분의 다른 프로그램들처럼 아파치도 설정에 관한 정보를 INSTALL이란 파일로 제공하고 있다.
19.4.8.2 설치위치 지정
설치 위치 지정에는 두가지 방법이 있다.
한 디렉토리 아래 모두 설치하는 방법과 layout에 근거하여 리눅스의 파일시스템 구조로 분산 설치하는 방법이다. 여기서는 리눅스의 표준 파일 시스템 구조에 분산해서 설치한다.
config.layout이라는 파일을 보면 여러가지 layout들이 소개되고 있으며 원하는 layout대로 선택해서 설정하면 된다.
자신만의 layout을 갖고자 한다면 <Layout MyLayout>을 만들면 된다.
<Layout RedHat>을 이용하도록 한다.
[root @edu00 apache_1.3.14]#./configure --with-layout=RedHat
-----------------------------------------------
# RedHat layout
<Layout RedHat>
 prefix:  /usr
 exec_prefix: $prefix
 bindir:  $prefix/bin
 sbindir:  $prefix/sbin
 libexecdir: $prefix/lib/apache
 mandir:  $prefix/man
 sysconfdir: /etc/httpd/conf
 datadir:  /var/httpd

 


 iconsdir:  $datadir/icons
 htdocsdir: $datadir/html
 cgidir:  $datadir/cgi-bin
 includedir: $prefix/include/apache
 localstatedir: /var
 runtimedir: $localstatedir/run
 logfiledir:  $localstatedir/log/httpd
 proxycachedir: $localstatedir/cache/httpd
</Layout>
configure라는 스크립트를 한번 실행하면 재컴파일시의 편의성을 고려하여
config.status라는 스크립트가 생성되어 설정사항을 저장한다.
설정을 추가할 때는 이를 이용하여 중복된 작업을 하지 않는다.
 
19.4.8.3 아파치 표준 모듈 설정
아파치는 추가 기능들을 표준 모듈로 지원하므로 필요한 기능을 추가하고자 한다면 컴파일시에 기능을 활성화시켜주어야 한다. 그리고 새로운 모듈을 추가하면 그만큼 시스템의 리소스를 많이 차지하게 된다.
이런 모듈들을 src/Configuration.apaci라는 파일로 관리하게 된다.
AddModule이라는 지시자로 모듈을 추가한다.
src/Configuration.apaci     
-----------------------------------------
# config file for the Apache httpd
###################################
# Makefile configuration
EXTRA_CFLAGS= `$(SRCDIR)/apaci`
EXTRA_LDFLAGS=
EXTRA_LIBS=
EXTRA_INCLUDES=
EXTRA_DEPS=
#TARGET=
##################################
# Dynamic Shared Object (DSO) support

 


#CFLAGS_SHLIB=
#LD_SHLIB=
#LDFLAGS_SHLIB=
#LDFLAGS_SHLIB_EXPORT=

Rule SHARED_CORE=default
Rule SHARED_CHAIN=default
################################
# Rules configuration
Rule SOCKS4=no
Rule SOCKS5=no
Rule IRIXNIS=no
Rule IRIXN32=yes
Rule PARANOID=no
Rule EXPAT=default
Rule DEV_RANDOM=default
Rule WANTHSREGEX=default
#################################
# Module configuration
# AddModule modules/experimenta/mod_map_static.o
# AddModule modules/standard/mod_vhost_alias.o
AddModule modules/standard/mod_env.o
AddModule modules/standard/mod_log_config.o
.............. 생략 ..................

Makefile configuration 부분은 Makefile에 추가 flag를 추가하기 위한 섹션으로
리눅스에서는 추가설정이 필요없다.
Rule configuration 부분은 특정 기능을 작동시키고 중단시키기 위한 섹션으로
부가 설정이 필요없다.
Module configuration 부분은 추가적인 모듈을 설정하는 섹션이다.
AddModule 행을 이용해서 아파치에 부가적인 모듈들을 추가할 수 있는데 모듈들은 우선 순위가 있어서 가장 위가 우선순위가 높다.

 


부가적인 모듈을 제거하고자 할 때 이 파일에서 #을 제거함으로써 가능한데, 그런 수작업보다는 configure 스크립트를 사용하는 것을 권장한다.    
[root @edu00 apache_1.3.14]#./configure --disable-module=cgi
[root @edu00 apache_1.3.14]#./configure --enable-module=usertrack

기본적으로 enable 설정이 되어 있지 않은 모듈 중에서 사용할 것들을 enable시켜보자.
[root @edu00 apache_1.3.14]#./config.status --enable-module=info –enable-
module=proxy
     
19.4.9 아파치 서드파티 모듈 추가하기

19.4.9.1 mod_fastcgi Install
서버에서의 CGI 실행속도를 향상시키기 위한 모듈로서, 클라이언트의 CGI 매번 요청때마다 프로세스를 실행시키지 못하도록 CGI 프로세스를  활성화상태로 유지하는 방법으로 실행속도를 높이는 모듈이다.
이 유형은 소스 자체를 그대로 옮겨 놓은 방법을 사용한다.
1) /tmp에서 mod_fastcgi_버전.tar.gz를 풀고 디렉토리 이름을 간단히 fastcgi로 바꾼다.
2) 디렉토리 fastcgi를 아파치/src/modules로 옮긴 후, 아파치 디렉토리로 이동한다.
3) 아파치를 다시 설정하기 위해 다음을 실행한다.
[root @edu00 apache_1.3.14]#mv mod_fastcgi_2.2.4
apache_1.3.14/src/modules/fastcgi

19.4.9.2 mod_perl Install
mod_perl은 Perl을 임베딩하여 CGI의 오버헤드를 줄이고 서버 API를 펄에서 사용할 수 있게 한다. 이 모듈을 아파치에 설치하려면 두 단계를 거쳐야 한다.
먼저 Perl을 mod_perl로 업데이트시켜야 하고 그 다음에 아파치를 mod_perl로 업데이트시켜야 한다.
이 유형은 소스설정 스크립트가 Perl로 쓰여진 경우이다.
make install을 통해서 자동을 아파치/src/modules 디렉토리로 복사하게 된다.
1) /tmp에서 mod_perl_버전.tar.gz를 풀고 그 디렉토리로 이동한다.
2) Makefile.PL 스크립트를 이용해서 mod_perl의 소스를 설정한다.
3) Perl을 업데이트하고 모듈 소스를 아파치 디렉토리로 설치한다.

 


[root @edu00 linux]#cd /usr/local/mod_perl-1.24_01
[root @edu00 mod_perl-1.24_01]#perl Makefile.PL
APACHE_SRC=../apache_1.3.14/src DO_HTTPD=1 USE_APACI=1 PREP_HTTPD=1 EVERYTHING=1
[root @edu00 mod_perl-1.24_01]#make ; make install

19.4.9.3 php4 Install
php는 자체가 컴파일되고서 아파치에 지원모듈을 설치하는 것으로 GNU 방식을 따르고 있어 configure --> make --> make install의 순서로 설치하고 아파치/src/modules 디렉토리에 모듈 소스를 추가할 수 있다.
1) /tmp에서 php-버젼.tar.gz를 풀고 그 디렉토리로 이동한다.
2) configure라는 스크립트를 이용해서 PHP 소스를 설정한다.
3) PHP를 컴파일하고 아파치 지원모듈 소스를 아파치/src/modules 디렉토리에
설치한다.
[root @edu00 local]#tar xvzf php-4.0.1p12.tar.gz
[root @edu00 local]#cd php-4.0.1p12
[root @edu00 php-4.0.1p12]#./configure --with-apache=../apache-1.3.14 –-with-
mysql=../mysql --with-imap=../imap --disable-debug --enable-track-vars
[root @edu00 php-4.0.1p12]#make ; make install
[root @edu00 php-4.0.1p12]#cp php.ini-dist /usr/local/lib/php.ini
[root @edu00 php-4.0.1p12]#vi /usr/local/lib/php.ini
------------------------------------------
..................
zend_optimizer.optimization_level=1
zend_extension="/usr/local/Zend/lib/ZendOptimizer.so"
--------------------------------------------

 

 

 

 


19.4.10 Apache Install

19.4.10.1 Apache Install
[root @edu00 apache-1.3.14]#./config.status --activate-
module=src/modules/fastcgi/libfasgcgi.a --activate-
module=src/modules/perl/libperl.a \
> --activate-module=src/modules/php4/libphp.a
[root @edu00 apache-1.3.14]#make ; make install
[root @edu00 apache-1.3.14]#httpd -l

19.4.10.2
19.4.10.2.1 httpd 웹서버 데몬 직접 구동 
아파치 웹 서버 구동이나 syntax 그리고 현재의 상태 확인이나 컴파일 당시의 설정값까지 볼 수 있다.
[root @edu00 linux]#httpd -h

19.4.10.2.2 apachectl 스크립트 사용
apachectl을 PATH가 설정된 디렉토리(usr/sbin)으로 복사한다.
[root @edu00 linux]#apachectl help

19.4.10.2.3 System V 방식
시스템 부팅시에 서버를 자동으로 실행하도록 apachectl과 유사한 스크립트를
/etc/rc.d/init.d에 만들고 /etc/rc.d 아래의 각 run level 디렉토리에 링크파일을 만들어 놓음으로써 해당 run level에서 자동으로 구동할 수 있다.

19.4.10.2.4 연동 확인
 

[이 게시물은 관리자님에 의해 2011-10-31 17:32:05 Linux에서 이동 됨]
추천
0
  • 복사

댓글 1개

© SIRSOFT
현재 페이지 제일 처음으로