'Apache'에 해당되는 글 3건

  1. 2015.10.28 apache + tomcat 설정
  2. 2015.09.22 CentOS 6.5에 apache 2.4.16 설치
  3. 2015.06.25 HTTP Method 제한하기

apache + tomcat 설정

WebServer/Tomcat 2015.10.28 15:01

Windows에서 아파치 톰켓 연동을 해보는 중이다. 이런저런 이유 때문에 리눅스에서 해보고 싶지만 윈도우 환경만 가능하다. 어차피 테스트 환경을 구축하는 중이라 큰 문제는 없어보인다.


먼저 아파치는 아래 페이지를 따라하면 된다.

http://junemoon.tistory.com/150


아파치 설치가 끝났으니 이제 톰켓을 깔고 연동을 해보자. 난 톰켓 7으로 테스트 환경을 만들었다.


톰켓 다운로드

http://tomcat.apache.org/download-70.cgi


톰켓을 원하는 경로에 앞축을 풀면된 일딴 놔두자. 톰켓은 실행하면 기본 페이지가 있으므로 설정할 것이 없다. 이제 httpd와 연동해야하는데 컨넥터가 필요하다. 윈도우 컨넥터 파일을 다운로드 받자.


톰켓 컨넥터 다운로드

http://mirror.apache-kr.org/tomcat/tomcat-connectors/jk/binaries/windows/


압축파일 안에 mod_jk.so 파일이 있을 것이다. 이걸 아파치 폴더 안에 modules 이라는 폴더가 있는데 여기에 넣으면 된다. 넣었으면 아파치에서 설정을 해주어야 하는데 설정은 별도의 파일로 하고싶다. 나중에 복붙하기도 편하고 정리되있어야 이해하기도 쉬우니까...


httpd.conf 안에 Include conf/extra/httpd-default.conf 이 부분이 주석처리 되어있는데 주석을 풀어주자. 이 안에서 보안 관련 부분만 수정하려고 한다. ServerTokens 찾아서 수정한다.

ServerTokens Prod

## 추가: Trace 메소드 사용 금지

TraceEnable Off


ServerTokens는 웹 서버의 정보를 어디까지 알려주는지 설정할 수 있는데, 너무 많은 정보가 알려지면 해킹당하기도 그만큼 쉬워질태니 서버이름만 노출되도록 정의했다. 그리고 TraceEnable Off는 TRACE 메서드를 사용하지 못하게 하는 설정이다.


다음으로 Include conf/extra/httpd-vhosts.conf 의 주석을 해제한다. VirtualHost 설정을 사용하여 2개의 도메인을 이용해 톰켓과 아파치를 나눠서 설정해보려고 한다. test1, test2를 추가하고 test1에 톰켓을 연결할 것이다. 다음과 같이 설정해보았다.

#NameVirtualHost *:80 ## 2.4 이상은 이 설정이 필요없다.

Include conf/extra/httpd-vhosts-localhost1.conf

Include conf/extra/httpd-vhosts-localhost2.conf


설정은 아파치 2.4 이상부터 필요없다. 넣으면 httpd가 실행되지도 않는다. 2.4 도큐먼트에는 내용이 있던데.... 쩝.

각각 설정 내용은 다음과 같다.


httpd-vhosts-localhost1.conf

<VirtualHost *:80 >

    ServerAdmin 관리자 메일주소

    DocumentRoot "D:/dev/server/webContents/test1"

    ServerName test1.localhost.com

    Include conf/extra/security.conf


    <Directory "D:/dev/server/webContents/test1">

        Options FollowSymLinks

        AllowOverride None

        Require all granted

    </Directory>

<IfModule dir_module>

DirectoryIndex index.html

</IfModule>

    RewriteEngine On

    RewriteCond %{REQUEST_METHOD} (PUT|DELETE|TRACE|OPTIONS)

    RewriteRule (.*) - [F]


    <Location /jkmanager>

        jkmount jkstatus

        Order deny,allow

        Deny from all

        Allow from env=let_me_in

    </Location>


    JkMountFile D:/dev/server/httpd-2.4.17-win64-VC14/conf/extra/uriworkermap-test1.properties

</VirtualHost>


test1.localhost.com 이라는 도메인을 정의하고 여기에 아파치 설정을 연결했다. 2.4 부터는 Require all granted 옵션으로 바뀌었다. 이전에는 보통 [ Order allow,deny / Allow from all ] 함께 사용했었다.

Rewrite는 메서드사용을 제한하기 위해 사용했다. RewriteCond 뒷부분에 나열된 메서드는 404 오류가 나도록 정의했다. OPTIONS에서 사용가능한 메소드 목록이 나오는데 정의해주면 나오지 않을 것이다.


uriworkermap-test1.properties 파일도 마저 정의한다.


