728x90
300x250
[PC활용] APMSetup 6 - 설치

 

이번에 소개할 것은 윈도우 환경에서 Apache + PHP + MySQL을 사용할 수 있는 프로그램이다.

비록 오래되긴 했지만 유용하다.

APMSetup 프로젝트에 대해서 내가 알고 있는 것은 꽤 오래된 프로젝트로 알고 있다.

 

한참 전성기에는 홈페이지도 구축했던 프로젝트로 기억한다.

몇 년전에는 웹서버를 운영한다는 것은 정말 어려운 일이었다. 지금은 조금만 하면 가벼운 웹사이트는 오픈소스 등을 활용하여 쉽게 구축할 수 있다.

 

웹 사이트를 구축하기 위해서는 제일 중요한 것으로 웹 서버가 존재해야 한다.

 

사용 프로그램(Using Program): 윈도우 10, APMSetup 6

 


1. APMSetup 6

 

http://kldp.net/apmsetup 사이트에 접속한다.

Release를 누른다.

 

 

 

그림 1-1. APMSetup 설치, 도도(Dodo)

 

2907-APMSETUP6_2009041200을 기준으로 소개하겠다.

 

그림 1-2. APMSETUP 6 다운로드 받기, Kldp

 

지금 보는 이러한 사이트를 미러링 사이트 또는 파일 사이트라고 한다.

anonymous(익명의 계정)으로 ftp 사이트 등을 열어놓는 곳들이 있다.

물론 이건 FTP 사이트는 아니고, 웹 사이트이다.

 

 

그림 1-3. APMSETUP 6 다운로드 받기, Kldp

 

 

 

그림 1-4. APMSETUP 6 언어팩 설정

 

 

 

그림 1-5. APMSETUP 6 설치, 도도(Dodo)

 

설치 마법사가 뜨면 "다음 >" 버튼을 누른다.

 

 

그림 1-6. APMSETUP 6 설치, 도도(Dodo)

 

실제 프로그램은 APMSETUP6이 아니고, Apache, MySQL, PHP 따로 존재한다.

 

 

그림 1-7. APMSETUP 6 설치, 도도(Dodo)

 

광고 등의 메시지가 나온다.

선택사항이다. 다음을 누른다.

 

 

 

그림 1-8. APMSETUP 6 설치, 도도(Dodo)

 

APM_Setup 6 for Win 32(required)는 필수적으로 체크되어있다.

CUBRID 2008은 CURRID라는 오픈소스 데이터베이스가 있다.

이의 사항을 확인하고 다음을 누른다.

 

 

 

 

그림 1-7. APMSETUP 6 설치, 도도(Dodo)

 

설치 경로를 선택하고 설치를 누른다.

 

 

그림 1-8. APMSETUP 6 설치마법사, 도도(Dodo)

 

APMSetup의 설치 진행 마법사가 진행된다.

지금 장면은 PhpMyAdmin(오픈소스: PHP기반)도 함께 설치되는 모습이다.

 

 

그림 1-9. 방화벽 동의, 도도(Dodo)

 

웹 서버를 사용하면, 포트 등으로 인해 방화벽 해제를 요구한다.

확인을 누른다.

localhost에서 사용할 경우에도 방화벽 해제는 중요하다.

 

 

그림 1-10. 설치 완료, 도도(Dodo)

 

설치가 완료되었다.

아래의 하단에 보면 APMSetup의 아이콘이 뜬다.

녹색으로 된 아이콘에 마우스를 오른쪽 버튼을 누르면 아래와 같이 메뉴가 뜨는 것을 확인할 수 있다.

 

 

그림 1-11. 하단 아이콘 (APMSetup), 도도(Dodo)

 

그림 1-12. APMSetup 6 프로그램

 

그림 1-12는 APMSetup 6이라는 프로그램을 말한다.

Apache Foundation의 Apache 2.2, Oracle의 MySQL Community Edition, PHP.net의 php 5.2가 담겨져 있다.

 

이 프로그램들을 관리하고 실행하는데 도와주는 프로그램이 APMSetup이다.

물론 APMSetup 6이 없어도 Apache 2.2, MySQL, PHP 5.2는 각각 독립적으로 실행이 가능하다.

 

 

 

그림 1-13. Localhost 웹 사이트, 도도(Dodo)

 


2. 참고자료(Reference)

 

1. "/apmsetup/release", kldp, https://kldp.net/apmsetup/release/, Accessed by 2018-08-05

반응형
728x90
300x250

[Ubuntu 12.10] 우분투에 아파치 + 톰켓 설치하기

 

우분투에 아파치 및 톰켓을 설치하는 방법에 대해서 소개하고자 한다.

 


1. 설치에 필요한 큰 과정은 다음의 순서로 진행된다.

    a) Sun Java6이 먼저 깔려있어야 한다.

    b) Apache2를 설치한다.

    c) Tomcat을 설치한다.

    d) Mod_jk를 설치한다.

 

2. 환경설정은 다음과 같이 진행된다.

   a) 아파치 환경 가상호스트 설정하기(Tomcat 지원할 수 있도록 하기 위함이다.)

   b) Tomcat폴더에 있는 Server.xml의 ajp13사용할 수 있도록 설정하기

 

