[ Apache ]

- 공개형 웹 서버 프로그램이지만, 매우 강력하고, 다양한 대부분의 플랫폼을 지원.
- 모듈 추가로, 확장기능 추가가 용이하다.


웹 서버의 동작 방식

정적 ( html 등... )
- 웹 브라우저(클라이언트)가 http ( 80번 포트. 디폴트 ) 로 연결하여 사용자 index.html 을 요청
해당 웹서버는 클라이언트(브라우저)가 요청한 파일을, 자기 시스템에서 검색하여 읽고, 브라우저에게 제공.
즉, 단순 송수신. 단순 출력

 

동적 ( php, jsp, asp 등.. )
- 웹 브라우저(클라이언트)가 http ( 80번 포트, 디폴트) 로 연결하여 동적인 페이지 index.php 를 요청
해당 웹서버는 php 를 자체 실행 후, 클라이언트가 요청한 변수(매개변수)를 넘겨준다.
그리고 , 그 생성된 변수의 결과를 읽고, 클라이언트의 브라우저에 전송한다.

 

 

[ 아파치 패키지 ]

아파치는 리눅스 서버의 기본 프로그램이다. httpd 데몬으로 동작한다.
실행되지 않을시 기본프로그램에 포함되어 있는지, 설정을 확인한다.

 

ex) /etc/rc.d/init.d/httpd [start/stop/restart/status]

 

 


[ 환경설정 ] - /etc/httpd/conf/httpd.conf

 

- 시작전에 설치cd 의 패키지 디렉토리에서 httpd 관련 모든 패키지를 설치한다.

 


환경설정파일의 기준은 CentOS 6.3(Final) 을 기준으로 설명.

 

1. ServerTokens

 

41 # Don't give away too much information about all the subcomponents
42 # we are running.  Comment out this line if you don't mind remote sites
43 # finding out what major optional modules you are running
44 ServerTokens OS

웹 브라우저에 에러구문, 또는 표기구문에 출력되는 내용이다.
값은 Full / OS / Minor / Min / Major / Prod 를 줄 수 있다. 보통 일반적인 웹 서버는 Full을 사용한다.

Full - 아파치 서버버젼, 운영체제, 모듈 정보 등을 모두 출력.
OS - 운영중인 아파치와 리눅스 서버버젼만을 출력.

 

 

2. Listen

 

128 # Listen: Allows you to bind Apache to specific IP addresses and/or
129 # ports, in addition to the default. See also the <VirtualHost>
130 # directive.
131 #
132 # Change this to Listen on specific IP addresses as shown below to
133 # prevent Apache from glomming onto all bound IP addresses (0.0.0.0)
134 #
135 #Listen 12.34.56.78:80
136 Listen 80

Listen 80 -> 80번 포트로 들어오는 모든 소리에 귀를 기울인다.
포트 포워딩의 개념이다.

웹 사이트를 리뉴얼 하거나, 공사중에 테스트로 가동시키고, 일반인은 접근하지 못하게 하고 싶을 때,
해당 포트만 열어두면 된다. ( 둘 중 하나는 주석처리하고 하나만 열어야 한다 )

ex)기본 접속( 80포트로 접속이 불가하고 8080 포트만 테스트용으로 열기 )

Listen 192.168.132.129:8080
#Listen 80

 

 


3. DocumentRoot

 

#
# DocumentRoot: The directory out of which you will serve your
# documents. By default, all requests are taken from this directory, but
# symbolic links and aliases may be used to point to other locations.
#
DocumentRoot "/var/www/html"


아주 중요한 , 해당 사이트의 index.html 가 위치하는 장소. 즉 해당 유저의 웹 서비스 개시 홈디렉토리 경로.
root의 웹서버 기본 경로는 /var/www/html 로 지정되어 있다. 추가 사용자를 주기 전에 해당 메인(서버)도 웹설정된
경로가 지정되어 있어야 한다.

웹 서비스는 홈디렉토리 내부에 반드시 기본설정으로 public_html 디렉토리가 있어야 한다. ( 그 안에 index.html )

 

 


4. UserDir ( co.kr/~user1/ )

 

<IfModule mod_userdir.c>
    #
    # UserDir is disabled by default since it can confirm the presence
    # of a username on the system (depending on home directory
    # permissions).
    #
    UserDir disabled

    #
    # To enable requests to /~user/ to serve the user's public_html
    # directory, remove the "UserDir disabled" line above, and uncomment
    # the following line instead:
    #
    #UserDir public_html

</IfModule>

UserDIR = 개별유저의 홈디렉토리를 사용할 것인가( 디폴트 : NO )
Userdir public_html = 개별유저를 사용할 시 index.html(웹 브라우저에 개시될 최초의 메인화면) 디렉토리 위치

ex) root 웹서버를 사용하지 않고 user1 이라는 사용자를 웹 서비스로 출력하고싶다.

위의 두 주석을 바꿔준다.

#UserDir disabled
UserDir public_html

DocumentRoot "/home/user1/public_html" - user1 의 홈 디렉토리


이렇게 하면 index.html 가 보이지 않고 Fobbiden 에러가 난다면 정상.
문제점을 찾아보도록 한다.

