커피닉스, 시스템 엔지니어의 쉼터 커피향이 나는 *NIX
커피닉스
시스템/네트웍/보안을 다루는 곳
* HanIRC의 #coffeenix 방
[ 장비 및 회선 후원 ]
HOME > 네트워크(network) > 웹 서버(web, httpd, apache) 도움말
검색 : 사이트 WHOIS 웹서버 종류

WebDAV (7, 글 1, 자료 4)
웹서버 튜닝 (5, 글 4, 자료 2)
웹서버 사용 통계 자료 (2, 자료 1)
Apache SSL / mod_ssl (4, 글 3, 자료 2)

  Apache 2.0.48 + tomcat5.0.14 + PHP 5.0.0 + SSL + PERL for sun& linux 작성일 : 2003/12/02 09:43
 
  • 글쓴이 : 신현진
  • 조회수 : 8412
          [ 이전화면 / 수정 ]   비밀번호 :     인쇄용 화면
     
    Apache 2.0.48 Tomcat 5.0.14 Alpha mod_jk2 2.0.2 mod_perl2 PHP 5.0.0 Beta2 For Solaris
    이 자료는 KLTP에 제가 올린 자료에 SSL 설정 부분을 추가한 업데이트된 문서입니다. 많은 도움이 되시길 바랍니다.

    설치전 준비물
    1. J2SE
    2. Apache
    3. Tomcat
    4. Tomcat-Connector(mod_jk2)
    5. mod_perl
    6. openssl
    7. PHP
    8. zlib
    9. /dev/random
    10. libxml

    이외에도 GNUtar, libtool, autoconf, automake 등이 없다면 다운로드 받으시기 바랍니다.

    설치에 필요한 파일 다운로드 사이트

    J2SE
    1.4.2-b28
    j2sdk-1_4_2-nb-3_5_1-bin-sol-sparc.bin http://java.sun.com/j2se/
    apache
    2.0.48
    httpd-2.0.48.tar.gz http://httpd.apache.org/
    tomcat
    5.0.14 Alpha
    jakarta-tomcat-5.0.14.tar.gz http://jakarta.apache.org/site/binindex.cgi
    tomcat-connectors
    jk2-2.0.2
    (mod_jk2 2.0.2)
    jakarta-tomcat-connectors-jk2.0.2-solaris8-apache2.0.43.tar.gz http://jakarta.apache.org/builds/
    mod_perl
    1.99_11
    mod_perl-2.0-current.tar.gz http://perl.apache.org/
    openssl
    0.9.7c
    openssl-0.9.7c.tar.gz http://www.openssl.org/
    PHP
    5.0.0. Beta2
    php-5.0.0b2.tar.gz http://www.php.net/
    zlib
    1.1.4
    zlib-1.1.4.tar.gz http://www.gzip.org/zlib/
    /dev/random
    0.7
    Solaris 8
    ANDIrand-0.7-5.8-sparc-1.pkg http://www.cosy.sbg.ac.at/~andi/SUNrand/
    libxml
    2.6.1
    libxml2-2.6.1.tar.gz http://xmlsoft.org/

    위 사이트의 주소가 틀릴수도 있습니다. 대부분은 http://sunfreeware.com/ 에 가시면 다운로드 받을 수 있습니다. 참고하세요.

    설치 중 에러가 나는 경우는 필요한 프로그램이 없는 경우 또는 버전이 맞지 않아서 일수도 있으며, 환경변수가 잡혀 있지 않거나, 퍼미션 설정이 잘 못 되었거나, 오타일 가능성을 살펴 봅니다. 에러 메시지를 잘 보시고 대처하시기 바랍니다.

    J2SE Install

    telnet console에서 인스톨하고자 하시는 분은 -console 혹은 -silent 옵션을 이용하세요.

    # chmod 755 j2sdk-1_4_2-nb-3_5_1-bin-sol-sparc.bin
    # ./j2sdk-1_4_2-nb-3_5_1-bin-sol-sparc.bin

    저는 인스톨을 /usr/local/java 디렉토리에 하고, 패스를 잡아주었습니다.
    설치후 버전을 확인하세요.

    # cd /usr/local/java/bin
    #./java -version


    openssl 설치

    # cd /tmp
    # tar zxvf openssl-0.9.7c.tar.gz
    # cd openssl-0.9.7c/
    # ./config --prefix=/www/openssl
    # make
    # make install


    zlib 설치

    # cd /tmp/
    # tar zxvf zlib-1.1.4.tar.gz
    # cd zlib-1.1.4/
    # ./configure --prefix=/www/zlib
    # make
    # mkdir -p "/www/zlib/include" "/www/zlib/lib"
    # make install


    /dev/random 설치

    # su -
    # umask 022
    # pkgadd -d ANDIrand-0.7-5.8-sparc-1.pkg


    apache 설치

    # cd /tmp # tar zxvf httpd-2.0.48.tar.gz
    # cd httpd-2.0.48/
    # ./configure --prefix=/www/httpd --with-mpm=prefork --enable-ssl?--with-ssl=/www/openssl --enable-deflate --with-z=/www/zlib --enable-dav --enable-dav-fs --enable-auth-digest --enable-info --enable-rewrite --enable-vhost-alias --enable-expires --enable-mime-magic
    # make
    # make install

    아파치의 conf/httpd.conf 파일 수정

    # cd /www/httpd/conf
    # vi ./httpd.confe Servername localhost:80 (여기 localhost는 자신의 도메인에 맞게 수정)
    User nobody 라인 밑에 한줄 추가
    -> Group nobody
    # Group #-1
    AddDefaultCharSet EUC-KR 로 수정

    아파치가 제대로 작동하는지 확인합니다.

    # cd /www/apache/bin
    # ./apachectl start
    #
    # telnet localhost 80
    Trying 127.0.0.1...
    Connected to localhost.
    Escape character is '^]'.
    HEAD / HTTP/1.0

    HTTP/1.1 200 OK
    Date: Thu, 13 Nov 2003 02:37:16 GMT
    Server: Apache/2.0.48 (Unix) mod_ssl/2.0.48 OpenSSL/0.9.7c DAV/2
    Accept-Ranges: bytes
    Vary: Accept-Encoding
    Connection: close
    Content-Type: text/html; charset=EUC-KR

    Connection closed by foreign host.
    #


    libxml 설치

    # cd /tmp/
    # tar zxvf libxml2-2.6.1.tar.gz
    # cd libxml2-2.6.1/
    # ./configure --prefix=/www/libxml
    # make
    # make install


    PHP 설치

    # cd /tmp/
    # tar zxvf php-5.0.0b2.tar.gz
    # cd php-5.0.0b2/

    주의) --without-gd : gd 라이브러리를 사용하지 않도록 하는 옵션.
    Solaris의 경우 gd 라이브러리가 설치되어 있지 않거나 설치되어 있다고 해도 자꾸 에러가 나서 저 옵션을 사용했습니다.
    LINUX에서는 사용하지 않아도 에러 없이 컴파일 할 수 있습니다

    # ./configure --prefix=/www/httpd/php --with-mysql=/usr/local/mysql \
    --with-apxs2=/www/httpd/bin/apxs --with-exec-dir=/www/httpd/php/bin \
    --enable-track-vars --with-config-file-path=/www/httpd/conf \
    --with-libxml-dir=/www/libxml --with-mod-charset --with-language=korean \
    --with-charset=euc_kr --enable-versioning --without-gd2

    # make
    # make install
    # cp php.ini-dist /www/httpd/php/lib/php.ini


    /www/httpd/conf/httpd.conf 를 vi로 열어 아래 부분을 추가합니다.

    LoadModule php5_module modules/libphp5.so
    AddType application/x-httpd-php .php
    AddType application/x-httpd-php-source .phps

    아파치를 실행시켜 PHP와 연동이 되었는지 확인합니다

    # cd /www/apache/bin
    # ./apachectl restart
    #
    # telnet localhost 80
    Trying 127.0.0.1...
    Connected to localhost.
    Escape character is '^]'.
    HEAD / HTTP/1.0

    HTTP/1.1 200 OK
    Date: Thu, 13 Nov 2003 03:37:45 GMT
    Server: Apache/2.0.48 (Unix) mod_ssl/2.0.48 OpenSSL/0.9.7c DAV/2 PHP/5.0.0b2
    Accept-Ranges: bytes
    Vary: Accept-Encoding
    Connection: close
    Content-Type: text/html; charset=EUC-KR

    Connection closed by foreign host.
    #


    mod_jk2 연동(복사)

    이 부분에서 저는 소스를 컴파일 하지 않고 이미 솔라리스용으로 만들어진 so 파일을 이용했습니다
    아파치 2.0.43용으로 만들어 졌지만 이번 설치에 사용한 2.0.47과도 호환이 됩니다.
    소스컴파일보다 훨씬 쉽게 아파치-톰캣 연동 완료

    # cd /tmp/
    # tar zxvf jakarta-tomcat-connectors-jk2.0.2-solaris8-apache2.0.43.tar.gz
    # cd jakarta-tomcat-connectors-jk2.0.2-solaris8-apache2.0.43/
    # cp mod_jk2-2.0.43.so /www/httpd/modules/


    tomcat 설치

    # cd /www
    # tar zxvf jakarta-tomcat-5.0.7.tar.gz
    # mv jakarta-tomcat-5.0.7/ tomcat/


    tomcat 환경설정

    1./www/tomcat/conf/server.xml 을 아래와 같이 설정

    <Server port="8005" shutdown="SHUTDOWN" debug="0">
      <Listener className="org.apache.catalina.mbeans.ServerLifecycleListener" debug="0"/>
      <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" debug="0"/>

      <GlobalNamingResources>
        <Environment name="simpleValue" type="java.lang.Integer" value="30"/>
        <Resource name="UserDatabase" auth="Container" type="org.apache.catalina.UserDatabase"
          description="User database that can be updated and saved">
        </Resource>
        <ResourceParams name="UserDatabase">
          <parameter>
            <name>factory</name>
            <value>org.apache.catalina.users.MemoryUserDatabaseFactory</value>
          </parameter>
          <parameter>
            <name>pathname</name>
            <value>conf/tomcat-users.xml</value>
          </parameter>
        </ResourceParams>
      </GlobalNamingResources>

      <Service name="Catalina">
        <Connector port="8009" enableLookups="false" redirectPort="8443" debug="0" protocol="AJP/1.3" />

        <Engine name="Catalina" defaultHost="localhost" debug="0">
          <Logger className="org.apache.catalina.logger.FileLogger" prefix="catalina_log." suffix=".txt"
            timestamp="true"/>
          <Realm className="org.apache.catalina.realm.UserDatabaseRealm" debug="0" resourceName="UserDatabase"/>

        <Host name="localhost" debug="0" appBase="webapps" unpackWARs="true" autoDeploy="true">
          <Logger className="org.apache.catalina.logger.FileLogger"
            directory="logs" prefix="localhost_log." suffix=".txt" timestamp="true"/>
        </Host>
        </Engine>
      </Service>
    </Server>


    2.conf/jk2.properties 에 한줄만 있으면 됩니다.

    # cat /www/tomcat/conf/jk2.properties
    channelSocket.port=8009


    3./www/httpd/conf/workers2.properties 파일이 없으므로 아래를 복사하여 만듭니다

    # cat /www/httpd/conf/workers2.properties
    [channel.socket:localhost:8009]
    info=Ajp13 forwarding over socket
    tomcatId=localhost:8009
    [uri:/tomcat-docs/*]
    [uri:/jsp-examples/*]
    [uri:/servlets-examples/*]
    [shm:]
    disabled=1


    4./www/httpd/conf/httpd.conf 파일에 다음 한줄을 추가합니다
    mod_jk2 를 Load 하도록...(물론 mod_jk2-2.0.43.so 파일을 mod_jk2.so 로 이름을 바꾸어 사용해도 된다.)

    LoadModule jk2_module modules/mod_jk2.0.43.so


    5. 디렉토리 퍼미션을 적절하게 조정해 준다.이외에 다른 디렉토리 퍼미션도 조정할 필요가 있으면 한다.

    # cd /www/tomcat/
    # chown -R tomcat:user logs/ work/


    tomcat 과 아파치를 실행해서 연동이 되었는지 확인해 봅니다.

    # su - tomcat
    # cd /www/tomcat/bin
    # ./catalina.sh start
    # su -
    # cd /www/apache/bin
    # ./apachectl start

    # telnet localhost 80
    Trying 127.0.0.1...
    Connected to localhost.
    Escape character is '^]'.
    HEAD / HTTP/1.0

    HTTP/1.1 200 OK
    Date: Thu, 13 Nov 2003 02:43:29 GMT
    Server: Apache/2.0.48 (Unix) mod_ssl/2.0.48 OpenSSL/0.9.7c DAV/2 PHP/5.0.0b2 mod_jk2/2.0.2
    Accept-Ranges: bytes
    Vary: Accept-Encoding
    Connection: close
    Content-Type: text/html; charset=EUC-KR

    Connection closed by foreign host.
    #

    적절히 연동이 되었는지 아래 주소로 확인해 봅니다
    doc :
    http://localhost/tomcat-docs/

    JSP :
    http://localhost/jsp-examples/

    Servlet :
    http://localhost/servlets-examples/

    서비스를 멈춥니다

    # su -
    # cd /www/apache/bin
    # ./apachectl stop
    # su - tomcat
    # cd /www/tomcat/bin
    # ./catalina.sh stop


    mod_perl 설치

    # cd /tmp/
    # tar zxvf mod_perl-2.0-current.tar.gz
    # cd mod_perl-1.99_09/
    # perl Makefile.PL MP_AP_PREFIX=/www/httpd MP_INST_APACHE2=1
    # make
    # make install

    conf/httpd.conf 를 수정하여 아파치 시작시 모듈이 올라오도록 수정합니다

    LoadModule perl_module modules/mod_perl.so

    아파치를 실행시켜 mod_perl 과 Perl 버전이 뜨는지 확인합니다

    # cd /www/apache/bin
    # ./apachectl restart
    #
    # telnet localhost 80
    Trying 127.0.0.1...
    Connected to localhost.
    Escape character is '^]'.
    HEAD / HTTP/1.0

    HTTP/1.1 200 OK
    Date: Thu, 13 Nov 2003 02:45:52 GMT
    Server: Apache/2.0.48 (Unix) mod_perl/1.99_09 Perl/v5.8.0 mod_ssl/2.0.48 OpenSSL/0.9.7c DAV/2 PHP/5.0.0b2 mod_jk2/2.0.2
    Accept-Ranges: bytes
    Vary: Accept-Encoding
    Connection: close
    Content-Type: text/html; charset=EUC-KR

    Connection closed by foreign host.
    #


    SSL 설치 및 가동

    # cd /www/openssl/bin
    Random State생성
    # openssl sha1 * > rand.dat or
    cat file1 file2 file3 > rand.dat or
    생성하지 않아도 됨

    개인키 생성.

    # openssl genrsa -rand rand.dat -des 1024 > key.pem
    키를 생성하기위해서 rand.dat를 난수생성을 위해 로드하고, DES로 암호화하여 1024bit 의 RSA 알고리즘을 사용하여 생성된 결과값을 파일 key.pem에 출력합니다.

    # openssl genrsa -rand rand.dat -des3 1024 > key.pem
    ( triple DES로 개인키를 암호화하길 원할 경우)
    주의:passphase를 기억해야 합니다.Apache-SSL서버 시작시 passphase가 반드시 필요하기 때문입니다.


    CSR 생성

    #>openssl req -new -key key.pem -out csr.pem
    인증서버에 보낼 파일을 생성했다.

    위에서 생성한 전자서명키와 다음에 입력할 DN(distinguish name) 정보를 가지고 인증요청정보(CSR.PEM)을 생성합니다
    1. C (country : 국가) 에 해당하는 값을 입력합니다.
    (예) KR : Korea (mandatory)
    2. ST (state : 지방) 에 해당하는 값을 입력합니다
    (예) New South Wales = NSW
    3. L (locality : ) 에 해당하는 값 (city, town 등) 을 입력합니다.
    4. DN 에 해당하는 O(organization) 의 이름을 기입합니다. 이 NAME은 도메인 NAME의 일부로 사용하게 됩니다..
    예) KICA : Korea Information Certificate Authority (mandatory)
    5. DN에 해당하는 회사이름 OU(organization unit)을 입력합니다.
    (예) KR, Dacom 등
    6. Web Server의 FULL 도메인 name 또는 IP를 입력합니다.. 이것은 당신이 차후 사용하게 될 web site 의 https URL로 사용할 수 있도록 합니다.
    (예) www. Bookstore.com or 128.134.254.166
    7.남은 attribute 부분은 생략해도 됩니다.
    8.위 과정을 거치면 다음과 같은 csr.pem 형식의 web server 인증요청 정보가 나오게 됩니다.

    CSR 보기

    # cat csr.pem

    -----BEGIN CERTIFICATE REQUEST-----
    MIIB3zCCAUgCAQAwgZ4xCzAJBgNVBAYTAktSMQ4wDAYDVQQIEwVTZW91bDEfMB0G
    A1UEBxMWam9vbmdyaW0tZG9uZyxjaHVuZy1ndTENMAsGA1UEChMES0lDQTEUMBIG
    A1UECxMLbGljZW5zZWRXZWIxFzAVBgNVBAMTDnd3dy5zaWducmEuY29tMSAwHgYJ
    KoZIhvcNAQkBFhFraWNhQHNpZ25nYXRlLmNvbTCBnzANBgkqhkiG9w0BAQEFAAOB
    jQAwgYkCgYEAwV7RJqGC9M0OGEiCRsszrXNa2uu1tJ+oqtIbmG5lzyLcpYPV0JOb
    o6vQq27RP2EbEHoUNLL92oWNlKwo/kkUoR9r3TvjhZ221uFoGjBt/LSwn9ui3nY+
    Ntef90l24ltNpc7eHPNnvTdWLWWmkO9EImJ90soc0VTqwSORfxGd4KVqzH17U5yQ
    /m3W
    -----END CERTIFICATE REQUEST-----

    이 pem 형식의 인증요청정보(CSR)를 복사하여 웹서버 인증 발급요청에서 인증서 요청 정보란에cut & paste후 나머지 정보를 입력한 뒤 인증서 발급 요청을 하면 됩니다.
    http://www.crosscert.com 에서 테스트 인증서를 받을 수 있습니다

    인증서 설치

    1. SSL 인증서 설정( SSLCertificateFile )
    공인인증기관으로부터 cut&paste한 PEM 형식의 인증서를 웹서버에 파일로 저장한다. (인증서를 /www/httpd/conf 에 파일로 저장한 경우)

    #vi httpd.conf
    #Point SSLCertificateFile at a PEM encoded certificate.
    # If the certificate is encrypted, then you will be prompted for a pass phrase.
    # Note that a kill -1 will prompt again.
    # A test certificate can be generated with "make certificate".
    SSLCertificateFile /www/httpd/conf/cert.pem

    2. SSL 전자서명 생성키 설정( SSLCertificateKeyFile )
    # 개인키 생성시 생성했던 전저서명생성키를 설정하는 것으로 절대패스를 지정해주어야 하고 만약 암호화되어 있다면 웹서버 기동시 암호를 입력을 요구한다.

    #vi httpd.conf
    # If the key is not combined with the certificate, use this directive to
    # point at the key file. If this starts with a '/' it specifies an absolute
    # path, otherwise it is relative to the default certificate area. That is, it
    # means "/private/".
    SSLCertificateKeyFile /www/httpd/conf/key.pem

    SSL 설치 완료 & 웹서버 시작

    # cd /www/httpd/bin
    # ./apachectl start ssl

    Apache/2.0.48 mod_ssl/2.0.48 (Pass Phrase Dialog)
    Some of your private key files are encrypted for security reasons.
    In order to read them you have to provide us with the pass phrases.

    Server localhost:443 (RSA)
    Enter pass phrase: (password 입력)

    Ok: Pass Phrase Dialog successful.

    이 문서에 대한 저작권은 없습니다. 마음껏 활용하셔도 됩니다.
    하지만, 이 문서에 대한 책임은 지지 않습니다. 문의나 메일은 사양합니다.
    저처럼 1주일씩 삽질하시는 분들을 위해 만들어 보았습니다.
    참고로 이 자료는 http://www.parupunte.com/minaken/apache2/httpdtomcat507modjk2.html 사이트의 자료를 토대로 작성 했습니다.


    문서 작성일 : 2003년 11월 13일
      커피닉스 카페 최근 글
    [08/25] #gpt_question_subje
    [08/20] From what I've seen
    [08/14] сайт
    [06/16] [질문]SAN 스위치 브로드케이드 dcx8510-4 장비관련입니다.
    [04/22] Re: 영화속에 컴퓨터 이야기 ~스워드피쉬(2001)
    [10/20] Cross Compiler 깔
    [07/14] SSL АО
    [04/26] Re: 도스화면 원격조종 여부
    [04/25] 도스화면 원격조종 여부
    [10/30] Cshell에서 난수 설정
    [10/23] 공항철도주식회사 SE 구인 件
    [01/26] Re: wget으로 다른서버에있는 디렉토리를 가져오려고합니다.
    [01/25] wget으로 다른서버에있는 디렉토리를 가져오려고합니다.
    [01/11] 특정 안드로이드 WebView 버전에서 SSL 문제 (WebView 버그)
    [08/01] DNS forwarder (전달자) 서버를 통해서 쿼리하면 역방향을 받아오질 못합니다.
      New!   최근에 등록한 페이지
      KiCad EDA Suite project (Free/Libre/Open-Source EDA Suite) (CAD)
      오픈캐스케이드 캐드 (OpenCASCADE CAD)
      QCad for Windows --- GNU GPL (Free Software)
      The Hello World Collection
      IPMI를 활용한 리눅스 서버관리
      DNS 설정 검사
      nagiosgraph 설치 방법
      Slony-I 설치 방법 (postgresql replication tool)
      Qmail기반의 Anti spam 시스템 구축하기
      clusterssh

    [ 함께하는 사이트 ]




    운영진 : 좋은진호(truefeel), 야수(yasu), 범냉이, sCag
    2003년 8월 4일~