uriworkermap-test1.properties

/*=wlb


tomcat과 연동할 부분은 정의 하는 것이다. 모든 URI를 wlb라는 tomcat과 연동한다는 의미이다.


httpd-vhosts-localhost2.conf

<VirtualHost *:80 >

    ServerAdmin 관리자 메일주소

    DocumentRoot "D:/dev/server/webContents/test2"

    ServerName test2.localhost.com

    Include conf/extra/security.conf


    <Directory "D:/dev/server/webContents/test2">

        Options FollowSymLinks

        AllowOverride None

        Require all granted

    </Directory>

<IfModule dir_module>

DirectoryIndex index.html

</IfModule>

    RewriteEngine On

    RewriteCond %{REQUEST_METHOD} (PUT|DELETE|TRACE|OPTIONS)

    RewriteRule (.*) - [F]

</VirtualHost>


test2.localhost.com 이라는 도메인을 정의했다. test1.localhost.com, test2.localhost.com 각각 다른 페이지가 나올 것이다. test1.localhost.com, test2.localhost.com을 hosts파일에 다음과 같이 정의해서 테스트 가능하도록 하자.

127.0.0.1 test1.localhost.com

127.0.0.1 test2.localhost.com


이제 httpd.conf 안에 다음 설정을 추가한다.

# Apache tomcat connector

Include conf/extra/httpd-modjk.conf


conf 밑에 extra 밑에 httpd-modjk.conf 파일을 만들어 설정할 것이다. 이제 파일을 만들고 설정해보자.


httpd-modjk.conf

#

# HTTPD Web Server and Apache Tomcat(ajp) Connector

# the configuration of the server.

#

# Required modules: mod_jk (for the ajp handler),


# Load Module jk_module

<IfModule !mod_jk.c>

    LoadModule jk_module modules/mod_jk.so

</IfModule>


# jk_module Global configuration of the server

<IfModule mod_jk.c>

    JkWorkersFile conf/extra/workers.properties

    JkLogFile "|D:/dev/server/httpd-2.4.17-win64-VC14/bin/rotatelogs.exe D:/dev/server/httpd-2.4.17-win64-VC14/logs/mod-jk.log.%Y%m%d 86400"

    #JkLogLevel debug

    #JkLogLevel info

    JkLogLevel error

    JkLogStampFormat "[%Y %a %b %d %H:%M:%S]"

    JKRequestLogFormat "%w %R %V %T"

    JkOptions +ForwardKeySize +ForwardURICompatUnparsed -ForwardDirectories

</IfModule>


이제 workers.properties 파일을 정의해보자.


workers.properties

# HTTPD Web Server and Apache Tomcat(ajp) Connector

# the loadbalancer configuration of the Server

#

# Include workers.properties by conf/extra/httpd-modjk.conf

#

# Define loadbalancer 2 worker node using ajp13

worker.list=w01, w02, wlb

# admin Cluster Group 1 #############################################

#

# configuration template

worker.template.type=ajp13

worker.template.lbfactor=1

worker.template.socket_timeout=30

worker.template.socket_keepalive=true

worker.template.recovery_options=7

worker.template.ping_mode=A

worker.template.ping_timeout=10000

worker.template.connection_pool_size=25

worker.template.connection_pool_minsize=25

worker.template.connection_pool_timeout=60


worker.w01.reference=worker.template

worker.w01.port=8009

worker.w01.host=localhost


worker.w02.reference=worker.template

worker.w02.host=localhost

worker.w02.port=8009


worker.wlb.type=lb

worker.wlb.retries=2

worker.wlb.method=Session

worker.wlb.sticky_session=True

worker.wlb.balance_workers=w01,w02


로드발란싱을 위해 일딴 2개의 설정을 만들어두었다. 아직은 로드발란싱이 적용되지 않았다.


그리고 톰캣에서 conf 폴더의 server.xml 파일을 열어보자. Connector 태그 안에 port가 workers에서 정의한 포트가 같은지 확인하자. port가 같다면 이제 설정은 끝이다.


이제 httpd와 tomcat을 실행하고 잘 연동되는지 확인해보자.


test1.localhost.com


test2.localhost.com


좀 더 구체적인 설정도 필요해 보이나 여기까지하면 기본적인 것은 끝난 것같다. httpd 하나로 한 서버에서 여러 도메인을 운영할 수 있는 훌륭한 기능도 있다. 운영하다 보면 이렇게 사용할 경우가 종종 발생하는데, 유용하게 사용할 수 있겠다.



※ 참고

https://tomcat.apache.org/connectors-doc-archive/jk2/jk/aphowto.html

https://tomcat.apache.org/connectors-doc/reference/apache.html




'WebServer > Tomcat' 카테고리의 다른 글

Connection reset by peer: socket write error  (0) 2016.07.19
apache + tomcat 설정  (0) 2015.10.28
HTTP Method 제한하기  (0) 2015.06.26
CentOS6(x86_64)에서 Tomcat6 설치  (0) 2011.10.19
Linux 톰켓 설정  (0) 2011.08.03
Linux 톰켓 설치  (0) 2011.08.03
tags : Apache, tomcat
Trackback 0 : Comment 0

CentOS 6.5에 apache 2.4.16 설치

WebServer/apache 2015.09.22 15:42

1.나는 home 계정 밑에 만들고 관리하려고 한다. 일딴 계정을 생성하자. (관리자 아이디로 생성한다)

useradd apache

passwd apache


2. 이제 /home/apache/ 밑에 server라고 폴더를 만들자. 그리고 서버 디랙토리로 이동한다.

cd /home/apache/

mkdir server

cd /home/apache/server/


3. apache를 다운 받자.

http://httpd.apache.org/download.cgi#apache24 여기서 다운받아서 올리거나 wget으로 받자.

나는 wget으로 받겠다. 요소검사로 URL 확인 후에 받으면 된다.

wget http://apache.mirror.cdnetworks.com//httpd/httpd-2.4.16.tar.gz


4. 압축을 풀자.

tar -xvf httpd-2.4.16.tar.gz


5. 설치를 해보자. 나는 설치가 안된다.

cd httpd-2.4.16

./configure --prefix=/home/apache/server/apache-2.4.16

make

make install


6. apr 어쩌구 하면서 설치가 안된다. make가 안되므로 apr을 설치하는데 apr-util도 필요하다. 같이 설치하자.

http://apr.apache.org/download.cgi 여기서 마찬가지로 다운받아서 올리거나 wget으로 받자. 여기서도 wget을 사용한다.그런데 apr util도 설치하지 않으면 오류가 해결되지 않는다. 같이 받자.

wget http://apache.mirror.cdnetworks.com//apr/apr-1.5.2.tar.gz

wget http://apache.mirror.cdnetworks.com//apr/apr-util-1.5.4.tar.gz


7. 이제 둘다 설치해보자.

tar -xvf apr-1.5.2.tar.gz

cd apr-1.5.2

./configure

make;make install


tar -xvf apr-util-1.5.4.tar.gz

cd apr-util-1.5.4

./configure

make

make install


yum -y install pcre-devel​(이건 설치해야하는건지 잘 모르겠음. 일딴 실행함)


8. 다시 아파치 설치파일 경로로 이동해서 설치하자. 

/home/apache/server/apache-2.4.16 경로에 설치가 될 것이다.

cd /home/apache/server/httpd-2.4.16

./configure --prefix=/home/apache/server/apache-2.4.16

make

make install


9. 아파치의 권한을 apache 계정으로 넘기자.

chown -R apache apache-2.4.16

chgrp -R apache apache-2.4.16


10. 아파치를 실행해보자

/home/apache/server/apache-2.4.16/bin/apachectl start


나는 여기서 실행하면 ServerName 어쩌구 에러가 난다.


아파치 실행시 오류 메시지

AH00558: httpd: Could not reliably determine the server's fully qualified domain

name, using localhost.localdomain. Set the 'ServerName' directive globally to suppress this message


그래서 apache/conf/httpd.conf에서 ServerName를 적어주니 실행이 된다.

문제는 실행하면 / (루트)가 없다고 나오는데 일딴 설치는 여기서 끊겠다.


※ 추가

기본적으로 httpd를 포함해서 설치한 경우에는 설정파일이 기존 설정으로 적용되는듯 하다. 혹시 위 방법으로도 안된다면 httpd.conf 파일을 지정해보도록 하자. 지정해도 안되면 다른 문제이다.

/home/apache/server/apache-2.4.16/bin/apachectl start -f /home/apache/server/apache-2.4.16/conf/httpd.conf


-f 옵션을 이용해서 httpd.conf파일 지정이 가능하다. 확인하는 방법도 있는데, 아래와 같다.

httpd -V | egrep "(HTTPD\_ROOT|SERVER\_CONFIG\_FILE)"


정확한 경로가 나오지 않아 별 도움되지 않았다.


참고로 방화벽이 문제가 된다면 방화벽 설정을 해주어야한다.

setup


위 명령어를 실행하면 setup utility가 실행되는데 아래 화면처럼 나온다.



두번째 방화벽 설정으로 들어가가자. 참고로 위아래 키는 메뉴이동이고 좌우 키는 버튼 이동이다.



여기서 Customize에 들어가서 제일 하단에 보면 WWW (HTTP)라고 있는데 여기 체크해주어야 한다. 체크는 스페이스바 또는 엔터 키로 할 수 있다. 체크 후에 CLOSE 하면 위 화면으로 돌아오는데 OK 누르고 처음 화면에서 Quit로 나오면 된다.



참고

http://httpd.apache.org/docs/2.4/install.html

http://blog.naver.com/action1020/220084826628

https://wiki.apache.org/httpd/CouldNotDetermineServerName

http://zetawiki.com/wiki/%EC%95%84%ED%8C%8C%EC%B9%98_%EC%84%A4%EC%A0%95%ED%8C%8C%EC%9D%BC_httpd.conf,_apache2.conf_%EC%9C%84%EC%B9%98_%ED%99%95%EC%9D%B8

tags : Apache
Trackback 0 : Comment 0

HTTP Method 제한하기

WebServer/apache 2015.06.25 15:46

기존에 HTTP Method를 제한 걸어놨었지만, PUT, DELETE 2개만 걸면 될거라 생각하고 작업했더니 TRACE, OPTIONS도 제한하라고 한다. 간만에 다시 작업하면서 정리중...

<Directory />

<Limit PUT DELETE TRACE OPTIONS >

Order allow,deny

deny from all

</Limit>

</Directory>


Limit 태그 선언 안에 PUT DELETE TRACE OPTIONS 라고 적혀있는데, 여기에 Method명을 적으면 된다. 태그 안에 정의된 내용은 권한 설정이다.

TRACE는 Limit에서 정의할 수 없게 되었다. 전에는 오류 메시지가 없었는데... 다시 해보니 오류 메시지가 나온다.


추가로 다른 방법도 있다. 

<IfModule mod_rewrite.c>

RewriteEngine on

RewriteCond %{REQUEST_METHOD} ^TRACE

RewriteRule .* – [F]

</IfModule>


이 방법은 사용해본적이 없어서 모르겠지만, 검색에서 눈에 자주 띄는 것으로 보아 가능해보인다. 아래처럼 적용해보자

<IfModule mod_rewrite.c>

    RewriteEngine On

    RewriteCond %{REQUEST_METHOD} !^(GET|POST)

    RewriteRule .* - [R=405,L] 

</IfModule>


모듈을 이용한 방법이라 모듈이 켜지는지도 확인이 필요하다. GET, POST를 제외한 Method는 405 에러로 취급한다.

참고: http://tyboss.tistory.com/189


* 추가 *

<IfModule mod_rewrite.c>

    RewriteEngine on

    RewriteCond %{REQUEST_METHOD} ^TRACE

    RewriteRule .* = [F]

</IfModule>


이렇게 해서 TRACE 가 제한됐다고 연락받았다. 버전에 따라 다르다고 하니 잘 사용해보자. 모듈을 사용하는 방법은 해당 모듈이 설치되어 있는지 먼저 꼭 확인해보자. 경로는 경우에 따라 다르지만 모듈명은 다음과 같다. 예를 들면

LoadModule rewrite_module livexec/mod_rewrite.so


이렇게 된다. 모듈 먼저 확인하자.


*추가*

또 다른 메서드 이슈로 인해 설정을 바꿔야하는 일이 생겼다. 그런데 일부 서버에서는 처리가 안됬다는 연락을 받아서 고민하다가 지난번에 예외로 두었던 설정을 해보았다.

   RewriteCond %{REQUEST_METHOD} !=GET

    RewriteCond %{REQUEST_METHOD} !=POST

    RewriteRule (.*) - [F]


왜 예외로 두었냐면, 오류가 났는데 왜 오류가 났는지 이해를 못했기 때문이다. 구글링으로 검색한 내용이기도 했기에 신용했는데... 알고보니 긁어서 붙여넣기한 부분에 씌어쓰기 오류가 있었다. !=GET 이부분인데, 앞에 %{REQUEST_METHOD}와 !=는 띄워야하고 !=와 GET은 붙여야한다. 구글링에서 나왔던 것은 != GET 이렇게 띄어쓰기가 되어있었다. 이번에도 마찬가지로 띄어쓰기가 되어있어 오류가 나길래 고민하다 붙였더니 되더라...

뭔가 그 많은 블로그 중에 띄어쓰기 안된 블로그만 골라 들어갈 확률도 높지 않을텐데... 


아무튼 일딴 간단하게 curl로 테스트는 정상이다. 이제 다시 보안 검증만 받으면 되겠다...  이번에는 문제가 없어야 할텐데...

'WebServer > apache' 카테고리의 다른 글

cURL을 이용하여 apache 해더 정보보기  (0) 2015.10.12
CentOS 6.5에 apache 2.4.16 설치  (0) 2015.09.22
HTTP Method 제한하기  (0) 2015.06.25
apache make install할 때, /srclib/apr-util 오류  (0) 2011.10.20
Linux 아파치 설정  (0) 2011.08.03
Linux 아파치 설치  (0) 2011.08.03
Trackback 0 : Comment 0

티스토리 툴바