( 유저 홈디렉토리의 권한이 700으로 되어있다. )

현재 이 방법은 거의 사용하지 않는다.

 

 

5. Alias ( 별칭 )

 

~계정명 을 사용하지 않고 순수한 디렉토리명 ( www.myungin.co.kr/user1/ ) 을 사용하고 싶을 때 사용

#위의 UserDir 두 부분을 모두 주석처리 한다.
그 사이에 다음을 입력한다.

 

Alias /user1/ "/home/user1/public_html/"

후방의 디렉토리 표시 "/" 와 , 매개변수의 "/" 마무리를 반드시 매칭시켜줘야 한다.
그렇지 않으면 퍼미션 에러가 날 것이다.

 

Alias 의 / / 는 디렉토리의 경로가 아닌 "문자" 대체 인식의 성격이 강하다.

 

도메인의 메인 디렉토리에 사용하기보다는, 다른 용도에 주로 쓰이고 있다.

 

 

6. Virture Host ( 가상 호스트 도메인 )

 

위의 방법은 해당 도메인의 특정 계정만을 이용하는 방법이다.
가상호스트는 한 도메인으로 여러 사용자를 계정단위로 운용할 수 있다.

 

같은 아이피라도, 호스트의 명칭이나 포트에 따라
www.myungin.co.kr 로 접속하면 루트사용자의 홈디렉토리 index.html가
user1.myungin.co.kr 로 접속하면 user1의 홈디렉토리 index.html가 출력될 것이다.


ex ) kin.naver.com //  mail.naver.com 같은 호스트(www) 부분을 대체하는 디렉토리명을 말한다.
현재 가장 널리 쓰이고 있다. 우리는 해당 부분이 단순 홈디렉토리가 아닌 "계정" 그 자체를 의미한다는 것을
이제 이해해야 한다. 계정이 아닌 디렉토리라고 한다면, 해당 디렉토리에 어떤 사용자 권한을 지정하는 순간,
해당 사용자는 해당 디렉토리 전체를 손댈 수 있기 떄문에 보안에 매우 취약해진다.
계정단위로 관리하는 것이 훨씬 합리적이다.


가상호스트 구성하면 위에서 했던 모든 설정보다 우선시되어 실행된다.

(위의 설정들은 기본으로 돌려놓자)

 

(1) 네임서버 조회 - 에러출력 - 정상


(2) 가장 아랫 부분 Virture Host 의 모든 주석을 제거하고 해당 부분만 남긴다. (복사해서 써라! 백업 )
(가장 기본 구성)

#<VirtualHost *:80>
#    ServerAdmin webmaster@dummy-host.example.com
#    DocumentRoot /www/docs/dummy-host.example.com
#    ServerName dummy-host.example.com
#    ErrorLog logs/dummy-host.example.com-error_log
#    CustomLog logs/dummy-host.example.com-access_log common
#</VirtualHost>

<VirtualHost *:80>
    DocumentRoot /www/docs/dummy-host.example.com
    ServerName dummy-host.example.com
</VirtualHost>

로 다른 부분 지우고, 두 개를 만든다.

( 이유는 www 호스트와 user1 호스트 두 개를 동시에 운용하기 때문이다. )

다음과 같이 구성한다. ( root 계정은 사용할 수 없다 )

<VirtualHost 192.168.132.129:80>   // 메인 네임서버의 아이피를 입력 
    DocumentRoot /home/main/html/public_html // 해당 호스트(계정)의 메인경로
    ServerName www.myungin.co.kr // 해당 호스트의 메인 주소.
</VirtualHost>


<VirtualHost 192.168.132.129:80>
    DocumentRoot /home/user1/public_html // 중요.
    ServerName user1.myungin.co.kr // 중요.
</VirtualHost>

실제로 실습시엔 위에 // 주석 금지입니다. 에러남 ;;

 

여기까지 한다면, www는 보이지만 user1은 여전히 안 되는 사실을 알 수 있다.
(퍼미션 문제는 더 이상 생략)

설정 저장 후, /var/named 의 네임서버 환경설정 파일을 연다.
(기존 구성했던 네임서버명.zone , 아이피.zone )

추가 도메인을 입력한다.

myungin.co.kr.zone

www     IN      A       192.168.132.129
user1   IN      A       192.168.132.129

하단에 www외에 user1이라는 호스트 정방향도 추가해준다.

192.168.132.zone 파일도 설정해 주어야 한다.

 

아주 최소한의 구동가능한 버추어 호스트 세팅 완료.

 

'ETC' 카테고리의 다른 글

CentOS 에서 그누보드 설치시 퍼미션 오류 문제  (0) 2013.05.13
Mysql 기본 Charset 변경  (0) 2013.05.13
[ Basic ] Run Level과 Process 확인하기  (0) 2013.04.23
[ Basic ] Mount 와 Fdisk  (1) 2013.04.22
[ Basic ] Package 와 Tar  (0) 2013.04.22
블로그 이미지

늙은M군

개인 저장공간입니다. 해당 일부 과정들을 공인 인터넷 환경에서 악성적으로 응용할 시 피해가 발생할 수 있으며, 그에 대해 책임은 사용자에게 있습니다!! 주의해주세요.

,