3. 서버 재시작

 

(참고) Tomcat의 루트 변경

 


1. 설치


a) Sun Java6 이 먼저 깔려 있어야 한다.

#sudo apt-get install python-software-properties

#sudo apt-get update

#sudo apt-get install sun-java6*

 

#java -version (설치 확인)

 

b) Apache2를 설치한다.

#sudo apt-get install apache2

아파치 설치 후 `http://서버 아이피` 입력하면 It works 페이지가 나온다.

* 실제 홈페이지 경로 : /var/www (webRoot 디렉토리)

 

c) Tomcat을 설치한다.

#sudo apt-get install tomcat6

톰캣 설치 후 `http://서버 아아피:8080` 입력하면 It works! 페이지가 나온다.

* 실제 기본 디렉토리 /var/lib/tomcat6/webapps/ROOT/

 

d) Mod_jk를 설치한다.

#sudo apt-get install libapache2-mod-jk

 

Mod_jk 환경설정 파일 위치 : /etc/libapache2-mod-jk/workers-properties

 

핵심 설정(중간에 위치한 내용들)

workers.java_home=자바 설치 경로

workers.list=ajp13_worker

workers.ajp13_worker.port=8009

workers.ajp13_worker.host=localhost

workers.ajp13_worker.type=ajp13

workers.ajp13_worker.lbfactor=1

 

* Apache 연동 설정(안해도 됨)

 

파일 위치 : /etc/apache2/mods-available/jk.conf

<IfModule mod_jk.c>

 

    JkWorkersFile /etc/libapache2-mod-jk/workers-properties

    JkLogFile /var/log/apahce2/mod_jk.log

    JkLogLevel Info

    JkOptions +ForwardURlCompatUnparsed

</IfModule>

 


2. 환경설정


a) 아파치 환경 가상호스트 설정하기

#sudo vim /etc/apache2/sites-enabled/000-default

 

#DocumentRoot /var/www/ (주석처리)

DocumentRoot /var/lib/tomcat6/webapps/ROOT/

 

## -- Tomcat에서 처리하는 확장자 패턴 ##

