본문 바로가기
넷칼리지

Linux Web Server

by 북한산산적 2009. 5. 22.
Web server 설치
기본적인 Web Server 구성을 위한 표준 패키지 설치
확장된 기능을 사용하기 위한 추가 패키지 설치

web server 구축 관련 패키지 설치 
패키지 종류
http : httpd web server
httpd-suexec : suexec binary for the Apache http server
system-config-httpd : apache configuration Tool
httpd-manual : httpd web server 에 대한 문서 자료
mod_perl : apache web server를 위한 내장된 펄 해석기
squid : Squid 프록시 캐시 서버
mod_auth_kerb :Kerberos Authentication module for HTTP
mod_ssl : apache web server 에 사용되는 암호 해독 지원
mod_auth_mysql :MySQL database를 이용한 apache web server에 사용되는 기본 사용자 인증 프로그램
discache : Distributed SSL Session Cache
mod_authz_ldap :LDAP Authorization module for the Apache HTTP server
crypto-utils : SSL Certificate and Key Management Utilities
mod_pythnon : Apache Web Server에 사용되는 내장 Python 해석기



설치 확인및 설치
#rpm -qa |grep httpd            ----------- HTTP 관련 패킺비 설치 확인
#rpm -ivh httpd-(버젼).rpm
#rpm -ivh httpd-suexec-(버젼).rpm
#rpm -ivh httpd-manual-(버젼).rpm
#rpm -ivh system-config-httpd-(버젼).rpm


httpd.conf 설정

Section 1 :Global Environment (Apache Web Server 에 전체적으로 영향을 미치는 환경 설정)


/etc/httpd/conf/httpd.conf


ServerTokens OS
->Server HTTP 응답 헤더 설정, 오류문 등 Server 메시지에 출력되는 Server에 대한 정보 설정
->OS : Apache Server 버전과 O/S 정보만 출력 (기타 Full,Min,Major,Prod 값 설정가능)
ServerRoot "/etc/httpd"
->apache가 정상적으로 작동 하는데 필요한 여러파일(설정파일,로그파일 ,바이너리파일 ,모듈등)들의 위치설정
PidFile run/httpd.pid
->apache가 실행될 때 자신의 프로세서 아이디 (PID)를 기록 하고자 하는 파일 지정
Timeout : 120
->Client 의 요청을 받은뒤 응단해 주기까지의 시간을 의미,시간 초과시 Client 접속은 해제
KeepAlive Off
->한번 연결된 연결을 유지할 것인지 결정하는지시자
->Client 가 접속되어 있는 상태에서 여러 요청을 허용할수 있는데 On 설정시 요청에 대한 처리 속도 향상
MaxKeepAliveRequests : 100
->하나의 연결에서 허용할 최대 요청수를 지정하는 지시자, 제한을 두지 않을 경우는 0
KeepAliveTimeout 15
-> 동일한 Client 가 지속적인 접속으로 다음 요청을 위해서 기다리는 시간을 설정
-> 지정된 시간 동안 요청이 없을 시 접속을 해제
Listen : 80
-> Apache 가 동작할 Port를 지정하는 지시자 , 특정 IP는 별도 Port를 부여할 경우에도 사용
Include conf.d/*.conf
->Apache의 설정 파일 httpd.conf외에 별도로 특정 모듈들의 설정파일을 따로 만들어 사용

Section 2 : 'Mani' Server Configuration (메인서버 환경설정)
User apache 
Group apahe
-> Apache Web Server 의 프로세서를 실행할 때 소유권을 갖게 되는 사용자와 그룹지정
-> Apache 메인 프로세서는 root의 권한으로 실행되고 나머지 자식 프로세서는 apache 권한으로 실행
SerAdmin root@localhost
-> 시스템 관리자의 E-MAIL 주소 설정
ServerName new.host.name:80
-> Client 에게 보내줄 호스트 이름을 설정 (DNS에 등록된 이름을 사용해야함)
-> 등록된 도메인이 없는 경우 IP Address 입력(192.168.0.160:80)
DocumentRoot "/var/www/html"
-> Apache Web Server 가 Service를 하기 위한 기본 문서 파일이 위치하는 Directory
<Directory />
                 Options FollowSymLinks
                 AllowOverride None
</Diretory>
->Apache Web Server 가 접근하는 각각의 Directory 에 대해 어떠한 기능/서비스를 허용,거부할 것인지를 설정
->보안을 고려하여 최상위 /(root) Directory는 매우 제한적인 기본값 설정

<Directory "/var/www/html">
</Directory>
->Apache Web Server 의 기본 웹 문서 Directory 지정(DocumentRoot 지시자의 경로와 동일하게 입력)
-><Directory 경로 ></Directory> 지시자 사이에 Options 설정을 통해 해당 Directory 접근 제한 설정
-> 지정된 경로의 하위 Directory까지 적용
*옵션 ----------------------------------------------------------------------------------
None : 옵션을 사용하지 않음
All : MultiViews를 제외한 모든 옵션을 사용
Indexes : DirectoryIndex파일 (Ex. Index.html)이 없을 경우 Directory의 내용을
보여주는 것을 허용, 보안상 사용하지 않음
Includes : Server측 SSI(Server-Side Includes)허용
FollowSymLinks : Directory 의 Symbolic Link또는 Directory일 경우 원본파일이
소유권자와 같은 권한일 경우 Symbolic Link 를 따르도록 결정
ExecCGI : CGI Script 실행 허용 여부 결정
MuliViews : Client 의 Browser에따른 차별화된 내용을 보임
-----------------------------------------------------------------------------------------
AllowOVERRIDE :웹문서 Directory 에 접근 제어 설정 파일 (.htaccess)를 생성하여 각 Directory의 권한
설정을 재정의 할것인지 여부 설정
All 또는 None으로 설정하거나 Options,Fileinfo,AuthConfig,Limit를 조합하여 설정

UserDir disable
->Web Server 에 일반 계정으로 Home Page 를 운영하고자 할경우 일반 사용자의 웹문서 Directory지정
설정방법 :1) UserDir public_html
              2) UserDir /var/html
              3) UserDir /var/www/*/docs

