웹마스터 팁

아직 마니 허접하고 모자르지만
여기엔 소스 설치하는 법은 잘 못찾겠네요.
나름대로 삽질한 삽질기를 한번 올려봅니다.

첨부 파일은 제 홈에 설치 이야기 게시판에서 받아가세요
질문은 홈의 질답 이야기 게시판에서 해주세요.
메일로 질문은 받지 않습니다.
비츠로 홈 - http://vitro.pe.kr

지금까지 잘 설치를 하였다면 이제는 자신의 환경에 맞게 설정파일을
수정할 일이 남았다.
자신의 환경에 잘 맞게 수정해서. jsp와 php, html, cgi 페이지가
모두 잘 나와야 제대로 설정된것이다.

아래는 나의 첨부파일의 httpd.conf파일 내용을 중심으로 수정해야 할 부분들이다.
jsp엔진쪽은 두개 엔진에 대한 설정 부분이 주석으로 처리되어
httpd.conf에 다 포함되어 있다 자신의 설정에 맞게 주석만 해제해서
쓰면 될것이다.
그외의 부분들도 수정을 해야할것이지만 자세한 아파치 설정법은 안 다루겠다.
(삽질할 부분도 남겨놔야져? ^^;)

◆◆◆◆◆ 아파치 httpd.conf 설정 시작 ◆◆◆◆◆

<IfModule mod_mime.c>
AddEncoding x-compress Z
AddEncoding x-gzip gz tgz
AddType application/x-tar .tgz

AddType application/x-httpd-php .php
AddType application/x-httpd-php .php3
AddType application/x-httpd-php-source .phps
위의 3라인은 .php와 .php3 phps라는 파일 확장자를 사용하기 위해
파일의 타입을 지정해주는것이다.

AddHandler cgi-script .cgi .pl
펄과 cgi를 사용하기 위해 파일 타입 지정

아래는 한글 로케일 지정을 하기 위해 선언하는것인데
아래 부분을 안해도 한글이 잘 나올수도 있으나
혹시라도 html이 깨진다면 아래 부분을 추가해서 한글 로케일 설정해라.
순서도 영향을 미치니.. 주의하기 바란다. 나는 한글을 젤 앞으로 설정했다.
AddCharset ISO-2022-Kr .iso-kr
AddLanguage Kr .kr
AddLanguage en .en
<IfModule mod_negotiation.c>
LanguagePriority kr en da nl et fr de el it ja pl pt pt-br ltz ca es sv
</IfModule>

기본으로 영어로 캐리터 셋이 지정되어있으므로 이것을 해제.
AddDefaultCharset off
</IfModule>

HostnameLookups Off
이부분을 on으로 해버리면... 아파치 속도가 끝내주게 느려진다.
이부분은 클라이언트의 호스트 이름을 룩업해서 체크하고 접속한다는건데...
오프해라... 아파치 느리게 쓰기 싫다면...

ErrorDocument 404 http://www.vitro.pe.kr/error.htm
ErrorDocument 403 "Access Forbidden -- Go away.
위의 에러로 404(페이지 못찾는다) 메시지를 봣을것이다.
그것을 자신이 작성한 html페이지로 보여주고 싶다면
그 페이지의 위치를 위처럼 지정해준다.

<Directory "/home/httpd/vitro.pe.krsite/admiin">
    Options Indexes Multiviews
    AllowOverride AuthConfig
    AuthName "제한된 페이지입니다."
    AuthType Basic
    AuthDBUserFile /etc/httpd/dbmpasswd
    require user vitro
</Directory>
앞에서 dbpasswd를 사용해서 유저를 하나 추가한것을 기억할것이다.
이부분은 자신의 사이트에서 일반 사용자들에게는 보여주지
않고 숨길 사이트를 지정하는것이다. 즉 보안 페이지 설정이다.
주소에서 이 페이지아래에 있는 것으로 접속하게 되면.
require user부분에 정의된 유저명과 패스워드를 질의하게 되어있다.
(주로 성인사이트에서 많이 볼 수 잇다. ^^;)

만약 이 유저의 패스워드를 변경시는
dbmmanage /etc/httpd/dbmpasswd update vitro

###################################################
###  이제 jsp와 가상호스트 지원 부분인데.           ###
###  톰캣을 쓰든 레진을 쓰던 두개의 설정중에서       ###
###  자신이 사용할 엔진에 맞게 하나만 설정해줘라.    ###
###################################################