JkMount /*.jsp ajp13_worker

JkMount /*.do ajp13_worker

JkMount /servlet/* ajp13_worker

JkMount /*.lnj ajp13_worker

JkMount /*.xlnj ajp13_worker

 

b) Tomcat폴더에 있는 Server.xml의 ajp13사용할 수 있도록 설정하기

#sudo vim /etc/tomcat6/server.xml

 

<!-- Define an AJP 1.3 Connector on port 8009 -->

(주석 제거)

<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />

 


3. 서버 재시작

#sudo /etc/init.d/tomcat6 restart

#sudo /etc/init.d/apache2 restart

 

(참고) Tomcat의 루트 변경

#sudo vim /etc/tomcat6/server.xml

 

----------------------------------------------

<Host name="localhost" appBase="/var/www"

       unpackWARs="true" autoDeploy="true"

       xmlVaildation="false" xmlNamespaceAware="false">

-------------------------------------------

반응형
728x90
300x250

[Apache] mod_cband(아파치2의 트래픽 제어모듈)

 [주요기능]
    * Apache2용 가볍운 트래픽제한 모듈
    * 사용자별 대역폭제한 기능
    * 가상호스트별 대역폭 제한 기능
    * 목적지별 대역폭 제한 기능
    * 제한기능:
          o 모든사용자 대역폭 제한
          o 다운로드 속제 제한
          o 초당요청수 제한
          o 아이피대역별 제한
    * Support for virtualhosts
    * Support for defined users
    * 제한결과 웹을 통한 확인 (/cband-status)
    * 각 사용자별 제한 결과 확인(/cband-status-me)

2. 기본 설정


====================================
  <Location /cband-status>
     SetHandler cband-status
     Order deny,allow
     Deny from all
     Allow from 열어줄아이피
  </Location>

  <Location /cband-status-me>
    SetHandler cband-status-me
  </Location>

<VirtualHost *>
   ServerName gnux.co.kr    
   Document /home/gnux/www
    CBandLimit 300Mi
   CBandPeriod 1D
   CBandExceededURL http://manager.gnux.co.kr/traffic_exceeded.html
</VirtualHost>
======================================
위 설정파일은 gnux.co.kr 도메인에
하루에 300M(300*1024*1024byte)의 트래픽을 제공하는 설정입니다.
bit로 따지면, 2.4Gbit/일 트래픽을 제공하는 것입니다.
만약 하루에 300M를 초과했다면, "http://manager.gnux.co.kr/traffic_exceeded.html"
페이지가 뜨며, 지정하지 않았다면, 503 에러 페이지가 뜨게됩니다.
 만약!. 제한을 하지 않고 관찰만 하려 한다면, CBandPeriod 부분만 남기고 삭제합니다.


3. 상황별 설정
 1) 자료실 속도 제한
==============================
<VirtualHost *>
   ServerName file.gnux.co.kr    
   Document /home/gnux/file
   CBandSpeed 1024 10 30
   CBandRemoteSpeed 20kb/s 3 30
</VirtualHost>
==============================
위 설정은  file.gnux.co.kr 도메인에 대해서
속도를 1024kbps 로 제한하며, 초당 10번의 연결,
동시접속자를 30으로 제한하는 예제입니다.


 2) 사용자 일트래픽 제공 및 초과시 연결수 제한.
==============================
<VirtualHost *>
   ServerName doly.gnux.co.kr    
   Document /home/gnux/doly
   CBandLimit 100Mi
   CBandExceededSpeed 128 5 15
   CBandPeriod 1D
</VirtualHost>
==============================
위 설정은 doly.gnux.co.kr도메인에 대해
하루에 100Mbyte의 트레픽을 제공하며,
100M를 초가했다면,
속도를 128bps로 제한, 초당 5번의 연결,
동시접속자를 15로 제한하는 예제입니다.

 3) 한 사용자에 여러 도메인이 있다면?
==============================
<CBandUser host_user1>
    CBandUserLimit 100Mi
    CBandUserPeriod 1D
</CBandUser>
<VirtualHost *>
   ServerName aaa.co.kr    
   Document /home/host_user1/aaa
   CBandUser host_user1
</VirtualHost>
<VirtualHost *>
   ServerName bbb.co.kr    
   Document /home/host_user1/bbb
   CBandUser host_user1
</VirtualHost>
==============================
위 설정은 host_user1이라는 가상 사용자를 지정한다음.
그 사용자는 하루에 100Mbyte를 사용할수 있게합니다.
그런다음, aaa.co.kr, bbb.co.kr 모두 host_user1의
트래픽을 사용하게 설정하였습니다.


4) IP대역에 따라 속도를 제한하고 싶다면?
==============================================
<CBandClass class_1>
    CBandClassDst 192.168.0.0/24
</CBandClass>
<CBandClass class_2>
    CBandClassDst 222.97.189.0/24
</CBandClass>

<VirtualHost *>
   ServerName intranet.gnux.co.kr    
   Document /home/gnux/intranet
   CBandClassRemoteSpeed class_1 50Mbps 10 30
   CBandClassRemoteSpeed class_2 300kbps 10 30
</VirtualHost>
==============================================
위 설정은, 내부아이피 192.168.0.XXX 에서,
50Mbps의 대역폭과, 초당 10번의 요청, 동시접속자 30을 설정하며,
다른 ip대역 222.97.189.XXX에서는
300kpbs, 초당 10번의 요청, 동시접속자 30을 설정합니다.

4. 사용량 확인.
   http://도메인/cband-status
   http://도메인/cband-status-me



 ** xml 형태로 데이터를 얻고 싶다면?
   http://도메인/cband-status?xml
   http://도메인/cband-status-me?xml




5. 지시자 및 단위 설명 (필요시 찾아보세요!!)
  1) 단위.
    * 전송속도 단위
          o kbps, Mbps, Gbps - bits per second: 1024, 1024*1024 , 1024*1024*1024 bps
          o kb/s, Mb/s, Gb/s - bytes per second:  1024, 1024*1024, 1024*1024*1024 b/s
          o 기본 : kbps

    * 트래픽 쿼터 단위
          o K, M, G - bytes: 1000, 1000*1000 ,1000*1000*1000 bytes
          o Ki, Mi, Gi - bytes: 1024, 1024*1024, 1024*1024*1024 bytes
          o 기본 : K

    * 시간(기간) 단위
          o S, M, H, D, W - 초, 분, 시간, 일, 주
          o 기본 : S

  2) 지시자들
     (1) 이름 : CBandDefaultExceededURL
          설명 : 제한을 초과했을때 보여줄 URL  (지정하지 않으면, 503 에러 페이지)
            문맥 : Server config
          문법 : CBandDefaultExceededURL URL

     (2)이름 : CBandDefaultExceededCode
         설명 : 제한을 초과했을시 보여줄 에러 코드
         문맥 : Server config
         문법 : CBandDefaultExceededCode HTTP_CODE
         예제 : CBandDefaultExceededCode 509  


     (3)이름 : CBandScoreFlushPeriod
         설명 : scoreboard 파일에 기록할 요청수, mod_cband 의 성능에 영향을 준다.
         기본값 : 1
         문맥 : Server config
         문법 : CBandScoreFlushPeriod 요청수
         예제 : CBandScoreFlushPeriod 100  ( 매 100번의 요청에 한번씩 scoreboard 파일에 기록)

     (4)이름 : CBandSpeed
         설명 : 가상호스트 도메인의 최대 속도, 요청수, 접속수  설정
         문맥 : <Virtualhost>
         문법 : CBandSpeed kbps rps max_conn
                kbps - 초당 최대 전송속도
                rps - 초당 최대 요청수
                max_conn - 최대 동시 접속수
         예제 : CBandSpeed 1024 10 30
                 최대 1024kbps전송속도로 제한, 초당 10개의 요청 처리, 동시 접속을 30개로 제한.

     (5)이름 : CBandRemoteSpeed
         설명 : 접속자(IP)의 최대속도, 요청수, 접속수 제한 (CBandSpeed와 비슷하지만, 접속자당 설정)
         문맥 : <Virtualhost>
         문법 : CBandRemoteSpeed kbps rps max_conn
                  kbps - 초당 최대 전송속도
                  rps - 초당최대 요청수
                  max_conn - 최대 동시 접속수
         예제 : CBandRemoteSpeed 20kb/s 3 3
                  접속자(ip)에대해 최대 20kb/s , 초당 3개의 요청, 동시 접속 3개로 제한.

     (6)이름 : CBandClassRemoteSpeed
         설명 : 정의한 class(ip 범위)에 대해 최대속도, 요청수, 접속수 제한
         문맥 : <Virtualhost>
         문법 : CBandClassRemoteSpeed class_name kbps rps
                  class_name - 이미 정의한 클래스 이름 (IP범위)
                  kbps - 초당 최대 전송속도
                  rps - 초당 최대 요청수
                  max_conn - 최대 동시 접속수
         예제 : <CBandClass googlebot_class>
                    CBandClassDst 66.249.64/24
                    CBandClassDst 66.249.65/24
                    CBandClassDst 66.249.79/24
                  </CBandClass>
                        CBandClassRemoteSpeed googlebot_class 20kb/s 2 3
                        위에서 정의한 클래스(googlebot_class)의 요청에는 20kb/s 의 전송속도,
                       초당 3개의 요청, 동시 접속 3개로 제한.

     (7)이름 : CBandRandomPulse
         설명 : 속도 제한을 위해서 임의의 파형을 생성한 다음 처리하는 mod_cband의 처리 방법이다.
                   부하가 많을때는 자동 Off된다.
         문맥 : Global
         문법 : CBandRandomPulse On/Off

     (8)이름 : CBandLimit
         설명 : 제한할 전송량을 설정한다. (기간은 CBandPeriod 에서 설정)
         문맥 : <Virtualhost>
         문법 : CBandLimit limit
                  limit - 전송량, 사용단위: K (kilo), M (mega), G (giga), Ki (kibi), Mi (mebi), Gi (gibi)
         예제 : CBandLimit 10M
                    전송양을 10M(10*1000*1000bytes)로 제한한다.
                  CBandLimit 10Mi
                    전송양을 10M(10*1024*1024bytes)로 제한한다.

     (9)이름 : CBandClassLimit
         설명 : 정의한 class(ip범위)에 대해 제한할 전송량 설정.
         문맥 : <Virtualhost>
         문법 : CBandClassLimit class_name limit
                  class_name - 이미 정의한 클래스 이름(ip범위)
                  limit - 전송량, 사용단위: K (kilo), M (mega), G (giga), Ki (kibi), Mi (mebi), Gi (gibi)

   (10)이름 : CBandExceededURL
         설명 : 제한을 초과했을시 보여줄 URL, 지정하지 않으면 503 에러 발생 ( 가상호스트에서 )
         문맥 : <Virtualhost>
         문법 : CBandExceededURL URL

   (11)이름 : CBandExceededSpeed
         설명 : 전송양을 초과했을시 , 전송속도 제한 설정.
         문맥 : <Virtualhost>
         문법 : CBandExceededSpeed kbps rps max_conn
                  kbps - 초당 최대 전송속도
                  rps - 초당 최대 요청수
                  max_conn - 최대 동시 접속수

    (12)이름 : CBandScoreboard
         설명 : 가상호스트의 scoreboard 파일 지정. (성능향상을 위해 필요)
         문맥 : <Virtualhost>
         문법 : CBandScoreboard path
                  (path는 아파치(nobody또는 apache)권한으로 쓰기가능해야 함)

    (13)이름 : CBandPeriod
         설명 : 용량제한기간(이 기간이 지나면, 측정되었던 용량은 지워진다.)
         문맥 : <Virtualhost>
         문법 : CBandPeriod period
                  period - 사용단위: S (초), M (분), H (시간), D (일), W (주)
         예제 : CBandPeriod 1W  (1주일)
                  CBandPeriod 14D  (14일)
                  CBandPeriod 60M  (60분)

   (14)이름 : CBandPeriodSlice
         설명 : 기간이 길때는 나눌 기간을 명시한다.
         기본값 : slice_len = limit
         문맥 : <Virtualhost>
         문법 : CBandPeriodSlice slice_length
         예제 : CBandLimit 100G
                  CBandPeriod 4W
                  CBandPeriodSlice 1W
                   4주는 1주일 단위로 나뉜다(4W/1W = 4). 용량은 100G/4=25G
                   1주에 25G, 2주째 50G 이렇게 나눠 처리 된다.

   (15)이름 : <CBandUser>
         설명 : 새로운 cband 가상 사용자 설정
         문맥 : Server config
         문법 : <CBandUser user_name>

   (16)이름 : CBandUserSpeed
         설명 : cband 가상 사용자의 속도, 요청수, 동시 접속수 제한
         문맥 : <CBandUser>
         문법 : CBandUserSpeed kbps rps max_conn
                  kbps - 초당 최대 전송속도
                  rps - 초당 최대 요청수
                  max_conn - 최대 동시 접속수
         예제 : CBandUserSpeed 100kb/s 10 5


   (17)이름 : CBandUserLimit
         설명 : cband 가상 사용자의 저송 용량 제한.
         문맥 : <CBandUser>
         문법 : CBandUserLimit limit
                  limit - 사용용량, 사용단위: K (kilo), M (mega), G (giga), Ki (kibi), Mi (mebi), Gi (gibi)
         예제 : CBandUserLimit 10M
                  CBandUserLimit 10Mi

   (18)이름 : CBandUserClassLimit
         설명 : cband 가상 사용자의 정의한 class(ip범위)에 대해 제한할 전송량 설정
         문맥 : <CBandUser>
         문법 : CBandUserClassLimit class_name limit
                  class_name - 지정한 class(IP범위)이름
                  limit -사용용량, 사용단위: K (kilo), M (mega), G (giga), Ki (kibi), Mi (mebi), Gi (gibi)

   (19)이름 : CBandUserExceededURL
         설명 : cband 가상 사용자의, 제한을 초과했을시 보여줄 URL,
                   지정하지 않으면 503 에러 발생 ( 가상호스트에서 )
         문맥 : <CBandUser>
         문법 : CBandUserExceededURL URL

   (20)이름 : CBandUserExceededSpeed
         설명 : cband 가상 사용자의, 전송양을 초과했을시 , 전송속도 제한 설정.
         문맥 : <CBandUser>
         문법 : CBandUserExceededSpeed kbps rps max_conn
                  kbps - 초당 최대 전송속도
                  rps - 초당 최대 요청수
                  max_conn - 최대 동시 접속수

  (21)이름 : CBandUserScoreboard
         설명 : cband 가상 사용자의, scoreboard 파일 지정.
         문맥 : <CBandUser>
         문법 : CBandUserScoreboard path
                  (path는 아파치(nobody또는 apache)권한으로 쓰기가능해야 함)

  (22) 이름 : CBandUserPeriod
         설명 : cband 가상 사용자의, 용량제한기간(이 기간이 지나면, 측정되었던 용량은 지워진다.)
         문맥 : <CBandUser>
         문법 : CBandUserPeriod period
                  period - 사용단위: S (초), M (분), H (시간), D (일), W (주)
         예제 : CBandUserPeriod 1W
                  CBandUserPeriod 14D
                  CBandUserPeriod 60M

  (23)이름 : CBandUserPeriodSlice
         설명 : cband 가상 사용자의, 기간을 나눌 기간 명시
         기본값 : slice_len = limit
         문맥 : <CBandUser>
         문법 : CBandUserPeriodSlice slice_length
         예제 : CBandUserLimit 100G
                  CBandUserPeriod 4W
                  CBandUserPeriodSlice 1W
                   4주는 1주일 단위로 나뉜다(4W/1W = 4). 용량은 100G/4=25G
                   1주에 25G, 2주째 50G 이렇게 나눠 처리 된다.

## 참고문서
http://cband.linux.pl
http://www.howtoforge.com/mod_cband_apache2_bandwidth_quota_throttling
http://www.linux.co.kr/home/lecture/index.php?leccode=10588

반응형
728x90
300x250

[Linux] Apache 2 트래픽 제어 모듈 - Cband

Apache 2.0 이상에서는 트래픽을 어떻게 관리해야만 할까요?
Cband 모듈로 트래픽을 관리할 수 있습니다. 물론 CBand 이외에도 많은 프로그램이 존재합니다.




위에 그림은 cband의 트래픽 제어 솔루션에 접속한 모습입니다. 위의 그림은 메인 호스트의 상황을 집계하는 중입니다.


1. 사용 방법

Apachectl 버전 확인
[root@locahost ~]# /usr/local/httpd/bin/apachectl -v
Server version: Apache/2.2.16 (Unix)
Server built:   Aug 21 2010 16:10:06

1. Cband 설치(mod-cband-0.9.7.5.tgz)
[root@locahost mod-cband-0.9.7.5]# wget http://cband.linux.pl/download/mod-cband-0.9.7.5.tgz
[root@locahost mod-cband-0.9.7.5]# ./configure --with-apxs=/usr/local/httpd/bin/apxs
[root@locahost mod-cband-0.9.7.5]# make && make install

2. 모듈 확인(설치 후 자동 생성)
[root@locahost ~]# vi /usr/local/httpd/conf/httpd.conf
LoadModule cband_module         modules/mod_cband.so

참고) 모듈 설치시 자동으로 위의 내용이 생성됩니다.

3. httpd.conf mod_cband.c 설정(추가)
[root@locahost ~]# vi /usr/local/apache2/conf/httpd.conf
----------------------------------------------------------------------------------------------
<IfModule mod_cband.c>
        <Location /cband-status>
                SetHandler cband-status
        </Location>
        <Location /cband-status-me>
                SetHandler cband-status-me
        </Location>
        <Location /~*/cband-status-me>
                SetHandler cband-status-me
        </Location>
        <Location /cband-status>
                SetHandler cband-status
                Order deny,allow
                Deny from all
                Allow from all
        </Location>