ex1) UserDir Public_html 설정시 지정되는 웹문서의 위치
/home/username/Public_html/index.html
ex2) UserDir enable
UserDir disable root user01 user02
: 일반 사용자에게 Web Directory 기능을 허용하되, root,user01,user02 사용자는 불허
 DirectoryIndex Index.html Index.html.var
-> Client가 Web Server 에게 웹문서를 요청할때 Web Server가 웹문서를 찾는 순서를 지정
AccessFileName .htaccess
-> 각각의 Directory에 대해 AllowOverride 지시자에 의해 주어진 옵션에 한하여 Directory의 접근권한을 
설정할수 있는 파일을 지정
HostnameLookups off
-> Apache Web Server의 오류 로그 이름과 위치 지정(Server 작동 관련 문제 발생시 원인과 해결 방법제공)
LogLevel warn 
-> error_log 파일에 기록되는 에러 메시지의 레벨 지정
->  debug,info, notice, warn, error, crit, alert, emerg 값 중에서 지정
LogFormat
-> combined 형식, 또는 common 형식 Log File Format 정의
-> combined 형식은 commont 형식과 큰 차이는 없으며 %{Referer}i,%User-Agent}i 사용
-> %{Refere}l: HTTP 요청 헤더(Client 가 참조한 페이지), %User-Agent}l:Client가 사용한 Web Browser
CustomLog logs/access_log combined
-> Client가 Web Server에 접근한 로그를 기록해 주는 access_log파일의 위치 지정
CustomLog log/referer_log referer
-> Client가 Web Server에 요청한 페이지 정보 출력
CustomLog logs/agent_log agent
-> Client가 Web Server에 접근할 때 사용한 Web Browser정보출력


Section 3 : Virtual Hosts(가상 호스트에 대한 환경 설정)
Virtual Hosts 설정이란?
1) Web Server 한대를 이용하여 다수의 도메인 (Web Site)을 운영할 경우에 사용
2) 이름기반 (Name-based)방식, IP기반(IP-based)방식, 이름-IP 기반(Name & IP-based) 방식이 존재
-> 이름기반 가상호스트 방식 : 하나의 IP Address를 갖는 Web Server를 이용하여 다수의 도메인을 운영
-> IP 기반 가상 호스트 방식 : 다수의 IP Address를 갖는 Web Server를 이용하여 다수의 도메인을 운영
3)가상 호스트가 정상적으로 설정되었는지 확인 하는 방법 = httpd -S
NameVirualHost *:80
-> 이름기반 (Name-based)방식에서만 사용하는 지시자이며 * 대신 Web Server 의 IP Address입력
<VirtualHost *:80>
</VirtualHost>
-> Virtual Hosting 설정과 관련된 설정(이름기반 ,IP 기반,이름-IP 기반 방식 모두 해당)

지시자 : 의미
ServerAdmin : 가상호스트 관리자의 E-MAIL 설정
DocumentRoot :웹문서 Directory
ServerName : 가상 호스트의 Domain Name
ErroLog : 가상호스트 도메인의 에러 로그 파일의 위치와 이름지정
CustomLog : 가상호스트 도메인의 접속 로그 파일의 위치와 이름지정







DNS - test.com 


/var/named/chroot/var/var/named
 cp localhost.zone test.com.zone
 vi test.com.zone
                IN A            127.0.0.1
                IN AAAA         ::1
삭제

www             IN A            192.168.1.35
추가




 vi etc/named.conf

zone "test.com" IN {
        type master;
        file "test.com.zone";
};

/etc/httpd/logs  Webservice 로그파일 저장되는 경로

/etc/httpd/conf/httpd.conf


NameVirtualHost 192.168.1.35:80  <--- # 제거후 VirtualHost 사용할 ip로 설정 


<VirtualHost 192.168.1.35:80>
    ServerAdmin webadmin@test.com
    DocumentRoot /var/www/html/test.com
    ServerName www.test.com
    ErrorLog logs/test.com-error_log
    CustomLog logs/test.com-access_log common
</VirtualHost>
<VirtualHost 192.168.1.35:80>
    ServerAdmin webadmin@test1.com
    DocumentRoot /var/www/html/test1.com
    ServerName www.test1.com
    ErrorLog logs/test1.com-error_log
    CustomLog logs/test1.com-access_log common
</VirtualHost>
<VirtualHost 192.168.1.35:80>
    ServerAdmin webadmin@test2.com
    DocumentRoot /var/www/html/test2.com
    ServerName www.test2.com
    ErrorLog logs/test2.com-error_log
    CustomLog logs/test2.com-access_log common
</VirtualHost>

/var/www/html/  <--------- index파일 디렉토리 위치 test.com,   test1.com,     test2.com index 파일 위치


named.conf 리눅스에선 named.ca

ftp ftp.internic.org
anonymous
cd domain
get named.root