======= 톰캣과 버추얼 호스팅 지원 시작 ===========

아래는 톰캣과 아파치의 연동 모듈을 지정한 것이다.
설정 파일에서 아래부분처럼 첨에는 주석되어있다. 모듈 설정의 주석을 제거한다.
#<IfModule mod_jk.c>
#    JkWorkersFile  /usr/tomcat/conf/workers.properies
#    JkLogFile   /usr/tomcat/logs/jk.log
#    JkLogLevel error
#</IfModule>

버추얼 호스팅 설정시 아래의 0.0.0.0을 자신의 서버 아피 주소로 수정해라.
첨부파일의 httpd.conf파일의 모든 아피 주소를 0.0.0.0으로 햇으니
모두 수정하는것을 잊지 마라.
<VirtualHost 0.0.0.0:80>
ServerAdmin vitro@vitro.pe.kr
ServerName jsp.vitro.pe.kr
DocumentRoot "/home/httpd/jsp"
ServerAlias portal.vitro.pe.kr
위의 서버 얼라이어스부분 말그대로 웹 서버명이 한개가 아니라
여러개일 경우 주욱 선언해주면 된다.

JkMount /*.jsp ajp13
JkMount /webapps/* ajp13  
jkMount /ROOT/* ajp13
ErrorLog /var/log/httpd/error_jsp_log
CustomLog /var/log/httpd/access_jsp_log combined
</VirtualHost>

jkmount 를 각 가상사이트에서 각각설정하니까 아주 잘되네요.
/home/httpd/jsp 디렉토리아래에는 ROOT <-- 톰캣 예제 파일을 복사해서 사용했구요.
/home/hottpd/jsp/webapps 간단한 문법의 jsp 파일들을 사용해 테스트 했슴다.

==========  톰캣과 버추얼 호스팅 지원 끝  ==============


==========  레진과 버추얼 호스팅 지원 시작 ==============

아래는 레진과 아파치의 연동 모듈을 지정한 것이다.
설정 파일에서 아래부분처럼 첨에는 주석되어있다. 모듈 설정의 주석을 제거한다.
#<IfModule mod_caucho.c>
#CauchoConfigFile /usr/resin/conf/resin.conf
#<Location /caucho-status>
#SetHandler caucho-status
#</Location>
#</ifModule>

그외에는 기본적인 다른 아파치 설정을 건드릴 필요없고.
resin.conf파일을 설정하면 된다.

============ 레진과 버추얼 호스팅 지원 끝 ===================


----------- nimda와 codered 바이러스 관련 로그 필터링 설정 ------------

혹시나 해서 덧붙이는데 지금 이 아래 부분은 내 첨부파일에는 없는 부분인데.
혹시라도 자신의 아파치 데몬이 이유없이 지나치게 많이 떠있다거나.
갑작스래 느려졌다면 한번쯤 코드레드나 님다 바이러스의 공격을
받는지 의심해봐야 한다. 첨에는 설정 하지 말고 나중에 공격받음 설정하도록 하자.

바이러스 공격 여부 확인은
cd /var/log/httpd
cat access_log | grep -e "c+dir|cmd.exe|root.exe|Admin.dll"
해서 위의 문구가 포함된것이 로그에 남아있다면 바이러스 공격당하고 있는것이다.

이것을 방지하기 위해 iptable에서 필터링 하는 방법이 있으나
그렇게 커널도 컴파일해야 하고 머리가 아파서 ^^;
그냥 아래처럼 아파치에서 로그에 기록할때 필터링하는 방법을 사용하기로 했다.
참고로 이것이 바이러스 공격을 차단하는 완벽한 방법은 아니다.
그냥  이 방법이 아직은 내가 쓰는데 별 문제가 없으나 앞으로도 문제
없을지는 모르겠다. 각자 알아서 바이러스 강구법을 한번 생각해보길 바란다.

SetEnvIf Request_URI (default|root|cmd).(ida|exe) CodeRedNimda$
SetEnvIf Referer (default|root|cmd).(ida|exe)? CodeRedNimda$
CustomLog /var/log/httpd/access_odvd_log combined env=!CodeRedNimda$
이런 식으로 로그에 남기지 않게 하면 된다.
---------------------------------------------------------------------

◆◆◆◆◆ 아파치 httpd.conf 설정 끝 ◆◆◆◆◆




다음으로 jsp엔진쪽의 설정 파일을 설정한다.
두 엔진중 자신이 사용할 엔진쪽 설정법만 보면 되겠다.

----------- 레진 가상 호스트 resin.conf --------------
<!-- Virtual host  -->
<!--
  <host id='mail.vitro.pe.kr' app-dir='/home/httpd/htdocs'>
       ~~~~~~~~~~~~~~~  
       ~~~~~~~~~~~~~~~
       ~~~~~~~~~~~~~~~
  <host id='jsp.vitro.pe.kr' app-dir='/home/httpd/jsp'>
  
  위의 두개의 host id 부분만 자신의 서버와 doc루트로 맞춰주면
  레진 가상호스팅이 가능하다.
  자세한 레진 설정법은 레진 홈을 참조하기 바란다.

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

-------------- 톰캣 가상 호스트 server.xml 4.0.x버전 --------------
내 첨부파일중 4.0.x버전의 server.xml은 제대로 수정이 안 가해진 것이다.
사용자가 알아서 아래 부분을 참조해서 수정해서 사용하길 바란다.
4.1.x버전의 설정파일은 제대로 수정 되어 있으므로 조금만 자신이 수정해서 쓰면 된다.

<Connector className="org.apache.ajp.tomcat4.Ajp13Connector"
               port="8009" minProcessors="5" maxProcessors="75"
               acceptCount="10" debug="0"/>

위 처럼 4.0.x대 버전에선 Ajp13을 사용해서 아파치와 접속한다.

      <!--jsp.vitro.com-->
      <Host name="jsp.vitro.pe.kr" debug="0" appBase="/home/httpd/jsp" unpackWars="true">
        <Context path="/webapps" docBase="webapps" reloadable="true"/>
        <Context path="/ROOT" docBase="ROOT" reloadable="true"/>

        <Alias>portal.vitro.pe.kr</Alias>
        아까 아파치에서 설정한 서버 얼라이어스 부분과 동일하게 톰캣에서도
        서버 얼라이어스를 지원한다. 당근 아파치의 얼라이어스 부분과 동일하게 맞춘다.

     </Host>

    </Engine>


만약 다른 가상사이트를 더 추가하고 싶다면... 위의 <host>... </host>부분을
더 추가해주면 된다.
dso로 컴파일시 해줘야 할게 많지만 스태틱하게 할경우.
설정도 적어지구 참 간편한듯하다.

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


------------------ 톰캣 가상 호스트 server.xml 4.1.x버전 ----------

<Connector className="org.apache.coyote.tomcat4.CoyoteConnector"
               port="8009" minProcessors="5" maxProcessors="75"
               enableLookups="true" redirectPort="8443"
               acceptCount="10" debug="0" connectionTimeout="20000"
               useURIValidationHack="false"
               protocolHandlerClassName="org.apache.jk.server.JkCoyoteHandler"/>

위 처럼 4.1.x대 버전에선 ajp13이라구 컨넥터를 쓰는게 아니구.
coyote라구 하는거를 쓰는듯 한다. 확실한건 아니구.
그냥 주석 풀었다 주석햇다 함서... 그럴거라는 나의 예측.. ^^

컨넥터를 다른것으로 쓰는것을 제외하고는 가상호스트 설정은 똑같다.
첨부한 설정 파일을 열어서 host부분만 신경써서 보면 될것이다.

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

톰캣의 설정 파일중 workers.properies 파일은 버전에 상관없이 똑같이 쓰면 된다.
첨부파일의 내용을 수정할 필요없이 그냥 사용해라.

아파치 버추얼 호스팅이 잘 되었나 아래 명령으로 확인해본다.
httpd -S

아파치 문법 체크
httpd -t

php.ini 파일은 내 첨부파일을 열어서 보면
file_uploads = On           <-- 파일 업로드 가능하게 함
upload_max_filesize = 20M   <-- 파일 업로드 가능한 최고 용량
이 두부분만 잘 설정하면 다른것을 별로 건드릴 부분이 없을것이다.

이제 아파치와 레진 혹은 톰캣을 재시작하면 아파치가 잘 돌아갈것이다.
웹으로 접속해서 cgi와 php, jsp, html 페이지가 다 잘 보여지는가 확인해보자.