</IfModule>

반응형
728x90
300x250

[Linux] Apache 2.2 - VirtualHost 사용 방법

 

 


서버에
IP
주소가 한개 있고, DNS에서 여러 주소(CNAMES) 컴퓨터를 가리킨다. 컴퓨터에서 www.example.com www.example.org 웹서버를 실행하고 싶다.

Note

아파치 서버에 가상호스트 설정을 한다고 호스트명에 대한 DNS 항목이 자동이로 생성되지 않는다. 반드시 DNS IP 주소를 가리키는 이름이 있어야 한다. 안그러면 아무도 웹사이트를 없다. 검사해보기 위해 hosts 파일에 항목을 추가할 있지만, 이는 hosts 항목을 가진 컴퓨터에만 반영된다.



서버
설정

# 아파치가 포트 80 기다린다
Listen 80

#
모든 IP 주소에서 가상호스트 요청을 기다린다
NameVirtualHost *:80

<VirtualHost *:80>
DocumentRoot /www/example1
ServerName www.example.com

#
다른 지시어들도 있다

</VirtualHost>

<VirtualHost *:80>
DocumentRoot /www/example2
ServerName www.example.org

#
다른 지시어들도 있다

</VirtualHost>



별표는
모든 주소를 가리키므로, 주서버는 어떤 요청도 서비스하지 않는다. www.example.com 설정파일에 처음으로 나오므로 가장 높은 우선순위를 가지며, 기본 혹은 초기 서버가 된다. 어떤 ServerName 지시어에도 해당되지않는 요청은 첫번째 VirtualHost 서비스한다.

