블로그 이미지
좋은느낌/원철
이것저것 필요한 것을 모아보렵니다.. 방문해 주셔서 감사합니다..

calendar

1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30

Notice

    2009. 7. 16. 16:44 개발/Linux 계열

    일반적으로 웹로그 분석은 Webalizer를 많이 사용하나, 여기서는 보다 괜찮은 인터페이스 및 한글화된 awstats를 설치하는 방법을 알아보도록 한다.





    우선, 필자가 테스트한 배포판은 김정균씨의 안녕리눅스를 devel로 설치하였고, Apache 1.3.29 버전이다. RedHat 7.3 및 9 버전에서도 설치하는데 문제는 없었다.





        관련사이트 : http://awstats.sourceforge.net


        데모사이트 : http://awstats.sourceforge.net/cgi-bin/awstats.pl





    1. 다운로드





      다음 주소에서 awstats 6.2 버전을 다운받아 설치하려는 서버로 옮겨 놓는다.





        http://lec.pe.kr/files/awstats-6.2.tgz








    2. 압축 풀기, 기본 디렉토리 생성





        # tar xvfz awstats-6.2.tgz


        # mv awstats-6.2 /usr/local/awstats


        # chmod 755 /usr/local/awstats/


        # chown -R root.root /usr/local/awstats/


        # mkdir /etc/awstats


        # mkdir /var/lib/awstats








    3. 설치 스크립트 실행





        # cd /usr/local/awstats/tools


        # ./awstats_configure.pl





      설치 중에 3번 정도 물어보는데, 아파치 환경설정파일의 절대경로 위치와, 처음 설치시 설정파일 생성 여부('y'로 답하면 된다), 그리고 임의의 이름을 정하면 된다. 필자는 nfo.pe.kr 사이트에 로그분석기를 설치하므로 세 번째의 이름을 nfo.pe.kr로 적었다.








    4. 설정파일의 수정





      이제 /etc/awstats/ 디렉토리 밑에 awstats.[자신이 정한 이름].conf 파일이 생성된 것을 볼 수 있다. 필자의 경우 파일명은 다음과 같다.





        /etc/awstats/awstats.nfo.conf





      이 파일을 열어서 51번째 라인의 LogFile의 지정 값을 로그 분석하고자 하는 파일명으로 수정한다. 일반적으로 아파치 로그파일은 /var/log/httpd/ 디렉토리에 위치할 것이다. 다음은 필자의 경우 수정한 예제이다.





        # cat /etc/awstats/awstats.nfo.conf | grep ^LogFile


        LogFile="/var/log/httpd/nfo.pe.kr-access_log"








    5. httpd.conf 파일의 수정





      필자의 경우 안녕 배포판에 rpm으로 Apache를 설치하였으므로 Apache 환경설정파일의 위치는 /etc/httpd/conf/httpd.conf 파일이다. 


      위에서 /usr/local/awstats/tools 디렉토리에 있는 awstats_configure.pl 파일을 실행하여 제대로 설치하였다면 httpd.conf 파일의 마지막 부분에 다음과 같은 내용이 추가되어 있을 것이다.





        #


        # Directives to allow use of AWStats as a CGI


        #


        Alias /awstatsclasses "/usr/local/awstats/wwwroot/classes/"


        Alias /awstatscss "/usr/local/awstats/wwwroot/css/"


        Alias /awstatsicons "/usr/local/awstats/wwwroot/icon/"


        ScriptAlias /awstats/ "/usr/local/awstats/wwwroot/cgi-bin/"


        


        #


        # This is to permit URL access to scripts/files in AWStats directory.


        #


        <Directory "/usr/local/awstats/wwwroot">


            Options None


            AllowOverride None


            Order allow,deny


            Allow from all


        </Directory>





      혹시 httpd.conf 파일에 위의 내용이 추가되어 있지 않다면 /usr/local/awstats/tools/httpd_conf 파일의 내용을 그대로 복사하여 httpd.conf 파일에 넣어주면 된다.





      또한 httpd.conf 파일에서 로그 파일의 포맷을 combined 로 변경해 주어야 한다. 일반적으로 로그파일의 포맷은 common으로 되어 있는 경우가 대부분이다. 필자 역시 다음과 같이 common 포맷으로 되어 있었다.





        CustomLog /var/log/httpd/nfo.pe.kr-access_log common env=!img-nosave,!CodeRedNimda





      이것을 다음과 같이 combined로 수정하여 준다.





        CustomLog /var/log/httpd/nfo.pe.kr-access_log combined env=!img-nosave,!CodeRedNimda








    6. 기존 로그파일의 내용 삭제, Apache 재시작





      기존의 로그파일인 /var/log/httpd/nfo.pe.kr-access_log 파일의 포맷이 common에서 combined로 변경되었으므로 로그파일에 쌓인 로그를 모두 지운 후에 Apache를 재실행한다.








    7. 로그분석 실행 밑 웹페이지에서 확인





      여기까지 마친 후, awstats 로그분석기를 실행하려면 다음과 같이 한다( -config 옵션의 값은 [자신이 정한 이름]을 적으면 된다).





        # /usr/local/awstats/wwwroot/cgi-bin/awstats.pl -update -config=nfo.pe.kr





      웹브라우저에서 다음 주소로 확인할 수 있다.





        http://도메인주소/awstats/awstats.pl?config=[자신이 정한 이름]





      필자의 경우, 도메인 주소는 nfo.pe.kr 이고 [자신이 정한 이름]은 nfo.pe.kr 이므로, 다음과 같이 브라우저에서 찾아가면 웹로그분석 사이트가 보일 것이다.





        http://nfo.pe.kr/awstats/awstats.pl?config=nfo.pe.kr








    8. Cron 등록





      awstats 로그분석기를 일정 간격으로 자동 실행하기 위하여 /etc/crontab 파일에 다음을 추가한다.





        30 1-24/12 * * root /usr/local/awstats/wwwroot/cgi-bin/awstats.pl -update -config=nfo.pe.kr





      하루 두 번씩 cron 데몬이 정기적으로 업데이트를 하고 있다. 업데이트 주기는, 사이트의 방문자가 많을 수록 짧게 하면 된다.



    posted by 좋은느낌/원철
    2009. 6. 16. 10:43 개발/Linux 계열
    Apache HTTS Setup
    Apache web server에서 SSL(HTTPS)을 사용하기 위해서는 mod_ssl 이라는  
    module을 사용해야합니다.
    mod_ssl은 실제로 OpenSSL을 이용해서 SSL 서비스를 제공합니다.
    따라서, OpenSSL이 설치가 안된 경우 OpenSSL을 먼저 설치하고
    Apache에서 mol_ssl을 설치합니다.
     
    1. OpenSSL 설치
    OpenSSL은 아래 site에서 최신 버전을 download받아서 설치하시면  
    됩니다. 설치하는데 별 문제 없을 거라고 봅니다.
     
        http://www.openssl.org/
     
    2. mod_ssl을 가진 apache 설치하기
    예전 apache에서는 mod_ssl을 따로 받아서 같이 설치했는데,  
    httpd 2.0 이상 version에서는 mod_ssl이 포함되어있기 때문에,
    SSL을 사용할 경우, 'configure'실행시 다음과 같이 추가해주면 됩니다.
    아주 간단하죠..^^
     
    > ./configure --enable-ssl --with-ssl
    > make  
    > make install
     
    3. SSL setting하기
    SSL setting하는 것도 아주 간단한데요. 크게 두가지입니다.
    ssl.conf 파일에 보호하고자 하는 위치를 지정해주고,
    SSL에서 사용할 private key와 public key만 만들어주면 끝납니다.
     
    3.1 ssl.conf setting하기
    SSL 관련 setting은 ./conf/ssl.conf에서 하는데,
    이 파일은 ./conf/httpd.conf에서 include합니다.
     
    ssl.conf 안에 있는 밑에 다음과 같이 SSL인증이  
    필요한 부분을 선언하고, 어떻게 인증을 받을 건지 지정만 해주면 됩니다.  
    아주 간단하죠..^^
     
    ex)
    <Directory "/usr/local/apache2/htdocs/Frontier">
            SSLRequireSSL
            SSLOptions +StdEnvVars
            AuthType        basic
            AuthName        "Human Genome Frontier Protected Area"
            AuthUserFile    conf/protected.passwd
            Require         valid-user
    </Directory>
     
    apache에서 .htaccess 파일로 인증해보신 분들은
    SSL들어간 것만 빼면 똑같다는 느낌을 받지요.
     
    3.2 private, public key 만들기
    key를 만드는 것도 openssl 프로그램이 알아서 해주기 때문에  
    간단합니다.
    먼저 key의 위치는 public key의 경우 일반적으로 ./conf/server.crt에
    private key의 경우 ./conf/server.key 밑에 놓습니다.
    directory가 없는 경우 만들어야겠죠..^^
     
    OpenSSL을 설치했으면, openssl 프로그램이 만들어지는데
    이 프로그램을 이용해 담과 같이 만듭니다.
     
    public key생성:
        > openssl genrsa -out server.key 1024
     
        #키를 사용할때 password를 주고 싶으면 다음과 같이  
        '-des3' 옵션을 추가합니다.
        > openssl genrsa -des3 -out ./conf/ssl.key/server.key 1024
     
    private key 생성:
        > openssl req -new -x509 -days 365
            -key ./conf/ssl.key/server.key  -out ./conf/ssl.crt/server.crt
     
    이 key들이 들어있는 위치는 ssl.conf 파일의 밑에
    다음과 같이 지정되어 있답니다. 머 위치가 맘에 안들면 다른 곳으로
    지정할 수 있겠죠!
     
    SSLCertificateFile /usr/local/apache2/conf/ssl.crt/server.crt
    SSLCertificateKeyFile /usr/local/apache2/conf/ssl.key/server.key
     
    이제 모든 setting이 다 끝났습니다.
     
    마지막으로 apache 시작만 하면 된는데요.
    ./bin directory에서 다음과 같이 실행시키면 됩니다.
     
        > ./bin/apachectl startssl
    posted by 좋은느낌/원철
    2009. 6. 16. 09:07 개발/Linux 계열
    설치버전

    RedHat Linux 기반의 Sulinux 1.5 (http://www.sulinux.net/)
    Apache 2.2.4 (http://www.apache.org/ - httpd)
    Mysql 5.0.37 (http://www.mysql.com/)
    Tomcat 6.0.10 (http://www.apache.org/ - tomcat )
    JDK 6.0 (http://java.sun.com/)
    Apache-Tomcat Connector (Jk Connector 1.2.21) (http://www.apache.org/ - tomcat - connector)

    모두  linux 용, Non-RPM 버전으로 받아서 설치하였음.
    받은 모든 파일들은 /usr/local/ 로 ftp 전송등으로 복사.

    Mysql

    SHELL> tar xzvf mysql파일명.확장자

    SHELL> ln -s /usr/local/mysql디렉토리명  mysql
               
                mysql디렉토리에 대한 링크를 만듬. (윈도우의 바로가기 같은 개념--;)

    SHELL> cd mysql

    SHELL> adduser -M mysql

    SHELL> chown -R root /usr/local/mysql

    SHELL> chown -R mysql /usr/local/mysql/data

    SHELL> ./configure

    자동으로 실행까지 한다.

    SHELL> cp /usr/local/mysql/support-files/my-medium.cnf   /etc/my.cnf

    SHELL> ps  
                (mysqld_safe 가 있는지 확인.)

    SHELL> cd bin  (/usr/local/mysql/bin)

    SHELL> ./mysqladmin -u root password 'mysql root계정 비밀번호'

    SHELL> ./mysql -u root -p
                (비밀번호를 입력하고 접속되는지 확인)

    mysql> show databases;
                (information_schema , mysql , test DB가 있는지 확인 - 절대삭제하지 말것)

    mysql> quit  (빠져나오기)
     
    apache

    SHELL> tar xzvf apache파일명.확장자

    SHELL> cd 풀린apache디렉토리

    SHELL> ./configure --prefix=/usr/local/apache --enable-so --enable-modules=all
                                 --enable-mods-shared=most

    SHELL> make && make install

    SHELL> cd /usr/local/apache/

    SHELL> vi conf/httpd.conf

                httpd.conf 설정내용중 ServerName 부분을 찾아서.
                주석처리되어있는 #를 삭제하여 활성화시키고, 도메인네임이나 IP Address를 적는다.
                예>ServerName www.도메인이름
                     ServerName 2xx.xx.xx.xx

                저장하고 vi편집기 빠져나오기.

    SHELL> cd bin
    SHELL>./apachectl start   아파치 실행.

    웹브라우저를 실행시켜서 설정한 도메인네임이나 IP주소를 쳐서 접속을 한다.

    "It works!!"

    라는 메세지가 뜨면 아파치 설치 성공.

    JDK

    다운로드 받은 JDK파일은 .bin

    SHELL> chmod o+x  jdk파일명
                (실행할 수 있게 권한을 준다)

    SHELL> ./jdk파일명 (엔터)
              
                (아니면 sh jdk파일명)

    Do you agree to the above license terms?

    동의한다고 한다. (yes)

    착하게 알아서 다 설치한다.

    SHELL> ln -s /usr/local/jdk디렉토리명  jdk

    Tomcat

    SHELL> tar xzvf 톰켓파일이름

    SHELL> ln -s /usr/local/tomcat디렉토리이름  tomcat

    환경변수 설정

    SHELL> vi /etc/profile

    profile문서 제일 끝에 아래를 추가 한다.

    JAVA_HOME=/usr/local/jdk
    CATALINA_HOME=/usr/local/tomcat
    APACHE_HOME=/usr/local/apache
    export JAVA_HOME CATALINA_HOME APACHE_HOME

    PATH=$JAVA_HOME/bin:$CATALINA_HOME/bin:$APACHE_HOME/bin:$PATH
    export PATH=$PATH:/usr/local/bin:/usr/local/tomcat/bin
    export CLASSPATH=$JAVA_HOME/lib/tools.jar:$CATALINA_HOME/lib/servlet-api.jar:$CATALINA_HOME/lib/jsp-api.jar

    저장하고 나가기

    SHELL> source /etc/profile

    SHELL> catalina start
                웹브라우저에서 IPAddress 나 도메인 :8080 으로 접속한다.
                왠 고양이 한마리 나오면 톰켓 설치 완료.

    Tomcat Connector

    SHELL> cd connector디렉토리

    SHELL> cd native

    SHELL> ./buildconf.sh

    SHELL> ./configure --with-apxs=/usr/local/apache/bin/apxs
    SHELL> make && make install

    SHELL> ls /usr/local/apache/modules
                (mod_jk.so 파일이 생성되었는지 확인)

    SHELL> cd /usr/local/apache/conf

    SHELL> vi workers.properties

                아래 내용 작성
               
                workers.tomcat_home=/usr/local/tomcat
                workers.java_home=/usr/java/jdk1.5.0_05
                ps=/
                worker.list=ajp13

                worker.default.port=8009
                worker.default.host=localhost
                worker.default.type=ajp13
                worker.default.lbfactor=1

                저장하고 나가기.

    SHELL> vi httpd.conf

                 LoadModule 부분을 찾는다.
                 LoadModule jk_module modules/mod_jk.so 를 추가한다.
                 
                 DocumentRoot "usr/local/apache2/htdocs" 부분을 찾아서
                 DocumentRoot "/usr/local/tomcat/webapps/ROOT"  로 바꾼다.
                 
                 DirectoryIndex 부분을 찾아서
                 index.jsp 를 추가한다.

                 아래 Mod_Jk Setting 부분
                 문서 제일 밑에 추가

                 # Mod_jk settings -----------------------------------------------------
                 #
                    JkWorkersFile conf/workers.properties
                    JkLogFile logs/mod_jk.log
                    JkLogLevel debug
                    JkLogStampFormat "[%a %b %d %H:%M:%S %Y] "
                    JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories
                    JkRequestLogFormat "%w %V %T"

                    JkMount /examples/jsp/* ajp13
                    JkMount /examples/servlets/* ajp13
                    JkMount /*.jsp ajp13
                    JkMount /servlet/* ajp13
                 #---------------------------------------------------------------------

                 저장하고 나가기.

    SHELL> apachectl start
    SHELL> catalina.sh start

    웹브라우저에서 http://자기아이피 or http://도메인주소 로 접속

    :8080을 붙이지 않고 고양이가 나와야하며
    사이드메뉴에 JSP example 과 Servlet example 를 클릭하여
    실행이 모두 되면 연동까지 성공!

    이상있으면 댓글.
    posted by 좋은느낌/원철
    2009. 6. 11. 17:55 개발/Linux 계열

       아파치2 메뉴얼
       아파치 데몬실행파일 : httpd
       웹로그파일(access_log)에서 유일 IP카운트방법
       Apache rewrite Module
       아파치로그 lotate
       아파치로그분석툴(Webalizer, cronolog)
       자주쓰는 아파치 설정사항 정리
       Apache 웹서버 보안관리
    0 0 Jserv 설치
    0 0 아파치-포스트그레스 인증 모듈
    0 0 Apache에서 Tomcat 사용하기 (UNIX/Linux)
    0 0 apache 사용자 인증
    0 0 가상 호스트 설정하기(name base)
    0 0 httpd.conf 설정하기
    0 0 아파치 모니터링(server-status)에 관해 자세히 알고싶다.
    0 0 아파치 웹 서버구축 및 운용
    0 0 SSI사용법과 환경변수사용법
    0 0 사용자인증기법(특정디렉토리의 암호걸기)
    0 0 윈도우에서의 아파치 디렉토리별 사용자인증법
    0 0 Apache + PHP + Mysql + GD + Freetype 동시설치
    0 0 아파치를 활용한 가상호스트 설정법
    0 0 아파치 이야기

    00000Apache와 PHP, Mysql 함께설치하기
    00000Apache와 PHP 설치하기(최신버전)  -Apache 1.3.20-
    00000PHP설치도움말 보기

    0 0 리눅스와 함께 기본적으로 설치되는 아파치 둘러보기
    0 0 리눅스의 RPM으로 아파치 설치하기
    0 0 일반적인 방법으로 아파치 설치하기
    0 0 최신버전 아파치( apache 1.3.14) 설치방법
    0 0 아파치 환경파일(httpd.conf) 완벽가이드
    0 0 아파치웹서버 동작상태 모니터링
    0 0 개인도메인로딩시 틸드(~)기호없이 사용하는 방법
    0 0 아파치의 숨은 기법#1
    0 0 httpd에 대한 몇가지 옵션
    posted by 좋은느낌/원철
    2009. 6. 11. 17:47 개발/Linux 계열

    접속자가 많은 사이트에서는 아파치 로그를 관리하는 것도 만만치 않다.
    Linux, solaris 등에서 로그 파일 크기가 2GB가 넘어서 골치아픈 경우도 발생한다.
    또한 로그 파일이 크면 클수록 서버에 필요없는 무리를 주는 것도 사실이다.


    1) Apache 자체에서 제공하는 rotatelogs를 이용하여 로그를 시간과 용량에 따라
      분리 저장하는 방법
    2) 보다 개선된 형태의 cronolog로 로그를 rotation하는 방법
    3) images 로그와 윈도 OS 관련된 warm 로그를 별도로 저장하는 방법을 소개한다.


    ------------------------------------------------------------------------
    1) weblog를 자동 rotation하기 

    로그를 관리하기 위해 logrotate 를 사용하는 경우가 많지만, 이는 서비스를 일시 중단해야
    한다. 그러나 apache에서 제공하는 rotatelogs는 웹서버 동작중에 (1) 특정시간간격이나
    (2) 특정 크기 단위로 로그를 저장한다.

    예) CustomLog "|/usr/local/apache/bin/rotatelogs /usr/local/apache/logs/access.log 86400" common

    위는 웹서버를 실행한지 86400초(24시간)간격으로 로그파일을 나눠서 저장한다.
    로그 파일명은 'access.log.????' 형식으로 ???? 는 로그파일 생성시의 timestamp 이다.

    즉, access.log.1060189068, access.log.1060120280 형태로 파일명이 만들어진다.
    이런형태의 파일명이라면 이해하기 힘들 것이다. 좀더 쉽게 파일명을 만들어보자.

    CustomLog "|/usr/local/apache/bin/rotatelogs /usr/local/apache/logs/access_log.%m%d-%H%M%S 86400" common
    또는
    CustomLog "|/usr/local/apache/bin/rotatelogs /usr/local/apache/logs/access_log.%m%d 86400" common

    이제는 'access_log.월일-시분초' 또는 'access_log.월일' 형태로 생성될 것이다.

    CustomLog "|/usr/local/apache/bin/rotatelogs /usr/local/apache/logs/access_log.%m%d-%H%M%S 100M" common

    100M 단위로 로그를 저장할 수도 있다.

    2) cronolog 툴로 개선된 형태로 log rotation하기

    cronolog는 년월일에 따라 다른 디렉토리에 로그를 남길 수도 있다.
    또한 webalizer 같은 웹로그 분석툴은 access_log 와 같이 지정한 파일을 분석하는데,
    access_log.년월일' 처럼 로그 파일이 매번 바뀐다면 로그파일 지정하는게 쉽지않다.
    cronolog 는 심볼릭 링크를 통해 이를 쉽게 해결해주고 있다.

    http://www.cronolog.org/ 에서 cronolog-x.y.z.tar.gz 을 받아

    ./configure
    make
    make install

    을 한다.

    사용은 rotatelogs와 비슷하다.

     (1) 년월 단위로 로테이션한다.

     CustomLog "|/usr/local/sbin/cronolog /usr/local/apache/logs/access_log.%Y%m" common

     년월로 나눠서 'access_log.년월'형식으로 저장을 한다.

     /usr/local/apache/logs/access_log.200307
     /usr/local/apache/logs/access_log.200308

     (2) 다음과 같이 년월에 따라 다른 디렉토리에 로그를 나눌 수도 있다.

     CustomLog "|/usr/local/sbin/cronolog /usr/local/apache/logs/%Y/%m/access_log.%Y%m%d" common

     /usr/local/apache/logs/2003/07/access_log.20030701
     /usr/local/apache/logs/2003/07/access_log.20030702
     /usr/local/apache/logs/2003/07/access_log.20030703
     ...
     /usr/local/apache/logs/2003/08/access_log.20030801

     (3) 로그파일을 access_log로 심볼릭 링크해보자

     CustomLog "|/usr/local/sbin/cronolog --symlink=/usr/local/apache/logs/access_log
     /usr/local/apache/logs/access_log.%Y%m" common

     /usr/local/apache/logs/access_log -> /usr/local/apache/logs/access_log.200308
     /usr/local/apache/logs/access_log.200307
     /usr/local/apache/logs/access_log.200308

    3) images 로그와 warm 로그는 별도로 저장

    웹서버 튜닝 중에 이미지 파일만 별도의 웹서버로 분리하는 방법이 있다.
    이 방법은 Request와 I/O 출력, 트래픽을 분산하는 효과가 있을 것이다.

    이런 튜닝 방법과는 다르지만 images 로그만 별개로 파일로 저장하는 방법을 소개한다.
    다음은 이미지 파일은 images_log에, Codered나 Nimda 등의 warm은 warm_log 에 저장하는 설정이다.

    ---------------------------------
    SetEnvIf Request_URI "\.gif$"      except=images
    SetEnvIf Request_URI "\.jpe?g$"     except=images
    SetEnvIf Request_URI "\.png$"      except=images
    SetEnvIf Request_URI "^/default\.ida"  except=warm   # Codered
    SetEnvIf Request_URI "/root\.exe?"   except=warm   # Nimda
    SetEnvIf Request_URI "/cmd\.exe?"    except=warm
    SetEnvIf Request_URI "^/NULL\.printer" except=warm   #
    SetEnvIf Request_URI "^/NULL\.IDA?"   except=warm
    SetEnvIf Request_URI "^/NULL\.ida?"   except=warm
    SetEnvIf Request_URI "^/NULL\.idq?"   except=warm

    SetEnvIf except   images  images
    SetEnvIf except   warm   warm

    CustomLog logs/access_log common env=!except
    CustomLog logs/images_log common env=images
    CustomLog logs/warm_log  common env=warm
    ---------------------------------
     
    URI 중에 .gif, .jpg, .jpeg, .png 로 끝나는 것은 except 변수에 images값으로 정의하고,
    /default.ida, /root.exe?, /cmd.exe?, /NULL.printer, /NULL.IDA?, /NULL.ida? /NULL.idq?
    등은 윈도의 IIS의 취약점을 이용한 웜 공격으로 except 변수에 warm 값으로 정의한다.
     
    그리고 또한번 변수 except의 값이 images 인 것은 변수 images로 정의
    변수 except의 값이 images 인 것은 변수 warm으로 정의
     
    CustomLog 설정을 보면
    env=!except 에 의해 image와 warm로그(except변수로 정의)를 제외한(=!) 것만 access_log
    에 저장하게 된다.
    마찬가지로 env=images, env=warm에 따라 각각 images_log, warm_log에 저장하게 된다.
     
     
    cronolog 와 함께 쓸 때는 다음과 같이
     
    CustomLog "|/usr/local/sbin/cronolog --symlink=/usr/local/apache/logs/access_log
    /usr/local/apache/logs/access_log.%Y%m" common env=!except
    CustomLog "|/usr/local/sbin/cronolog /usr/local/apache/logs/images_log.%Y%m" common env=images
    CustomLog "|/usr/local/sbin/cronolog /usr/local/apache/logs/warm_log.%Y%m"  common env=warm
    posted by 좋은느낌/원철
    2009. 6. 11. 17:46 개발/Linux 계열

    디렉토리 인덱싱

     

    가. 디렉토리 인덱싱은 index.html, index.asp 등과 같이 웹 서버에서 인덱스 파일로 지정한 파일이 디렉토리에 존재하지 않을경우,

         해당 디렉토리의 하위 디렉토리와 파일의 목록을 열람할 수 있도록 하는 기능이다.

     

    나. 인덱싱 기능이 확성화 되어 있을 경우 웹 브라우져 상에 웹 컨텐츠 디렉토리 내용이 그대로 공개되어, 공격자가 특정 디렉토리에

         존재하는 파일의 목록 정보를 획득할 수 있으며 이를 다운로드 받을수 있다.

     

    옆에 보는거와 같이

    웹주소 URL 다음에

    디렉토리 리스팅으로

    입력하였을 시

    Index of /jsp

    하고 해당 폴더들이 존재한다.

     

    이런경우, 보안에 문제가 생기게된다.

     

    말그대로 해킹해가세요..ㅋㅋ

     

     

     

     

     

     

     

     

     

    다. 또한 운영 환경에 임시적으로 생성해떤 파일 또는 백업을 목적으로 생성한 파일, 웹 서버 또는 웹 어플리케이션을 설치할 때

         테스트 목적의 파일들이 존재할 수 있다. 이러한 파일들이 노출되어 공격자가 다운 받을 경우 환겨설정, 웹 어플리케이션의 소스가

         노출되거나 데이터베이스 정보가 노출될 수 있다.

     

    라. 점검방법

         1) 해당 웹 페이지의 URL에 디렉토리 경로를 직접 입력하여 디렉토리 내용이 보이는지 점검한다.

             http://www.test.com/admin

             http://www.test.com/manager

         2) 웹 어플리케이션 설치 디렉토리 및 웹 디렉토리 이하에서 .bak, .old, .tmp 등의 서비스 제공에 불필요한 파일이나

             임시/백업 파일들이 있는지 검색한다.

         3) 웹 서버나 웹 어플리케이션 서버 설치 시 자동 생성되는 파일 (예, tomcat-docs, 샘플)등 외부에 정보를 노출할 수 있는

             디렉토리나 파일이 존재하는지 검색한다.

     

    마. 시정방법

         1) 웹 서버 혹은 웹 어플리케이션 서버에서 디렉토리 인덱싱 기능을 비활성화 시킨다.

            [tomcat의 예제]

            <!--web.xml-->

               <init-param>

                    <param-name>listings</param-name>

                    <param-value>false</param-value>

               </init-param>

            [apache의 예제]

            <!--httpd.conf-->

    <Directory "/usr/local/apache/htdocs"> 
    # 
    # 
    # This may also be "None", "All", or any combination of "Indexes", 
    # "Includes", "FollowSymLinks", "ExecCGI", or "MultiViews". 
    # 
    # Note that "MultiViews" must be named *explicitly* --- "Options All" 
    # doesn't give it to you. 
    #

    수전전    Options Indexes FollowSymLinks MultiViews

    수정후    Options FollowSymLinks MultiViews 

    # 
    # This controls which options the .htaccess files in directories can 
    # override. Can also be "All", or any combination of "Options", "FileInfo", 
    # "AuthConfig", and "Limit"

    </Directory>

         2) 웹 소스가 위치한 웹 디렉토리에서 임시/백업 파일 및 설치 파일의 존재여부를 조사하여 이를 삭제한다.

         3) 웹 서버나 웹 어플리케이션 서버 설치시 자동 생성되는 파일 중 외부에 정보를 노출할 수 있는 메뉴얼 파일, 샘플등을 조사하여

             이를 삭제한다.

     

    [Tomcat 설정 상태]

     

    [APACHE 설정 상태]

     

    설정 완료 후 Tomcat 과 Apache를 재시작 하기 바란다.

    posted by 좋은느낌/원철
    2009. 6. 11. 17:45 개발/Linux 계열

    apache 공식 사이트 http://httpd.apache.org/ 에서 아파치 소스와 자료를 참고하실 수 있습니다. 
    modssl 공식 사이트 http://www.modssl.org/ 에서는 mod_ssl 소스와 자료를 참고하실 수 있습니다.

    apache 1.3.xx 은 ssl 모듈이 없는 버젼이라서 modssl 모듈을 apache 소스에 패치하는 것으로 설치를 진행하게 됩니다. 이와 같은 기본 구조에서 아래의 설치 과정을 참고 바랍니다. (레드헷 8.0 기반에서 설치 테스트 되었습니다.)

    ※ Apache 1.3.xx + mod_ssl 2.8.xx-1.3.xx 설치 순서

    1. openssl 모듈 설치
    2. 최신 apache 소스, mod_ssl 소스 얻기
    3. mod_ssl 모듈 apache 소스 삽입
    4. apache 설정단계(./configure)
    5. apache 컴파일(make)
    6. apache 테스트 인증서 설치(make certificate)
    7. apache 설치(make install)
    8. apache 설치 예시(Apache 1.3.31 + mod_ssl 2.8.19-1.3.31 )

    1. openssl 모듈 설치

    먼저 openssl 라이브러리가 설치되어 있어야 합니다. 
    openssl 설치 자료는 openssl 설치 가이드를 참고해 주시기 바랍니다.

    2. 최신 apache 소스, mod_ssl 소스 얻기

    apache 소스는 httpd.apache.org/download.cgi 에서 최신 버젼의 소스를 받을 수 있습니다. 

    mod_ssl 소스는 www.modssl.org/source/ 에서 최신 버젼의 소스를 확인합니다. [LATEST] 가 붙어있는 소스가 최신 소스입니다.

    mod_ssl-2.8.18-1.3.31.tar.gz [LATEST] 소스가 있을 경우에 이것은 mod_ssl-2.8.18 버젼이며, apache 1.3.31 버젼에 mod_ssl을 패치하는 소스임을 뜻합니다. 참고바랍니다.
    대부분의 경우에 apache가 먼저 업데이트되므로, mod_ssl에서 지원하는 최신 소스에 맞는 버젼의 apache 를 선택해 주시면 되겠습니다.

    3. mod_ssl 모듈 apache 소스 삽입

    최신 mod_ssl 소스와 그에 맞는 apache 소스를 다운받은 후에 압축을 풀고, 풀려진 mod_ssl 디렉토리에서 apache 소스 mod_ssl 패치를 진행합니다.
    --with-apache 옵션은 압축이 풀려진 아파치 소스 경로 /usr/local/src/apache_1.3.xx 를 설정합니다.
    --with-ssl 옵션의 디렉토리를 /usr/local/openssl 과 같이 openssl 설치시에 --openssldir 설정된 디렉토리를 지정해 줍니다.
    --prefix 옵션은 아파치 설치될 경로 /usr/local/apache-ssl 를 지정해 줍니다. 
    ./configure \
    --with-apache=/usr/local/src/apache_1.3.xx \
    --with-ssl=/usr/local/openssl \
    --prefix=/usr/local/apache-ssl
    

    4. apache 설정단계(./configure)

    apache 소스 컴파일 설정전에 SSL 라이브러리 변수 옵션을 먼저 잡아줍니다.
    SSL_BASE=/usr/local/openssl
    export SSL_BASE
    LDFLAGS=-L/usr/local/openssl/lib
    export LDFLAGS
    CPPFLAGS=-I/usr/local/openssl/include
    export CPPFLAGS
    
    apache 소스 디렉토리로 이동을 합니다. apache 소스는 mod_ssl 패치가 되었으며, apache 컴파일 설정 진행합니다.
    apache 소스 설치에는 두가지 방식으로 모듈을 설치할 수 있습니다. statically linking module, DSO(Dynamic Shared Objects) module 모듈로 설치할 수 있습니다.
    정적설치와 동적설치에 대한 문서는 아파치 문서를 참고해 주시바랍니다.

    --prefix 옵션은 아파치 설치 디렉토리를 설정합니다. 
    --enable-module=ssl 옵션으로 ssl 모듈을 설치하는 것을 설정합니다. 
    1. statically linking module 로 mod_ssl 모듈 설치
    --disable-shared=ssl 옵션은 ssl 모듈을 정적으로 링크시키는 것을 지정합니다.
    그 밖의 모듈과 설정 옵션들을 더 추가하시고, 설정을 진행합니다. 
    ./configure \
    --prefix=/usr/local/apache-ssl \
    --enable-module=ssl \
    --disable-shared=ssl \
    ...
    

    2. DSO(Dynamic Shared Objects) module 로 mod_ssl 모듈 설치
    --enable-shared=ssl 옵션은 ssl 모듈을 동적으로 링크시키는 것을 지정합니다.
    그 밖의 모듈과 설정 옵션들을 더 추가하시고, 설정을 진행합니다. 
    ./configure \
    --prefix=/usr/local/apache-ssl \
    --enable-module=ssl \
    --enable-shared=ssl \
    ...
    

    5. apache 컴파일(make)

    컴파일을 진행합니다.
    make

    6. apache 테스트 인증서 설치(make certificate)

    apache 1.3.xx 는 설치시에 테스트 인증서 설치를 도와 줍니다. 테스트 인증서를 설치합니다. (파란색으로 표시된 것이 입력된 문자입니다.)
    이부분은 CSR 생성 가이드 문서를 참고하시면 좋습니다.
    make certificate TYPE=test
    ...
    STEP 0: Decide the signature algorithm used for certificate
    The generated X.509 CA certificate can contain either
    RSA or DSA based ingredients. Select the one you want to use.
    Signature Algorithm ((R)SA or (D)SA) [R]:R
    
    STEP 1: Generating RSA private key (1024 bit) [server.key] ...
    STEP 2: Generating X.509 certificate signing request [server.csr] ... 1. Country Name (2 letter code) [XY]:KR 2. State or Province Name (full name) [Snake Desert]:seoul 3. Locality Name (eg, city) [Snake Town]:seoul 4. Organization Name (eg, company) [Snake Oil, Ltd]:Dotname Korea 5. Organizational Unit Name (eg, section) [Webserver Team]:Digital Certificate Team 6. Common Name (eg, FQDN) [www.snakeoil.dom]:www.anycert.co.kr 7. Email Address (eg, name@FQDN) [www@snakeoil.dom]:(적당한 이메일 주소를 넣어주세요) 8. Certificate Validity (days) [365]:365
    STEP 3: Generating X.509 certificate signed by Snake Oil CA [server.crt] Certificate Version (1 or 3) [3]:3 ... STEP 4: Enrypting RSA private key with a pass phrase for security [server.key] The contents of the server.key file (the generated private key) has to be kept secret. So we strongly recommend you to encrypt the server.key file with a Triple-DES cipher and a Pass Phrase. Encrypt the private key now? [Y/n]: y writing RSA key Enter PEM pass phrase: (적당한 테스트 비밀번호) Verifying - Enter PEM pass phrase: (적당한 테스트 비밀번호) Fine, you're using an encrypted RSA private key. ...

    7. apache 설치(make install)

    apache 를 설치합니다.
    make install
    apache 컴파일 오브젝트들을 삭제합니다.
    make clean
    apache 컴파일 SSL 옵션 변수들을 해제합니다.
    unset SSL_BASE
    unset LDFLAGS
    unset CPPFLAGS

    8. apache 설치 예시(Apache 1.3.31 + mod_ssl 2.8.19-1.3.31 )

    (리눅스 레드헷 8.0 이상 기준 설치 예시입니다.)
    [root@web1 root]# cd /usr/local/src
    [root@web1 src]# wget http://www.modssl.org/source/mod_ssl-2.8.19-1.3.31.tar.gz
    [root@web1 src]# wget http://ftp.apache-kr.org/httpd/apache_1.3.31.tar.gz
    [root@web1 src]# tar zxf mod_ssl-2.8.19-1.3.31.tar.gz
    [root@web1 src]# tar zxf apache_1.3.31.tar.gz
    [root@web1 src]# cd mod_ssl-2.8.19-1.3.31
    [root@web1 mod_ssl-2.8.19-1.3.31]# ./configure \
    > --with-apache=/usr/local/src/apache_1.3.31 \
    > --with-ssl=/usr/local/openssl \
    > --prefix=/usr/local/apache-ssl
    ...
    [root@web1 mod_ssl-2.8.19-1.3.31]# cd /usr/local/src/apache_1.3.31
    [root@web1 apache_1.3.31]# SSL_BASE=/usr/local/openssl
    [root@web1 apache_1.3.31]# export SSL_BASE
    [root@web1 apache_1.3.31]# LDFLAGS=-L/usr/local/openssl/lib
    [root@web1 apache_1.3.31]# export LDFLAGS
    [root@web1 apache_1.3.31]# CPPFLAGS=-I/usr/local/openssl/include
    [root@web1 apache_1.3.31]# export CPPFLAGS
    [root@web1 apache_1.3.31]# ./configure \
    > --prefix=/usr/local/apache-ssl \
    > --enable-module=ssl \
    ...
    [root@web1 apache_1.3.31]# make
    [root@web1 apache_1.3.31]# make certificate TYPE=test
    ...
    [root@web1 apache_1.3.31]# make install
    [root@web1 apache_1.3.31]# make clean
    
    posted by 좋은느낌/원철
    2009. 6. 11. 17:44 개발/Linux 계열

    톰켓 설치하기

     


    0.미리 설치해야할 것

    JAVA버전이 톰켓에서 지원하는 버전을 설치하여야한다. 보통 기본으로 설치된 자바는 버전이 낮으니 높은 버전의 JAVA를 설치해 보자.

     


    1. 톰켓 다운받기

    tomcat 을 http:/www.apache.org에서 다운 받는다. 이때 우리는 소스 버전과 바이너리 버전을 다운 받을 수 있다. 소스 버전의 경우 ant 등을 설치해서 컴파일해야한다. 바이너리 버전을 다운 받아서 압축을 푼다.


    2.압축풀기

     


    # gzip -dc jakarta-tomcat-5.0.19.tar.gz | tar xvf -

     


    3.톰켓 폴더 옮기기

     


    jakarta-tomcat-5.0.19 디렉토리가 하나 생겼다. 이 디렉토리를 통체로 옮긴다. 옮길 위치는 자신이 설치한 프로그램들이 모여있는곳이 적당하다. (ex: /usr/local/tomcat-5)


    bin 디렉토리에 있는 파일 중 톰켓을 실행 시키는 파일은 startup.sh

    중지 시키는 파일은 shutdown.sh 이다.

    4.톰켓 설정하기

    startup.sh를 수정하자. JAVA의 PATH를 적어넣으면 된다.

    [ns@/usr/local/httpd/tomcat.5/bin] # vi startup.sh

    # -----------------------------------------------------------------------------

    # Start Script for the CATALINA Server

    #

    # $Id: startup.sh,v 1.3 2002/08/04 18:19:43 patrickl Exp $

    # -----------------------------------------------------------------------------


    # ADD PATH

    JAVA_HOME=/usr/j2se

    export JAVA_HOME

    CATALINA_HOME=/usr/local/httpd/tomcat.5

    export CATALINA_HOME 
     


    위 부분을 추가해주자. (참고로 catalina.sh, shutdown.sh도 위와 마찬가지로 수정해주자.)

     


    다시 실행시켜본다.

    [ns@/usr/local/httpd/tomcat/bin] # ./startup.sh

    Using CATALINA_BASE:   /usr/local/httpd/tomcat.5

    Using CATALINA_HOME:   /usr/local/httpd/tomcat.5

    Using CATALINA_TMPDIR: /usr/local/httpd/tomcat.5/temp

    Using JAVA_HOME:       /usr/j2se

     


    인터넷 브라우저를 켜서 한번 확인해본다.

     


    http://homeaddress:8080

     


    ***********************************************
    ***********************************************


    ***********************************************
    ***********************************************

    jakarta-tomcat-connectors 톰켓과 아파치 연동하기

     


    아파치와 톰켓은 8009포트로 통신이 가능하다 이를 이용해서 아파치와 톰켓을 연동하여 사용할 수있다.


    1.jakarta-tomcat-connectors 다운받기

    우선 jk connecter 을 다운 받자 소스로 다운 받아야한다. (참고로 jk가 아니라 jk2 이다.)

    아마 현재 릴리즈 되는 파일의 이름은 분명히 jakarta-tomcat-connectors-jk2-src-current.tar.gz 이것이다.


    2.압축을 푼다.

     


    #gzip -d  jakarta-tomcat-connectors-jk2-src-current.tar.gz

    #tar -xvf jakarta-tomcat-connectors-jk2-src-current.tar

     


    3.컴파일을 한다.

    jakarta-tomcat-connectors-jk2-2.0.4-src 라는 디렉토리가 생성된다.

    커넥터를 컴파일 하기 위해서 /jk/native2디렉토리로 이동한다. 
    # cd jakarta-tomcat-connectors-jk2-2.0.4-src/jk/native2/


    설치에 관한 환경 설정을 하는 buildconf.sh를 먼저 실행해 준다.

     


    # ./buildconf.sh

     


    이후 에러가 뜨지 않는다면 configure 를 실행한다.

     


    # ./configure --with-apxs2=/usr/local/httpd/apache/bin/apxs


    --with-apxs2 라는 옵션을 사용해서 아파치의 apxs 의 위치를 알려준다.

     


    이모든 과정을 끝난 이후. make를 한다. 참고로 make install 은 않된다.

     


    4.mod_jk2.so복사하기

    jakarta-tomcat-connectors-jk2-2.0.4-src/jk/build/jk2/apache2디렉토리로 이동


    mod_jk2,so파일을 아파치 모듈에 추가

     


    # cp mod_jk2.so /usr/local/httpd/apache/modules/


    5.workers2.properties 복사하기

    /usr/local/httpd/apache/conf 에 복사한다.

     


    mod_jk2.so 모듈은 workers2.properties 파일을 참고로 해서 어떻게 작동해야 할지 결정한다.

    6.톰켓설정하기

    톰켓의 conf폴더에는 jk2.properties파일을 수정한다.


    톰켓 5에는 coyote connector 가 기본적으로 설치되어 있다. coyote connector가 하는 역할은 mod_jk2 의 모듈에서 전달하는 정보를 수신 송신하는 역할을 한다. 이것을 설정하는 파일이 jk2.properties 파일이다.  [ns@/usr/local/httpd/tomcat.5/conf] # vi jk2.properties

    ## THIS FILE MAY BE OVERRIDEN AT RUNTIME. MAKE SURE TOMCAT IS STOPED

    ## WHEN YOU EDIT THE FILE.


    ## COMMENTS WILL BE _LOST_


    ## DOCUMENTATION OF THE FORMAT IN JkMain javadoc.


    # Set the desired handler list

    # handler.list=apr,request,channelJni

    #

    # Override the default port for the socketChannel

    channelSocket.port=8009

    # Default:

    # channelUnix.file=${jkHome}/work/jk2.socket

    # Just to check if the the config  is working

    shm.file=/usr/local/httpd/apache/logs/jk2.shm


    # In order to enable jni use any channelJni directive

    # channelJni.disabled = 0

    # And one of the following directives:


    # apr.jniModeSo=/opt/apache2/modules/mod_jk2.so


    # If set to inprocess the mod_jk2 will Register natives itself

    # This will enable the starting of the Tomcat from mod_jk2

     

    apr.jniModeSo=inprocess 
     

     

     

    7.아파치 설정

    httpd.conf의 적절한 곳에 LoadModule jk2_module modules/mod_jk2.so 이 내용을 적는다.

     

     

    8.workers2.properties파일 수정

    톰켓과 아파치가 연동하는 부분을 설정하는 부분이다. 톰켓과 아파치는 8009번포트를 사용해 서로 통신하게 된다.

    [ns@/usr/local/httpd/apache/conf] # vi workers2.properties

    # Shared memory handling. Needs to be set.

    [shm]

    file=/usr/local/httpd/apache/logs/shm.file

    size=1048576


    # Example socket channel, explicitly set port and host.

    [channel.socket:localhost:8009]

    port=8009

    host=127.0.0.1


    # define the worker

    [ajp13:localhost:8009]

    channel=channel.socket:localhost:8009


    # Announce a \"status\" worker

    [status:status]


    # Uri mapping

    [uri:/jsp-examples/*]

    worker=ajp13:localhost:8009


    [uri:/servlets-examples/*] 
     

    worker=ajp13:localhost:8009


    [uri:/tomcat-docs/*]

    worker=ajp13:localhost:8009


    [uri:/*]

    worker=ajp13:localhost:8009


    [uri:/status/*]

    worker=status:status 
     


    설정한 후에 톰켓, 아파치를 다시 실행한다. 위의 것을 그대로 복사해서 만들어도 된다.

    (아마도 리부팅 후 실행하는 것이 좋을 듯하다.)

    그리고 http://homeaddress/ 를 입력해본다.

    http://homeaddress:8080/ 과 같은 화면이 뜬다면

    posted by 좋은느낌/원철
    2009. 6. 11. 17:44 개발/Linux 계열

    아파치 톰켓 연동하기

     OS =  linux redhat 9.0
    아파치 버젼 : 1.3.31
    Tomcat 버젼 : 5.0.28
    Connectors  : jakarta-tomcat-connectors-jk2-2.0.4-src

    1. 아파치 설치
     가. tar -xvzf apache_1.3.31.tar.gz
     나. ./configure --prefix=/usr/local/apache --enable-rule=SHARED_CORE --enable-shared=max --enable-module=so
     다. make
     라. mkke install
     설치 완료

    2. connector 만들기(mod_jk2.so)
     가. tar xvzf jakarta-tomcat-connectors-jk2-src-current.tar.gz
     나. apr-0.9.4.tar.gz , apr-util-0.9.4.tar.gz 파일이 필요함
        참고 http://mirror.apache.or.kr/apr/apr-0.9.4.tar.gz
             http://mirror.apache.or.kr/apr/apr-util-0.9.4.tar.gz
        위 2개 파일을 받아 압축을 푼다.
     다. cd jakarta-tomcat-connectors-jk2-2.0.4-src/jk/native2/
     라. ./buildconf.sh 
     마. ./configure --with-apxs=/usr/local/apache/bin/apxs --with-apr=/경로/apr-0.9.4 --with-apr-util=/경로/apr-util-0.9.4
     바. make 
     사. cd jakarta-tomcat-connectors-jk2-2.0.4-src/jk/build/jk2/apache13 로 이동
     아. cp mod_jk2.so /usr/local/apache/libexec/mod_jk2.so
     자. chmod 755 /usr/local/apache/libexec/mod_jk2.so
     차. cp jakarta-tomcat-connectors-jk2-2.0.4-src/jk/conf/workers2.properties /usr/local/apache/conf 에 복사

    3. apahce 환경 설정
     가. /usr/local/apahce/conf/httpd.conf 수정
         # Apache Tomcat5 Connector
           LoadModule jk2_module         libexec/mod_jk2.so
           AddModule mod_jk2.c
           추가
     나. User nobody --> xxx 사용자로
         Group nobody --> xxx 그룹 사용자로 이걸 수정하는 이유는 기본적으로 apache는 nobody 유저로 나중에권한문제가
          생길수 있기때문에 변경한다. 보통 403 에러가 나타남.

     다. DocumentRoot "/usr/local/apache/htdocs" 는 jsp 파일이 놓일 위치다 변경가능 (tomcat의 context 위치와 같게 설정한다.)
         같이 변경
     
     라. 
     DirectoryIndex index.html index.jsp -> index.jsp 추가한다. 
     

     마. Options Indexes FollowSymLinks MultiViews 이부분을 주석으로 막는다.( http://www.xxx.com/ 이런경우 주석으로 처리하면 
           파일리스트 목록이  보이는 현상을 제거한다.

    4. /usr/local/apache/conf/workers2.properties 수정
       
     [logger]
     level=DEBUG

     [config:]
     file=${serverRoot}/conf/workers2.properties
     debug=0
     debugEnv=0

     [uriMap:]
     info=Maps the requests. Options: debug
     debug=0

     # Alternate file logger
     #[logger.file:0]
     #level=DEBUG
     #file=${serverRoot}/logs/jk2.log

     [shm:]
     info=Scoreboard. Required for reconfiguration and status with multiprocess servers
     file=${serverRoot}/logs/jk2.shm
     size=1000000
     debug=0
     disabled=0

     [workerEnv:]
     info=Global server options
     timing=1
     debug=0
     # Default Native Logger (apache2 or win32 )
     # can be overriden to a file logger, useful
     # when tracing win32 related issues
     #logger=logger.file:0

     [lb:lb]
     info=Default load balancer.
     debug=0

     [lb:lb_1]
     info=A second load balancer.
     debug=0
     [channel.socket:localhost:8009]

     info=Ajp13 forwarding over socket
     debug=0
     tomcatId=localhost:8009

     [channel.socket:localhost:8019]
     info=A second tomcat instance.
     debug=0
     tomcatId=localhost:8019
     lb_factor=1
     group=lb
     group=lb_1
     disabled=0

     [channel.un:/opt/33/work/jk2.socket]
     info=A second channel connecting to localhost:8019 via unix socket
     tomcatId=localhost:8019
     lb_factor=1
     debug=0

     [channel.jni:jni]
     info=The jni channel, used if tomcat is started inprocess

     [status:]
     info=Status worker, displays runtime informations

     [vm:]
     info=Parameters used to load a JVM in the server process
     #JVM=C:\jdk\jre\bin\hotspot\jvm.dll
     classpath=${TOMCAT_HOME}/bin/tomcat-jni.jar
     classpath=${TOMCAT_HOME}/server/lib/commons-logging.jar
     OPT=-Dtomcat.home=${TOMCAT_HOME}
     OPT=-Dcatalina.home=${TOMCAT_HOME}
     OPT=-Xmx128M
     #OPT=-Djava.compiler=NONE
     disabled=1

     [worker.jni:onStartup]
     info=Command to be executed by the VM on startup. This one will start tomcat.
     class=org/apache/jk/apr/TomcatStarter
        #ARG=start
     # For Tomcat 5 use the 'stard' for startup argument
        ARG=stard
     disabled=1
     stdout=${serverRoot}/logs/stdout.log
     stderr=${serverRoot}/logs/stderr.log

     [worker.jni:onShutdown]
     info=Command to be executed by the VM on shutdown. This one will stop tomcat.
     class=org/apache/jk/apr/TomcatStarter
     ARG=stop
     disabled=1

     [uri:/jkstatus/*]
     info=Display status information and checks the config file for changes.
     group=status:

     [uri:127.0.0.1:8003]
     info=Example virtual host. Make sure myVirtualHost is in /etc/hosts to test it
     alias=myVirtualHost:8003

     [uri:127.0.0.1:8003/ex]
     info=Example webapp in the virtual host. It'll go to lb_1 ( i.e. localhost:8019 )
     context=/ex
     group=lb_1


     [ajp13:localhost:8009]
     channel=channel.socket:localhost:8009

     [uri:/*.jsp]
     info=All jsp page  mapping


     [uri:localhost/*.jsp]
     info=All jsp page  mapping
     worker=ajp13:localhost:8009

     [uri:/servlet/*]
     info=All Servlet  page  mapping

     [uri:/*]

     위와 같이 설정했음.

    5. Tomcat5 설치
     가. tar -xvzf jakarta-tomcat-5.0.28.tar.gz  
        나. conf/server.xml 수정
       
          위 부분 주석처리

       
                   port="8009" minProcessors="5" maxProcessors="75"
                   enableLookups="true" redirectPort="8443" acceptCount="10"
                   debug="0" connectionTimeout="20000" useURIValidationHack="false"
                   protocolHandlerClassName="org.apache.jk.server.JkCoyoteHandler" />
          위 부분 추가

        
                  위 부분 주석 해제

       
        위 부분 주석처리

          appBase="webapps" 를 -- >"/" 수정했음.
          unpackWARs="true" autoDeploy="true"
          xmlValidation="false" xmlNamespaceAware="false">
        
         
         위 부분 추가
     
     6. conf/jk2.properties  수정
        # Set the desired handler list
      handler.list=apr,request
     # handler.list=apr,request,channelJni
     #
     # Override the default port for the socketChannel
      channelSocket.port=8019
     # Default:
     # channelUnix.file=${jkHome}/work/jk2.socket
     # Just to check if the the config  is working
      shm.file=${jkHome}/work/jk2.shm

     # In order to enable jni use any channelJni directive
     # channelJni.disabled = 0
     # And one of the following directives:

     # apr.jniModeSo=/opt/apache2/modules/mod_jk2.so

     # If set to inprocess the mod_jk2 will Register natives itself
     # This will enable the starting of the Tomcat from mod_jk2
      apr.jniModeSo=inprocess

      위 와같이 설정했음.

    posted by 좋은느낌/원철
    2009. 6. 11. 17:43 개발/Linux 계열

     

      httpd.conf 파일은 크게 세부분으로 나누어져 있다.

        Section 1: Global Environment  : 아파치 전체적인 영향이 미치는 설정
        Section 2: 'Main' server configuration : 주 서버에 대한 설정
        Section 3: Virtual Hosts : 가상 호스트에 대한 설정

      자, 그럼 이제부터 이 아파치웹서버의 모든 환경을 설정하는 아파치환경파일 httpd.conf파일의 설정방법에 대해서 상세히 알아보도록 하자.

     

     ### Section 1: Global Environment

      전제환경설정 파트로 Section 1에서 설정하는 것들은 아파치 웹서버에 
    전반적인 영향을 미친다.

    ServerType standalone

      서버의 구동방법으로는 standalone과 inetd방식이 있는데,  standalone 
    방식은 하나의 웹데몬(아파치서버)이 클라이언트의 접속을 모두 처리하는 
    방식으로 응답속도가 빠른 방법으로 주로 이방식을 사용한다. inetd 방식은 
    inetd라는 시스템의 /etc디렉토리 끝에 존재하는 inetd라는 슈퍼데몬이 
    클라이언트의 접속요구가 있을 때마다 웹서버를 구동하는 방식이다. 
    일반적으로 응답속도가 빠르고 효율적인 standalone으로 설정하여 사용한다.


    ServerRoot "/usr/local/apache"

      아파치서버의 홈디렉토리를 지정하며 절대경로로 지정한다. 이후로 나오는 
    대부분의 패스들은 이 경로에 대한 상대경로로 지정이 된다. 예를 들어 
    환경설정파일, 에러로그파일등의 상대경로의 기준이 되는 위치이다.


    LockFile logs/accept.lock

      아파치 컴파일시 USE_FCNTL_SERIALIZED_ACCEPT나 
    USE_FLOCK_SERIALIZED_ACCEPT으로 컴파일 했을 때 사용되는 
    LockFile의 경로지정시에 사용된다. 가급적 기본값으로 사용한다.


    PidFile logs/httpd.pid

      PidFile 설정은 ServerType을 Standalone으로 설정했을때만 유효한 
    것으로 아파치 서버의 프로세스가 생성되어 있을 때 그 프로세서ID(PID)를 
    기록하는 파일을 지정한다.  당연히 아파치서버가 재시작되거나 과부하로 
    인해 PID가 바뀌게 될 경우에는 이 파일의 PID값도 바뀌게 된다.  즉 
    다시말해서 여기서 지정된 파일(httpd.pid)에 실행되고 있는 아파치서버의 
    프로세스번호(PID)값이 기록된다고 하면 정답이다. ServerRoot를 기준으로한 
    상대경로로 지정된다.  절대경로로 지정하려면 "/"로 시작하는 절대경로를 
    적어주면 된다.

     


    ResourceConfig conf/srm.conf 
    AccessConfig conf/access.conf

      아파치 서버의 환경설정파일은 3개이au httpd.conf, srm.conf, access.conf 
    가 그것이다. 그러나 하나의 설정파일로 하는 것이 효율적이기 때문에 
    지금은 httpd.conf파일안에 3개의 파트(Section)로 나누어서 하나의 
    파일안에서 설정을 하고 있다. srm.conf와 access.conf파일의 내용은 현재 
    비어있는 상태이지만, 필요하다면 이 파일 내에도 설정을 할 수 있다. 
    아파치 서버가 실행이 될 때는 httpd.conf, srm.conf, access.conf 순으로 
    언제나 이 3개의 파일을 모두 읽고 난뒤에 실행이 되기 때문이다. 만약 이 
    두 개의 파일을 서버가 무시하도록 하려면 다음과 같이 하거나 "#"으로 붙여 
    두면 주석처리되어 무시된다.

    ResourceConfig /dev/null
    AccessConfig /dev/null


    Timeout 300

      클라이언트의 요청에 의해 서버와 연결이 되었을 때 클라이언트와 
    서버간에 아무런 메시지가 발생하지 않았을 때 오류로 처리될 시간을 
    초단위로 설정한다. 초기값은 1200이며 보통은 300초로 지정을 한다. 
    네트웍의 속도가 나쁠수록 수치값은 높게 설정하는 것이 좋다.

    KeepAlive On

      접속한 채로 특별한 요청없이 지속적인 연결을 허용할 것인지를 설정한다. 
    허용하지 않으려면 off

    MaxKeepAliveRequests 100

      클라이언트가 접속된 시간동안 아파치서버에 요청할 수 있는 최대의 
    개수를 지정한다. 0을 지정하면 제한없음을 의미하며, 서버의 성능향상을 
    위하여 가능한 높은 값이 좋다.
     
    KeepAliveTimeout 15

      아파치 서버는 같은 접속상태의 클라이언트에서 여기서 지정한 초만큼의 
    요청이 없었을 때 접속을 끊게 된다.

    MinSpareServers 5
    MaxSpareServers 10

      아파치 웹서버는 성능향상과 빠른 응답속도를 위해 유휴서버(현재 
    서비스대기 중인 프로세스)를 만들게 되는데 이 유휴서버의 개수는 시스템의 
    상황에 따라 달라지게 된다. 유휴서버가 MinSpareServers의 개수(5) 보다 
    적게되면 추가로 생성을 하게 되며 MaxSpareServers의 개수(10)보다 많게 
    되면 죽이게 된다. 즉, 유휴서버의 개수를 적절히 조절하기 위한 것이라 
    생각하면 된다.


    StartServers 5  

      아파치 웹데몬이 구동될 때 자식프로세스를 몇 개로 할 것인가를 
    지정한다. 시작할 때 동시에 띄우게 될 웹데몬의 개수이다. 그러나 웹데몬이 
    구동되고 난 뒤엔 시스템의 상황(부하율등)에 따라 대부분 합리적인 
    개수만큼 동적으로 생성되었다가 죽기도 하므로 큰 의미를 가지는 것은 
    아니다.

    MaxClients 150

      아파치웹서버에 접근할 수 있는 클라이언트의 최대갯수는 이 상한값으로 
    제한한다. 여기서 지정한 개수이상의 클라이언트의 요청이 생긴다면 
    아파치는 응답하지 않고 이 요청을 무시한다.  이를 제한하는 이유는 
    시스템의 자원을 아파치 웹서버가 무한정 차지하는 것을 방지하기 위한 
    것이다.

    MaxRequestsPerChild 30

      아파치 웹서버의 자식프로세스들이 클라이언트의 요청 개수를 지정한다. 
    만약 자식프로세스가 이 값만큼의 클라이언트요청을 받았다면 이 
    자식프로세스는 자동으로 죽게된다. 이 값이 0으로 설정이 된다면 
    자식프로세스가 자동으로 죽는일은 없을 것이다. 그러나 0아닌 다른 값으로 
    설정함으로서 프로세스의 수를 적절히 조절하여 시스템의 부하조절과 
    자원낭비를 어느정도 방지 할 수 있다.

    Listen 3000
    Listen 12.34.56.78:80

      시스템의 기본값이외에 다른 IP Address와 포트에 대해서도 연결할 수 
    있도록 해 준다. 환경설정파일(httpd.conf) 맨뒤에 나오는 가상호스트(Virtual 
    Host)부분에서 설정되는 가상호스트를 설정하기 위해 필요하다.


    BindAddress *

      서버가 응답할 수 있는 IP Address를 설정하는 것이다. 하나의 시스템에 
    있는 아파치웹서버 하나로 여러 웹서버처럼 관리하는 웹호스팅서비스등에서 
    많이 이용하는 것으로 여러 IP Address를 인식할 수 있게 한다. "*"으로 
    설정이 되었다면 모든  IP Address에 대해 응답할 수 있으며, IP Address를 
    지정한다면 지정한 IP Address에 대해서만 응답할 수 있게 된다.  여러개의 
    IP Address를 ISP로부터 할당받아서 웹호스팅서비스를 하고자 한다면 
    이부분에서 지정해 주면된다. 이 설정파일의 맨 뒷부분에 나오는 
    <VirtualHost>~</VirtualHost>부분의 IP bind 가상호스트부분에서 아파치 
    웹서버가 응답할 수 있도록 하려면 여기서 IP Address를 지정해 줘야 한다.

    ExtendedStatus On

      server-status로 아파치웹서버의 상태를 상태를 모니터링 할 때 
    "자세한상태정보"기능을 제공할 것인지(On) 아닌지(Off)를 설정하는 것이다.

    ### Section 2: 'Main' server configuration

      Section 2에서 설정하는 항목들은 아파치의 주된서버가 사용할 값들을 
    지정한다. <VirtualHost>에 정의된 가상호스트들에서 지정하지 않는 것은 
    여기서 지정된 값이 기본값으로 적용된다. 또한 여기서 지정하는 값을 각 
    <VirtualHost>내에도 지정할 수 있으며 이경우엔 각<VirtualHost>내에서 
    지정한 값이 우선적용된다.

    Port 80

      아파치웹서버의 기본포트를 지정한다. 특별하게 사용하는 것이 아니라면 
    80번으로 해둬야 한다. 사용가능한 포트는 0 ~ 65535이며 1024이하의 
    포트번호는 시스템에서 특별하게 예약되어 있으므로 80번 이외의 다른 
    포트를 사용하려면 1024이상의 포트번호를 지정해서 사용해야 할 것이다. 
    특별한 지정이 없다면 <VirtualHost>에 정의된 각각의 가상호스트들의 
    기본포트가 된다. 만약 <VirtualHost> 내에서 Port가 지정이 된다면 그 
    포트번호가 우선한다.

    (특별히 PORT를 따로 지정해 줄 필요가 있을 때는 따로 지정해 주며, 
    이때는 웹서버로 접근할 때 반드시 따로지정한 PORT번호로 접근해야 한다. 
    예를들어 Port 1234로 지정했다면, 접근시 : http://www.domain.co.kr:1234 
    로 접속해야한다. 단, 80번은 default이므로 Port번호를 입력하지 않아도 
    도메인만으로 그냥 접근할 수 있다. 예: http://www.domain.co.kr )

    User nobody 
    Group nobody

      아파치 웹데몬이 요청을 받았을 때 여기서 지정한 user와 group으로 
    응답을 하게된다. 이 설정은 ServerType이 Standalone방식이며, 아파치의 
    실행이 root권한으로 실행이 되었을 때 유효한 것이다. 많은 
    웹서버관리자들이 nobody로 설정을 해 두고 있으며, 만약 시스템에 nobody 
    user가 없다면 새로생성(useradd)을 해야 할 것이다. 단, root로 설정하는 
    것은 절대로 있어서는 안되며 nobody이외의 다른 시스템사용자 id로 지정을 
    한다면 정말 신중히 모든면(시스템 보안 및 자원사용등)에서 깊게 고려를 
    해봐야 한다.

    ServerAdmin webmaster@www.domain.co.kr

      여기서 지정하는 email address는 웹문서 로딩에러등의 문제에서 
    클라이언트측으로 보내질 메일주소값이다. 대부분 
    웹서버관리자의 email address로 설정을 한다.

    ServerName new.host.name

      클라이언트에게 보여주는 호스트이름을 지정한다. www를 쓰지않는 
    호스트에서 www를 쓰는 것처럼 보이게 할 수 있다. 예를 들어 
    bbs.manualand.co.kr을 www.manualand.co.kr로 지정해서 쓸 수 있다. 
    이곳에 IP Address를 적게 되면 클라이언트에는 Ip Address를 보여준다.

    DocumentRoot "/usr/local/apache/htdocs"

      아파치 웹서버의 웹문서가 있는 경로를 지정한다. 예를 들어 
    "http://www.manualand.co.kr/index.html"의 초기 문서라면 이 초기문서의 
    절대 경로는 여기서 지정된 "/usr/local/apache/htdocs/index.html"이 된다. 
    경로의 맨 마지막에 "/"를 추가해서는 안된다. Alias를 사용하여 다른 위치를 
    지정할 수도 있다.

    <Directory />
        Options FollowSymLinks
        AllowOverride None
    </Directory>      
                    

    <Directory>에서 지정되는 값에 대한 옵션은 다음과 같은 의미를 가지고 
    있다.
            None : 일단 모든허용을 하지 않는다.
            All : 모든허용을 한다.
            Indexes :
            Includes :
            FollowSymlinks :
            ExeCGI :
            MultiViews :


    UserDir public_html

      하나의 아파치 웹서버에서 여러 사용자의 홈페이지를 별도로 만들어 
    관리할 때 필요한 개별 가입자의 홈페이지 디렉토리이름이다. 예를 들어 
    sspark이란 계정가입자의홈페이지는 "http://manualand.co.kr/~sspark"라는 
    홈페이지를 가지고 있을 때 sspark의 계정에서 "public_html"이란 
    디렉토리가 홈디렉토리가 되어 이 디렉토리에 있는 초기문서 index.html을 
    불러서 보여주게 된다.

    <Directory /home/*/public_html>
        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 deny,allow
            Deny from all
        </Limit>
    </Directory>

    계정사용자의 홈페이지(public_html)의 접근에 대한 옵션을 지정한 것이다.


    DirectoryIndex index.html

      디렉토리만을 지정했을 경우에 그 디렉토리에서 찾게될 문서의 순서를 
    지정해 준다. 즉, 디렉토리 이름만을 지정하더라도 여기서 지정한 
    index.html을 찾아서 웹브라우즈에 보여준다. 여러개의 파일을 지정할 수 
    있으며, 이런 경우에는 순서대로 찾아서 보여준다. 예를 들어 
    "DirectoryIndex index.html index.htm"로 지정했다면 먼저 "index.html"을 
    찾아서 있다면 이 파일을 로딩하고, "index.html"이 없다면 "index.htm"을 
    찾아서 로딩해 준다.

    AccessFileName .htaccess

      디렉토리별로 접근제어할 정보(ID, Password)를 담고 있는 파일을 
    지정한다. 디렉토리별로 인증을 거쳐서 접근할 수 있는 설정을 하기위한 
    것이다. 예를 든다면 어떤 홈페이지의 전부나 혹은 일부에로 접근하려고 할 
    때 ID, Password를 묻는 창이 뜨면서 맞게 입력한 경우에만 접근허용하는 
    것이다.  보안상의 이유로 이 파일의 이름을 다른 이름으로 바꾸로 싶다면 
    ".htaccess"대신에 다름이름을 적어주면 된다.

    <Files ~ "^\.ht">
        Order allow,deny
        Deny from all
    </Files>

      바로위에서 설정한 파일(".htaccess")의 내용을 볼 수 없게 할 때 사용하는 
    옵션이다. 보안상의 이유로 이 옵션은 설정해 두는 것이 좋다. 만약 이 
    옵션을 주석처리해 둔다면 ".htaccess"파일에 대한 보안은 누구도 장담할 수 
    없을 것이다.


    UseCanonicalName On

     

    TypesConfig conf/mime.types

    웹서버의 mime type을 지정한 파일을 지정한다. mime.types파일은 서버에 
    의해 리턴될 수 있는 파일명과 mime형식을 기술해 놓은 파일이다.

    DefaultType text/plain

    mime.types 파일에 정의 되어있지 않은 파일형식에 대한 요청을 받았을 때 
    알 수 없는 문서타입에 대하여 사용할 기본적인 mime 타입을 정해둔다.


    HostnameLookups Off

      웹서버의 로그(access_log)를 지정하는 Format에서 "DNS Lookup"으로 
    지정하였을 때, domain으로 남길 것인가, IP Address로 남길 것인가를 
    지정한다. Default로 Off는 IP Address로 남기는 것이며, Domain으로 변경할 
    필요가 없으므로 on으로 설정한 것보다는 속도가 조금빠르다.on으로 하게 
    되면 IP address를 IP Domain으로 변환해야 하므로 속도가 조금 느릴 수 
    있다.

    ErrorLog logs/error_log

      아파치 웹서버의 에러로그 기록파일을 지정한다.  참고할 사항은 맨 
    마지막에 설정하는 <VirtualHost>부분에서 각서버에 대한 에러파일을 
    지정해 두지 않으면 그에 대한 에러로그도 여기에 기록되며, 지정해 두게 
    되면 그에 해당하는 로그는 이 파일에 기록되지 않는다.

    LogLevel warn

      바로위에서 설정한 에러로그 파일에 얼마나 자세하게 적을 것인지를 
    결정한다. 다음에 해당하는 순서대로 중요도가 정해진다. " debug → info → 
    notice → warn → error → crit → alert! → emerg "

    LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" 
    \"%{User-Agent}i\"" combind
    LogFormat "%h %l %u %t \"%r\" %>s %b" common
    LogFormat "%{Referer}i -> %U" referer
    LogFormat "%{User-agent}i" agent

      바로 아래에서 사용할 CustomLog에서 사용할 몇가지 로그형식의 별명을 
    정한 곳이다.
    웹서버의 관리자나 서버관리자는 이 부분을 특히 유심히 봐둬야 한다. 
    웹서버의 로그를 어떤 식으로 남길 것인가를 결정하는 Format을 지정하는 
    곳이다. 원하는 정보를 지정해서 볼 수 있으므로, 관리자에게 필요한 
    Format으로 설정해야 하며, 또한 접속통계를 내기에 적당한 Format으로 
    설정해 둬야 한다.

    CustomLog logs/access_log common

      위에서 정한 로그형식(여기선 common)대로 로그를 남기게 된다. 
    맨마지막에서 지정하는 <VirtualHost>부분에서도 아파치 1.3.9버전 부터는 
    CustomLog를 가상호스트별로 지정할수 있도록 CustomLog를 제공한다. 
    <VirtualHost>에서 CustomLog를 지정하지 않으면 여기서 지정한 형식대로 
    로그를 남기게 되며 <VirtualHost>부분에서 CustomLog를 지정했을 
    경우에는 여기서 지정한 로그형식은 무시된다.

    #CustomLog logs/referer_log referer
    #CustomLog logs/agent_log agent
    #CustomLog logs/access_log combined

      위에서 지정한 4가지의 로그형식(combind, common, referer, agent)중에서 
    원하는 부분의 #(주석행)을 제거하면 지정된다.

    ServerSignature On

      서버가 생성하는 문서(error documents, FTP directory listings, 
    mod_status and mod_info output etc., but not CGI generated documents)의 
    trailing footer line의 설정을 가능하게 한다.

    Alias /icons/ "/usr/local/apache/icons/"

      필요한 만큼의 디렉토리 별칭을 만들어 쓸 수 있다. 사용하는 형식은 
    다음과 같다. 
    Alias fakename(가상이름) realname(진짜이름)

    ScriptAlias /cgi-bin/ "/usr/local/apache/cgi-bin/"

      ScriptAlias는 서버스크립트를 포함한다. ScriptAlias는 실제디렉토리 안에 
    들어있는 문서를 서버에 의해 응용프로그램으로 취급되어 실행되는 것을 
    제외하고는 근본적으로 Aliases와 같다.

     
    IndexOptions FancyIndexing

      IndexOPtions는 디렉토리목록을 표시할 때 사용할 옵션을 지정한다. 
    Standard는 표준적인 디렉토리를 나타내며, FancyIndexing은 좀더 예쁜 
    디렉토리목록을 표시해 준다.

     

      아래에서 지정하는 AddIcon으로 시작하는 설정은 바로위에서 설정한 
    디렉토리인덱싱 옵션을 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

      AddDescription은 서버가 생성한 인덱스의 파일 뒤에 간단한 설명을 
    표시할 때 사용한다. 이 설정은 IndexOptions가 FancyIndexing으로 
    설정되었을때만 표시되며, 설정형식은 다음과 같다.
    형식 : AddDescription "표시할 설명" 파일확장자

    ReadmeName README

      ReadmeName은 디렉토리목록표시 뒤에 붙여서 보여줄 README파일의 
    이름을 지정한다.(일종의 꼬릿말)

    HeaderName HEADER

      HeaderName은 디렉토리목록표시 앞에 붙여질 파일의 이름을 지정한다. 
    (일종의 머릿말)

    IndexIgnore .??* *~ *# HEADER* README* RCS CVS *,v *,t

      디렉토리목록을 인덱싱할 때 제외할 파일명을 지정한다. 즉 디렉토리 
    목록에 포함하지 않을 파일을 지정한다. 쉘스타일의 와일드카드(*, ?)가 
    허용된다.

    AddEncoding x-compress Z
    AddEncoding x-gzip gz tgz

      AddEncoding은 특정브라우즈(Mosaic/X 2.1+)에서 받고있는 중에 정보에 
    대한 압축해제를 할 수 있도록한다. 단 모든 웹브라우즈에서 이 기능을 
    제공하는 것은 아니다.

    AddLanguage en .en
    AddLanguage fr .fr
    AddLanguage de .de
    AddLanguage da .da
    AddLanguage el .el
    AddLanguage it .it

      AddLanguage는 문서의 언어를 지정하게 한다.

    LanguagePriority en fr de

      언어의 우선순위를 내림차순으로 지정한다.

    AddType application/x-httpd-php3 .php3
    AddType application/x-httpd-php3-source .phps
    AddType application/x-tar .tgz

      AddType은 mime.types의 실제 편집없이도 mime을 설정할 수 있다.

    AddHandler cgi-script .cgi

      AddHandler는 파일확장자를 처리기(Handler)에 매핑(연결)시켜주게 된다.

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

      SSI(Server Side Include)문서를 인식하게 하기위한 설정이다. SSI코드가 
    들어가 있는 문서는 확장자가 *.shtml이다. 시스템의 날짜와 카운터등 
    CGI프로그램을 하지 않아도 HTML문서에서 단 몇줄로 CGI의 효과를 낼 수 
    있는 SSI기능을 인식하게끔 하는 설정이다. "7장. 아파치와 SSI"편에서 자세히 
    설명되어 있다.


    #Format: Action media/type /cgi-script/location
    #Format: Action handler-name /cgi-script/location

      Action은 매칭되는 파일이 호출될때마다 스크립트를 실행시킬 수 있도록 
    미디어 타입을 정의한다.

    MetaDir .web

      MetaDir은 아파치가 찾을 메타정보파일들의 디렉토리이름을 지정한다. 이 
    파일들은 문서를 전송할 때 포함되는 HTTP 헤더정보가 포함되어 있다.

    MetaSuffix .meta

      MetaSuffix는 메타정보를 포함하고 있는 접미어의 이름을 지정한다.


    에러발생시 응답을 정의할 수 있는 방법을 3가지 나타내고 있다.

        1) 일반적인 텍스트

    ErrorDocument 500 "The server made a boo boo.

        2) 지역적인 방향전환

    ErrorDocument 404 /missing.html
    ErrorDocument 404 /cgi-bin/missing_handler.pl

        3) 외부 방향전환

    ErrorDocument 402 
    http://some.other_server.com/subscription_info.html


      다음의 BrowserMatch는 keepalives기능을 쓰지못하게 하며 HTTP 
    헤드방식을 설정한다.

    BrowserMatch "Mozilla/2" nokeepalive

      이 설정은 Netscape 2.x 또는 이를 따르는 브라우즈에 대하여 KeepAlive 
    기능을 쓰지 못하게한다.

    BrowserMatch "MSIE 4\.0b2;" nokeepalive downgrade-1.0 
    force-response-1.0

      이 설정은 잘못구현된 HTTP/1.1과 301또는 302반응에 대하여 
    KeepAlive를 적절히 제공하지 못하는 마이크로소프트 인터넷익스플로러 
    4.0b2d에 관한 것이다.

    BrowserMatch "RealPlayer 4\.0" force-response-1.0
    BrowserMatch "Java/1\.0" force-response-1.0
    BrowserMatch "JDK/1\.0" force-response-1.0

      위의 3가지 설정은 기본적인 1.1반응도 처리하지 못하며 HTTP/1.0 스팩을 
    제한하고 있는 브라우즈에 대하여 HTTP/1.1반응을 하지 못하게 한 것이다.

    <Location /server-status>
        SetHandler server-status
        Order deny,allow
        Deny from all
        Allow from www.manualand.co.kr
    </Location>

      서버의 상태를 점검할 수 있게하는 설정이다. 이는 
    "http://www.manualand.co.kr/server-status"와 같은 형식으로 서버의 상태를 
    점검할 수 있다. "6장. 아파치서버 모니터링"편에서 자세히 설명되어 있다. 
    여기서 지정한 "SetHandler server-status"의 설정으로 인해 서버 
    모니터링을 할 수 있는 것이다.

    <Location /server-info>
        SetHandler server-info
        Order deny,allow
        Deny from all
        Allow from www.manualand.co.kr
    </Location>

      이설정을 위해서는 mod_info.c가 적재되어야 하며, 이는 
    "http://www.manualand.co.kr/server-info"와 같은 방식으로 서버의 정보를 
    볼 수 있다. 위에서 설정한 server-status와 함께 실행중인 웹서버의 
    상태점검을 위한 것이다.

    <Location /cgi-bin/phf*>
        Deny from all
        ErrorDocument 403 http://phf.apache.org/phf_abuse_log.cgi
    </Location>

      아파치 1.1이전 버전의 오래된 버그에 대한 악용이 있을시에는 지정한곳 
    (http://phf.apache.org/phf_abuse_log.cgi) 으로 방향을 전환시킨다.


    <IfModule mod_proxy.c>
    ProxyRequests On

      아파치 웹서버를 Proxy서버로 사용할 때 on을 해줘야 한다. 즉   
    프락시서버 지시자로서 프락시서버를 on 시킨다.

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

    ProxyVia On

      HTTP/1.1 "Via:"헤드처리를 활성화시킬 것인지 비활성화 시킬것인지를 
    지정한다. Off, On, Full, Block중 하나가 올 수 있으며 Full은 서버버전을 
    포함하며, Block은 나가는 모든 것에 대해 Via:헤더를 제거한다.

    CacheRoot "/usr/local/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: 가상호스트 설정

      여러분의 시스템에서 여러개의 도메인이나 호스트네임을 설정하여 
    관리하고자 한다면 <VirtualHost>부분을 설정해 줘야 한다. 가상호스트에 
    대한 정보는 http://www.apache.org/docs/vhosts/를 참조해 보면 좀더 
    자세한 정보를 얻을 수 있다.  '-S'옵션을 사용함으로써 가상호스트의 설정에 
    대한 점검을 할 수 있다.  name-based 가상호스트를 사용하길 원한다면 
    적어도 한 개이상의 IP Address를 정의할 필요가 있다. "4-2절의 내용"과 
    "10장.웹호스팅 서비스를 위한 가상호스트"편에서 자세히 설명되어 있다.

    NameVirtualHost 12.34.56.78:80
    NameVirtualHost 12.34.56.78

    <VirtualHost www.manualand.co.kr>
        ServerAdmin webmaster@manualand.co.kr
        DocumentRoot /home/sspark/public_html
        ServerName www.manualand.co.kr
        ErrorLog /home/sspark/public_html/aw/error_log
        CustomLog /home/sspark/public_html/aw/access_log common
    </VirtualHost>

            ServerAdmin은 해당서버의 관리자 전자우편이며, 
            DocumemtRoot는 해당서버의 홈디렉토리이며, 
            ServerName은 해당서버의 도메인이며, 
            ErrorLog는 해당서버의 에러파일 위치이며
            CustomLog는 로그파일위치와 포맷을 지정한 것이다.

    <VirtualHost _default_:*>
    </VirtualHost>

      Default 가상호스트 설정으로 위에서 설정되지 않은 다른 모든 호스트에 
    대해서 응답을 하고자 할 경우설정해 준다

    posted by 좋은느낌/원철
    prev 1 2 next