주의

원한다면 * 대신 시스템의 실제 IP 주소를 사용할 있다. 경우 VirtualHost 아규먼트는 NameVirtualHost 아규먼트와 일치해야 한다:

NameVirtualHost 172.20.30.40

<VirtualHost 172.20.30.40>
#
생략 ...

그러나 ISP에서 동적으로 IP 주소를 가져오는 IP 주소를 모르는 경우에는 * 사용하는 것이 유용하다. * 모든 IP 주소에 해당하므로, IP 주소가 변경되어도 설정을 변경할 필요가 없다. 거의 대부분의 이름기반 가상호스트 설정은 위와 같다. 예외는 다른 IP 주소나 포트로 다른 내용을 서비스하려는 경우이다.

 

 

주의

여기서 설명한 방법은 IP 주소가 몇개라도 적용가능하다.

 

서버는 IP 주소가 두개있다. 하나에서 (172.20.30.40) "" 서버 server.domain.com 서비스하고, 다른 하나에서 (172.20.30.50) 여러 가상호스트를 서비스할 것이다.

서버 설정

Listen 80

# 172.20.30.40
에서 실행하는 ""
서버이다
ServerName server.domain.com
DocumentRoot /www/mainserver

#
다른 주소다
NameVirtualHost 172.20.30.50

<VirtualHost 172.20.30.50>
DocumentRoot /www/example1
ServerName www.example.com

#
다른 지시어들도 있다 ...

</VirtualHost>

<VirtualHost 172.20.30.50>
DocumentRoot /www/example2
ServerName www.example.org

#
다른 지시어들도 있다 ...

</VirtualHost>


172.20.30.50
아닌 주소에 대한 요청은 주서버가 서비스한다. 호스트명 없이, Host: 헤더없이 172.20.30.50 요청하면 www.example.com 서비스한다.


서버
컴퓨터에 IP 주소가 두개 (192.168.1.1 172.20.30.40) 있다. 컴퓨터는 내부 (인트라넷) 네트웍과 외부 (인터넷) 네트웍 사이에 위치한다. 네트웍 밖에서 server.example.com 외부 주소를 (172.20.30.40) 의미하고, 네트웍 내부에서 같은 이름을 내부 주소로 (192.168.1.1) 사용한다.

서버는 VirtualHost 섹션 한개로 내부와 외부 응답에 같은 내용을 서비스할 있다.

서버 설정

NameVirtualHost 192.168.1.1
NameVirtualHost 172.20.30.40

<VirtualHost 192.168.1.1 172.20.30.40>
DocumentRoot /www/server1
ServerName server.example.com
ServerAlias server
</VirtualHost>


이제
네트웍에서 들어온 요청을 같은 VirtualHost에서 서비스한다.

주의:

내부 네트웍에서는 완전한 호스트명 server.example.com 대신 이름 server 가능하다.

또한 위의 예에서 IP 주소 대신 * 사용하여 서버가 모든 주소에 동일하게 동작할 있다.


 



같은
IP
여러 포트에서 서로 다른 도메인을 서비스한다고 가정하자. 이는 "NameVirtualHost" 태그에 포트를 정의하면 가능하다. NameVirtualHost name:port없이 <VirtualHost name:port> 혹은 Listen 지시어만 사용하면 안된다.

서버 설정

Listen 80
Listen 8080

NameVirtualHost 172.20.30.40:80
NameVirtualHost 172.20.30.40:8080

<VirtualHost 172.20.30.40:80>
ServerName www.example.com
DocumentRoot /www/domain-80
</VirtualHost>

<VirtualHost 172.20.30.40:8080>
ServerName www.example.com
DocumentRoot /www/domain-8080
</VirtualHost>

<VirtualHost 172.20.30.40:80>
ServerName www.example.org
DocumentRoot /www/otherdomain-80
</VirtualHost>

<VirtualHost 172.20.30.40:8080>
ServerName www.example.org
DocumentRoot /www/otherdomain-8080
</VirtualHost>

 



서버는
각각 www.example.com www.example.org 해당하는 IP 주소를 (172.20.30.40 172.20.30.50) 가진다.

서버 설정

Listen 80

<VirtualHost 172.20.30.40>
DocumentRoot /www/example1
ServerName www.example.com
</VirtualHost>

<VirtualHost 172.20.30.50>
DocumentRoot /www/example2
ServerName www.example.org
</VirtualHost>




<VirtualHost>
지시어로 지정한 주소에 해당하지않는 주소로 (예를 들어, localhost) 요청이 들어오면 주서버가 있는 경우 주서버가 서비스한다.

 


서버는
각각 www.example.com www.example.org 해당하는 IP 주소를 (172.20.30.40 172.20.30.50) 가진다. IP 80번과 8080 포트에 가상호스트를 돌린다.

서버 설정

Listen 172.20.30.40:80
Listen 172.20.30.40:8080
Listen 172.20.30.50:80
Listen 172.20.30.50:8080

<VirtualHost 172.20.30.40:80>
DocumentRoot /www/example1-80
ServerName www.example.com
</VirtualHost>

<VirtualHost 172.20.30.40:8080>
DocumentRoot /www/example1-8080
ServerName www.example.com
</VirtualHost>

<VirtualHost 172.20.30.50:80>
DocumentRoot /www/example2-80
ServerName www.example.org
</VirtualHost>

<VirtualHost 172.20.30.50:8080>
DocumentRoot /www/example2-8080
ServerName www.example.org
</VirtualHost>


 

이름기반과 IP기반이 혼합된 가상호스트

 

주소중 몇몇은 이름기반 가상호스트로, 다른 것은 IP기반 가상호스트로 서비스하고 싶다.


서버 설정

Listen 80

NameVirtualHost 172.20.30.40

<VirtualHost 172.20.30.40>
DocumentRoot /www/example1
ServerName www.example.com
</VirtualHost>

<VirtualHost 172.20.30.40>
DocumentRoot /www/example2
ServerName www.example.org
</VirtualHost>

<VirtualHost 172.20.30.40>
DocumentRoot /www/example3
ServerName www.example3.net
</VirtualHost>

# IP-
기반
<VirtualHost 172.20.30.50>
DocumentRoot /www/example4
ServerName www.example4.edu
</VirtualHost>

<VirtualHost 172.20.30.60>
DocumentRoot /www/example5
ServerName www.example5.gov
</VirtualHost>


 





모든
포트에 대한 _default_ 가상호스트

어떤 가상호스트에도 해당하지않은 IP 주소와 포트에 대한 모든 요청을 처리하기.

서버 설정

<VirtualHost _default_:*>
DocumentRoot /www/default
</VirtualHost>



default(
기본) 가상호스트의 포트로 와일드카드를 사용하여 어떤 요청도 주서버로 못가도록 만든다.

default 가상호스트는 절대로 이름기반 가상호스트가 사용하는 주소/포트로의 요청을 서비스하지 않는다. 없거나 Host: 헤더가 생략된 요청은 항상 최초의 이름기반 가상호스트(설정파일에서 주소/포트가 처음으로 나온 가상호스트) 서비스한다.

AliasMatch RewriteRule 사용하여 어떤 요청을 특정 페이지(혹은 스크립트) 재작성할(rewrite) 있다.




위의
경우와 같지만, 서버는 여러 포트를 기다리고 80 포트에 대해서 추가로 _default_ 가상호스트를 사용하고 싶다.

서버 설정

<VirtualHost _default_:80>
DocumentRoot /www/default80
# ...
</VirtualHost>

<VirtualHost _default_:*>
DocumentRoot /www/default
# ...
</VirtualHost>



80
포트에 대한 default 가상호스트는 (반드시 와일드카드 포트를 가진 기본 가상호스트 이전에 나와야 한다) 지정하지않은 IP 주소로 보내진 모든 요청을 서비스한다. 주서버는 절대로 요청을 서비스하지 못한다.

 

80 포트에 대해서만 default 가상호스트를 만들고 싶다.

서버 설정

<VirtualHost _default_:80>
DocumentRoot /www/default
...
</VirtualHost>



포트
80
번에 지정하지않은 주소에 대한 요청은 기본 가상호스트가 서비스하고, 다른 지정하지않은 주소와 포트를 가진 요청은 서버가 서비스한다.

 

 

(이름기반 첫번째 예에서) 호스트명 www.example.org 대한 이름기반 가상호스트는 자신의 IP 주소를 가져야 한다. 이름기반 가상호스트의 이전 IP 주소를 캐싱하는 네임서버나 프록시와의 문제를 피하기위해 옮기는 동안 모두를 서비스하고 싶다.

방법은 VirtualHost 지시어에 IP 주소만을 (172.20.30.50) 추가하면되므로 쉽다.

서버 설정

Listen 80
ServerName www.example.com
DocumentRoot /www/example
NameVirtualHost 172.20.30.40

<VirtualHost 172.20.30.40 172.20.30.50>
DocumentRoot /www/example2
ServerName www.example.org
# ...
</VirtualHost>

<VirtualHost 172.20.30.40>
DocumentRoot /www/example3
ServerName www.example.net
ServerAlias *.example.net
# ...
</VirtualHost>



이제
(IP기반 가상호스트를 통한) 새로운 주소와 (이름기반 가상호스트를 통한) 이전 주소 모두 가상호스트에 접근할 있다.

ServerPath 지시어 사용하기

이름기반 가상호스트를 가진 서버가 있다. 올바른 가상호스트를 선택하기위해 클라이언트는 올바른 Host: 헤더를 보내야 한다. 오래된 HTTP/1.0 클라이언트가 헤더를 보내지 못하면 아파치는 클라이언트가 어떤 가상호스트를 보려고하는지 없다 (그래서 최초의 가상호스트가 요청을 서비스한다). 오래된 브라우저와 가능한 호환을 유지하기위해 최초의 가상호스트를 만들고, 여기에 이름기반 가상호스트의 URL 접두사를 포함하는 링크 목록 페이지를 둔다.

서버 설정

NameVirtualHost 172.20.30.40

<VirtualHost 172.20.30.40>
# primary vhost
DocumentRoot /www/subdomain
RewriteEngine On
RewriteRule ^/.* /www/subdomain/index.html
# ...
</VirtualHost>

<VirtualHost 172.20.30.40>
DocumentRoot /www/subdomain/sub1
ServerName www.sub1.domain.tld
ServerPath /sub1/
RewriteEngine On
RewriteRule ^(/sub1/.*) /www/subdomain$1
# ...
</VirtualHost>

<VirtualHost 172.20.30.40>
DocumentRoot /www/subdomain/sub2
ServerName www.sub2.domain.tld
ServerPath /sub2/
RewriteEngine On
RewriteRule ^(/sub2/.*) /www/subdomain$1
# ...
</VirtualHost>




ServerPath
지시어때문에 URL http://www.sub1.domain.tld/sub1/ 대한 요청은 항상 subl-가상호스트가 서비스한다.
클라이언트가 올바른 Host: 헤더를 보낸다면, URL http://www.sub1.domain.tld/ 대한 요청은 subl-가상호스트에서만 서비스한다. 만약 Host: 헤더를 보내지않으면 클라이언트는 최초의 호스트에 있는 정보페이지를 보게된다.

여기에 문제가 있음을 주의하라: 클라이언트가 Host: 헤더를 보내지않으면 http://www.sub2.domain.tld/sub1/ 대한 요청도 subl-가상호스트가 서비스한다.

RewriteRule 지시어를 사용하여 올바른 Host: 헤더를 보내는 클라이언트는 (예를 들어, URL 전치사가 있거나 없는) URL 모두 사용할 있다.

반응형
728x90
300x250

[Linux] Centos 5.3(32bit), Ubuntu 9.04(64bit) - Apache 2.x + PHP 5.3 + MySQL, 라이브러리 설치하기

태스트 환경1 :

운영체제 : Centos 5.3(32bit)
CPU : AMD Athlon 64 x2 3600
RAM : 2GB

태스트 환경2 :
운영체제 : Ubuntu 9.04(64bit)
CPU : Atom 230 x2
RAM : 1GB


필수 사용 라이브러리 :


Libmcrypt(암호화 라이브러리)


다운로드를 받을만한 위치로 이동합니다.


다운로드 받기 :
http://www.mysql.com (MYSQL 홈페이지)
ftp://ftp.neowiz.com/pub/apache/httpd/httpd-2.2.11.tar.gz
ftp://ftp.neowiz.com/pub/languages/php/

미러링 서버 제공 : 네오위즈

다운로드 받기


wget 주소 (MySQL 5.x 버전) 다운로드
tar xvfz mysql-5.1.version.tar.gz                  (압축 풀기)

wget ftp://ftp.neowiz.com/pub/apache/httpd/httpd-2.2.11.tar.gz      (Apache 2.2.11) 다운로드
tar xvzf httpd-2.2.11.tar.gz                       (압축 풀기)

wget ftp://ftp.neowiz.com/pub/languages/php/     (Php-5.2.10) 다운로드
tar xvzf php-5.2.10.tar.gz                        (압축 풀기)



 


 


 


 


 


 


 
(기타 라이브러리 재 연동)
/usr/local/php/bin/pear upgrade-all
/usr/local/php/bin/pear install DB File Mail Mail_Mime
/usr/local/php/bin/pear install MDB2 MDB2_Driver_mysql MDB2_Driver_mysqli
/usr/local/php/bin/pear install HTTP_Request XML_RPC


최종 수정 : 2009년 9월 22일

반응형

+ Recent posts