페이지

레이블이 apache인 게시물을 표시합니다. 모든 게시물 표시
레이블이 apache인 게시물을 표시합니다. 모든 게시물 표시

2014년 2월 28일 금요일

apache+tomcat 세션 클러스터링

먼저 로드밸런싱 을 해준다

그담

1. Clustering에 참여하는 각각의 tomcat 서버의 server.xml 에
<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/> 부분 주석처리 해제


[root@tpwas conf]# pwd
/svc/spi/was/tomcat/spiWas2/conf
[root@tpwas conf]# vi server.xml
=====================================================================================
<!--
      <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>
-->
=====================================================================================


1.1 보다 상세한 설정 및 물리 장비가다 다를 경우 다음을 각 server.xml에 추가
그리고 Receiver의 아이피와 포트를 수정
<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster" channelSendOptions="8">
     <Manager className="org.apache.catalina.ha.session.DeltaManager" expireSessionsOnShutdown="false" notifyListenersOnReplication="true"/>
 
     <Channel className="org.apache.catalina.tribes.group.GroupChannel">
          <Membership className="org.apache.catalina.tribes.membership.McastService" address="228.0.0.105" port="45564" frequency="500" dropTime="3000"/>
          <Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver" address="현재 서버아이피" port="4001 서버마다틀리게" autoBind="100" selectorTimeout="5000" maxThreads="6"/>
          <Sender className="org.apache.catalina.tribes.transport.ReplicationTransmitter">
               <Transport className="org.apache.catalina.tribes.transport.nio.PooledParallelSender"/>
          </Sender>
          <Interceptor className="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector"/>
          <Interceptor className="org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor"/>
     </Channel>
 
     <Valve className="org.apache.catalina.ha.tcp.ReplicationValve" filter=""/>
     <Valve className="org.apache.catalina.ha.session.JvmRouteBinderValve"/>
 
     <Deployer className="org.apache.catalina.ha.deploy.FarmWarDeployer" tempDir="/tmp/war-temp/" deployDir="/tmp/war-deploy/" watchDir="/tmp/war-listen/" watchEnabled="false"/>
 
     <ClusterListener className="org.apache.catalina.ha.session.JvmRouteSessionIDBinderListener"/>
     <ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener"/>
</Cluster>


2. WEB-INF/web.xml에 <distirbutable/>추가


[root@tpwas WEB-INF]# pwd
/home/spiwas/dist/WebContent/WEB-INF
[root@tpwas WEB-INF]# vi web.xml
==================================================================================================
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
         version="2.4">
    <display-name>Clustering Test</display-name>
    <distributable/>
</web-app>
==================================================================================================


3. 구동 확인

start시 catalina.out.out에 다음과 같은 로그가 나오면 됨

정보: Replication member added:org.apache.catalina.tribes.membership.MemberImpl[tcp://{127, 0, 0, 1}:4000,{127, 0, 0, 1},4000, alive
=5012, securePort=-1, UDP Port=-1, id={31 -5 48 -9 -27 64 79 67 -81 49 -44 96 -87 -84 -115 -121 }, payload={}, command={}, domain={}
, ]


3.1 구동시 에러메세지
 구동시 다음과 같은 에러 메세지가 나올 수 있다
이럴땐 /etc/hosts파일을 수정해 준다

½É°¢: Failed bind replication listener on address:auto
java.net.UnknownHostException: tpwas: tpwas
        at java.net.InetAddress.getLocalHost(InetAddress.java:1402)
        at org.apache.catalina.tribes.transport.ReceiverBase.getBind(ReceiverBase.java:201)
        at org.apache.catalina.tribes.transport.nio.NioReceiver.start(NioReceiver.java:110)
        at org.apache.catalina.tribes.group.ChannelCoordinator.internalStart(ChannelCoordinator.java:145)
        at org.apache.catalina.tribes.group.ChannelCoordinator.start(ChannelCoordinator.java:99)
        at org.apache.catalina.tribes.group.ChannelInterceptorBase.start(ChannelInterceptorBase.java:162)
        at org.apache.catalina.tribes.group.ChannelInterceptorBase.start(ChannelInterceptorBase.java:162)
        at org.apache.catalina.tribes.group.interceptors.MessageDispatchInterceptor.start(MessageDispatchInterceptor.java:157)
        at org.apache.catalina.tribes.group.ChannelInterceptorBase.start(ChannelInterceptorBase.java:162)
        at org.apache.catalina.tribes.group.GroupChannel.start(GroupChannel.java:419)
        at org.apache.catalina.ha.tcp.SimpleTcpCluster.startInternal(SimpleTcpCluster.java:685)
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
        at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:1106)
        at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:302)
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
        at org.apache.catalina.core.StandardService.startInternal(StandardService.java:443)
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
        at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:732)
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
        at org.apache.catalina.startup.Catalina.start(Catalina.java:691)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:322)
        at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:456)
2014. 2. 26 ¿ÀÀü 10:59:27 org.apache.catalina.tribes.transport.ReceiverBase getBind


다음을 제일 밑에 추가

[root@tpwas logs]# vi /etc/hosts
127.0.0.1   localhost 시스템 이름 localhost


4. 테스트 - webcontent폴더에 index.jsp를 다음과 같이 만든다



[root@tpwas WebContent]# pwd
/home/spiwas/dist/WebContent
[root@tpwas WebContent]# vi index.jsp 
=====================================================================================
<%
  session.setAttribute("a","a");
%>
<html>
<head>
<title>Test JSP</title>
</head>
<body>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr bgcolor="#CCCCCC">
    <td width="13%">Tomcat1 Machine</td>
    <td width="87%">&nbsp;</td>
  </tr>
  <tr>
    <td>Session ID :</td>
    <td><%=session.getId()%></td>
  </tr>
</table>
    <div>Im WAS server hello snowman</div>
</body>
</html>
=====================================================================================


4.1 인스턴스를 2개 뛰우고 하나씩 죽여가면서 다음 화면과 같이 sessionId는 같고 worker가 달라지는 것을 확인하면 완료된 것이다
(크롬에서이나 익스플로러에서 확인해볼 것)



1번 인스턴스만 살아 있을때 또는 동시에 2개 다 살아있을때


2번 인스턴스만 살아있을때




apache+tomcat 로드 밸런싱

우선 해야 할 것은

① was 인스턴스 추가
② apache+tomcat연동
③ apache의 workers.properties, mod-jk수정 및 tomcat의 ajp포트 변경


위 1,2번은 이미 다른페이지에 설명되었으니 패스하고 3번을 다루겠다

사실 apache+tomcat과 비슷하거나 연장선에 있지만 별도로 설명하겠다



1. 우선 mod-jk수정 - 다음 녹색부분을 보면 디폴트가 ajp13으로 되어있을텐데
router로 바꾼다





[root@SPIWEB conf]# pwd
/svc/spi/web/apache/conf
[root@SPIWEB conf]# ll
ÇÕ°è 108
drwxr-xr-x. 2 root root  4096 2014-02-27 15:26 extra
-rw-r--r--. 1 root root 18207 2014-02-27 16:55 httpd.conf
-rw-r--r--. 1 root root 13077 2014-02-27 15:26 magic
-rw-r--r--. 1 root root 53011 2014-02-27 15:26 mime.types
-rw-r--r--. 1 root root   404 2014-02-28 09:39 mod-jk.conf
drwxr-xr-x. 3 root root  4096 2014-02-27 15:26 original
-rw-r--r--. 1 root root   439 2014-02-27 17:51 workers.properties
 [root@SPIWEB conf]# vi mod-jk.conf 

 ==============================================================================
LoadModule jk_module modules/mod_jk.so
<ifModule jk_module>
        JkWorkersFile conf/workers.properties
        JkShmFile logs/mod_jk.shm
        JkLogFile logs/mod_jk.log
        JkLogLevel info
        JkLogStampFormat "[%a %b %d %H:%M:%S %Y]"
</ifModule>
JkMount /*.jsp router
JkMount /*.spi router
JkMount /*.ajax router
<Directory />
   Options FollowSymLinks
   AllowOverride None
</Directory>
 ==============================================================================



2. workers.properties 수정 - 다음을 붙여넣기 해준다




[root@SPIWEB conf]# vi workers.properties
 ==============================================================================
worker.list=router
# 1번째 인스턴스와 연결
worker.worker1.port=8009 <- tomcat instance의  ajp포트와 일치시킬 것(server.xml)
worker.worker1.host=localhost <--localhost, 또는 ip주소
worker.worker1.type=ajp13
worker.worker1.lbfactor=1
worker.worker1.route=worker1
# 2번째 인스턴스와 연결
worker.worker2.port=8109 <- tomcat instance의  ajp포트와 일치시킬 것(server.xml)
worker.worker2.host=localhost  <--localhost, 또는 ip주소
worker.worker2.type=ajp13
worker.worker2.lbfactor=1
worker.worker2.route=worker2
worker.router.type=lb
worker.router.balance_workers=worker1,worker2
 ==============================================================================


3. tomcat instance의 server.xml수정

[root@tpwas conf]# pwd
/svc/spi/was/tomcat/spiWas2/conf
[root@tpwas conf]# vi server.xml
====================================================================================
<!--ajp포트 수정-->
<Connector port="8109" protocol="AJP/1.3" redirectPort="8443" />
<!--router추가-->
<Engine name="Catalina" defaultHost="localhost" jvmRoute="worker2">
====================================================================================






2014년 2월 26일 수요일

apache+tomcat 연동

1. tomcat connector 설치

[lsh@localhost ~]$ wget http://apache.mirror.cdnetworks.com//tomcat/tomcat-connectors/jk/tomcat-connectors-1.2.37-src.tar.gz


 2) 압축 해제
[lsh@localhost ~]$  tar zxvf tomcat-connectors-1.2.37-src.tar.gz

 3) 컴파일

  - cd tomcat-connectors-1.2.37-src/native/
  - ./buildconf.sh    <-- 안될수도 있고 무시해도 상관없음
  - ./configure --with-apxs=/svc/spi/web/apache/bin/apxs  <-- 해당 경로명에 파일 있나 확인
  - make
  - make install





4) mod_jk.so 확인
 - 위 작업을 완료하면 /svc/spi/web/apache/modules 안에 mod_jk.so파일을 볼 수 있을 것이다

2. apache httpd.conf 수정
파일 제일 하단에 다음을 추가한다 또는 mod-jk.conf를 새로 만들고
httpd.conf에 다음과 같이 include한다

Include conf/mod-jk.conf

--여기서 부턴 연동할게 하나면 아래의 방식을 따르고 여러개면 더 아래로 내려간다


LoadModule jk_module modules/mod_jk.so
<ifModule jk_module>
        JkWorkersFile conf/workers.properties
        JkShmFile logs/mod_jk.shm
        JkLogFile logs/mod_jk.log
        JkLogLevel info
        JkLogStampFormat "[%a %b %d %H:%M:%S %Y]"
</ifModule>
JkMount /*.jsp ajp13
<Directory />
   Options FollowSymLinks
   AllowOverride None
</Directory>


3. workers.properties파일 생성 및 설정 (/svc/spi/web/apache/conf/ 에 생성)
 - 다음 내용을 붙여넣기 해준다

worker.list=ajp13
worker.ajp13.type=ajp13
worker.ajp13.host=localhost
worker.ajp13.port=8009
worker.ajp13.lbfactor=1
worker.ajp13.connection_pool_timeout=600
worker.ajp13.socket_keepalive=1

4. apache, tomcat 재시작(apache만 재시작해도 됨)

5. document root에 index.html, index.jsp넣어 확인
 - localhost://index.html
 - localhost://index.jsp 확인
 - index.jsp는 다음과 같이 간단한 jsp코드를 넣어 서블릿 실행되는 지 확인
<html>
<head><title>Hello JSP</title></head>
<body>
<h1> Hello JSP Test</h1>
<%
out.println("hello World");
%>
</body>
</html>



--여러개 연동할땐 아래 참조

mod-jk.conf


LoadModule jk_module modules/mod_jk.so
<ifModule jk_module>
        JkWorkersFile conf/workers.properties
        JkShmFile logs/mod_jk.shm
        JkLogFile logs/mod_jk.log
        JkLogLevel info
        JkLogStampFormat "[%a %b %d %H:%M:%S %Y]"
</ifModule>

JkMount /*.jsp router
JkMount /*.asp router
<Directory />
   Options FollowSymLinks
   AllowOverride None
</Directory>


wokers.properties

worker.list=router
# Define a worker using ajp13
worker.worker1.port=8009  --ajp포트 맞출 것
worker.worker1.host=111.111.111.3
worker.worker1.type=ajp13
worker.worker1.lbfactor=1
worker.worker1.route=worker1
# Define another worker using ajp13
worker.worker2.port=8109 --ajp 포트 맞출 것
worker.worker2.host=111.111.111.2
worker.worker2.type=ajp13
worker.worker2.lbfactor=1
worker.worker2.route=worker2
worker.router.type=lb
worker.router.balance_workers=worker1,worker2


--tomcat의 server.xml에 다음 내용 추가
 -각각 다른 인스턴스에 해줄 것

server.xml

 <Engine name="Catalina" defaultHost="localhost" jvmRoute="worker1">

 <Engine name="Catalina" defaultHost="localhost" jvmRoute="worker2">




[linux]apache install with APR and setting

1. apache 표준 환경설정


WEB HOME/svc/spi/web/
APACHE HOME${WAS HOME}/apache


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

디렉토리 생성
[root@tpdb /]# mkdir -p /svc/spi/web
압축파일 카피
[root@tpdb spidb]# pwd
/home/spi
[root@tpdb spidb]# cp ./httpd-2.4.6.tar.gz /svc/spi/web           
[root@tpdb spidb]# cd /svc/spi/web
압축파일 해제
[root@tpdb web]# tar zxvf httpd-2.4.6.tar.gz 


3. 설치 환경설정
Apache를 mpm 방식으로 설치를 하며 설치파일의 httpd-2.2.22/server/mpm/worker 에서 worker.c의 85 line #define DEFAULT_SERVER_LIMIT 16 -> 128로 변경후 install 진행

[root@tpdb worker]# pwd
/svc/spi/web/httpd-2.4.6/server/mpm/worker
[root@tpdb worker]# ll
합계 136
-rw-r--r--. 1 tempuser games    40 2009-11-03 23:36 Makefile.in
-rw-r--r--. 1 tempuser games   457 2009-04-23 14:17 config.m4
-rw-r--r--. 1 tempuser games   180 2011-11-30 19:21 config3.m4
-rw-r--r--. 1 tempuser games 13133 2011-01-28 04:34 fdqueue.c
-rw-r--r--. 1 tempuser games  2543 2011-01-28 04:34 fdqueue.h
-rw-r--r--. 1 tempuser games  1634 2012-01-31 21:02 mpm_default.h
-rw-r--r--. 1 tempuser games  3031 2011-12-05 09:08 pod.c
-rw-r--r--. 1 tempuser games  1810 2009-03-25 00:43 pod.h
-rw-r--r--. 1 tempuser games 90502 2013-05-12 19:38 worker.c
[root@tpdb worker]# vi worker.c 
84 #ifndef DEFAULT_SERVER_LIMIT
85 #define DEFAULT_SERVER_LIMIT 16 <--수정할 것*(32,64,128 등)
86 #endif

그다음 configure실행, 그러나 실행하면 다음 APR에러가 발생할 것이다
먼저 

-apache configure
[root@tpdb httpd-2.4.6]# ./configure --prefix=/svc/spi/web/apache  --enable-so --enable-ssl --with-mpm=worker
checking for chosen layout... Apache
checking for working mkdir -p... yes
checking for grep that handles long lines and -e... /bin/grep
checking for egrep... /bin/grep -E
checking build system type... x86_64-unknown-linux-gnu
checking host system type... x86_64-unknown-linux-gnu
checking target system type... x86_64-unknown-linux-gnu
configure: 
configure: Configuring Apache Portable Runtime library...
configure: 
checking for APR... no
configure: error: APR not found.  Please read the documentation.


- APR install
다음 명령어를 실행하여 apr 다운로드 실행
(혹시 파일이 없으면 버전이 없는 것이니 http://apr.apache.org/download.cgi 서 확인하고 파일명만 바꾸어주면 됨
다운로드 및 컴파일
[root@tpdb web]# wget http://mirror.apache-kr.org/apr/apr-1.5.0.tar.gz
[root@tpdb web]# tar zxvf apr-1.5.0.tar.gz
[root@tpdb web]# cd apr-1.5.0
[root@tpdb apr-1.5.0]# ./configure 

여기서 gcc에러가 나면 별도 설치해야 함 
설치해야 할게 많기 때문에 별도로 다른 페이지에 설명 예정
다음 링크 참조
http://stoplulker.blogspot.com/2014/02/linux-gcc.html

- 그리고 apr-util다운로드 후 컴파일 진행
[root@tpdb web]# wget http://mirror.apache-kr.org/apr/apr-util-1.5.3.tar.gz
[root@tpdb web]# tar zxvf apr-util-1.5.3.tar.gz
[root@tpdb spidb]# cd apr-util-1.5.3
[root@tpdb apr-util-1.5.3]# ./configure --with-apr=/usr/local/apr
[root@tpdb apr-util-1.5.3]# make; make install

- pcre 설치
다 진행되면 다시 apache configure시작
그러나 다시 할려면  pcre에러가 날 수도 있다
이럴경우 다음 설치
[root@SPIWEB spiweb]# rpm -ivh pcre-devel-7.8-6.el6.x86_64.rpm 

--ssl 에러
이젠 다시 ssl에러가 날 수도 있을 것이다
일단 시간이 없으니 담에 하기로 하고 일단 옵션에 ssl을 생략한다
./configure --prefix=/svc/spi/web/apache  --enable-so  --with-mpm=worker

마지막으로 make;make install을 해준다


이제 ${APACHE_MOE}/bin/apachectl start를 하여 아파치를 실행시킨다
아마 실행시키면 다음과 같이 에러가 날텐데 이것은 httpd.conf파일을 열어 다음 ServerName을 localhost로 바꿔준다

AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1. Set the 'ServerName' directive globally to suppress this message

#ServerName www.example.com:80

ServerName localhost





4. mpm 설정 수정
 - conf/httpd.conf 파일에 httpd-mpm.conf, httpd-default.conf 주석해제 및 설정 변경
[root@uplus conf]# vi httpd.conf
Include conf/extra/httpd-mpm.conf
Include conf/extra/httpd-default.conf



[root@uplus conf]#vi extra/httpd-mpm.conf
# worker MPM
# StartServers: initial number of server processes to start
# MinSpareThreads: minimum number of worker threads which are kept spare
# MaxSpareThreads: maximum number of worker threads which are kept spare
# ThreadsPerChild: constant number of worker threads in each server process
# MaxRequestWorkers: maximum number of worker threads
# MaxConnectionsPerChild: maximum number of connections a server process serves
#                         before terminating
<IfModule mpm_worker_module>
    StartServers            10
    MinSpareThreads         75
    MaxSpareThreads        250
    ThreadsPerChild         25
    MaxRequestWorkers      400
    MaxConnectionsPerChild   0
</IfModule>


5. root디렉토리 잡기
 httpd.conf파일을 열어서 documentRoot를 바꿔준다
필요시  useradd명령어를 사용하여 user를 만들어 준다

[root@SPIWEB conf]# pwd
/svc/spi/web/apache/conf
[root@SPIWEB conf]# ll
ÇÕ°è 96
drwxr-xr-x. 2 root root  4096 2014-02-27 15:26 extra
-rw-r--r--. 1 root root 18093 2014-02-27 15:33 httpd.conf
-rw-r--r--. 1 root root 13077 2014-02-27 15:26 magic
-rw-r--r--. 1 root root 53011 2014-02-27 15:26 mime.types
drwxr-xr-x. 3 root root  4096 2014-02-27 15:26 original
[root@SPIWEB conf]# vi httpd.conf 
DocumentRoot "/home/spiweb/documentRoot"
<Directory "/home/spiweb/documentRoot">

이제 index.html파일을 root에 만들어 테스트 하면 되는데 가끔 403 에러가 날 때가 있다
이럴땐 다음을 실행
sudo chown -R $USER:$USER /var/www/folder-name 
sudo chmod -R 755 /var/www



6. log 설정에 cookie추가

<IfModule log_config_module>
    #
    # The following directives define some format nicknames for use with
    # a CustomLog directive (see below).
    #
    LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" \"%{Cookie}i\"" combined
    LogFormat "%h %l %u %t \"%r\" %>s %b" common


6. log경로 바꿔주기
Apache log의 기본 디렉토리는 ${apache설치디렉토리}/logs 이며  /log/${서비스명}/web/logs에 심볼릭 링크가 되어야함. 
[root@ bin]# mkdir -p /logs/spi/web/logs
[root@ bin]# cd /logs/spi/web/logs
[root@ logs]# mkdir {access-log,error-log}
[root@ logs]# ls
access-log  error-log
[root@ logs]#

[root@ apache]# rm –rf logs
[root@ apache]# ln -s /logs/spi/web/logs logs
[root@ apache]# ll
total 52
drwxr-xr-x  2 root root  4096 Jun  5 10:25 bin
drwxr-xr-x  2 root root  4096 Jun  5 10:25 build
drwxr-xr-x  2 root root  4096 Jun  5 10:25 cgi-bin
drwxr-xr-x  4 root root  4096 Jun  5 10:30 conf
drwxr-xr-x  3 root root  4096 Jun  5 10:25 error
drwxr-xr-x  2 root root  4096 Jan 26 07:24 htdocs
drwxr-xr-x  3 root root  4096 Jun  5 10:25 icons
drwxr-xr-x  2 root root  4096 Jun  5 10:25 include
lrwxrwxrwx  1 root root    19 Jun  5 10:54 logs -> /log/spi/web/logs
drwxr-xr-x  4 root root  4096 Jun  5 10:25 man
drwxr-xr-x 14 root root 12288 Jan 26 07:26 manual
drwxr-xr-x  2 root root  4096 Jun  5 10:25 modules

[root@uplus apache]# vi conf/httpd.conf
#ErrorLog "logs/error_log"
ErrorLog "|/svc/spi/web/apache/bin/rotatelogs -l /svc/spi/web/apache/logs/error-log/error.%Y%m%d 86400"

#CustomLog "logs/access_log" common
CustomLog "|/svc/spi/web/apache/bin/rotatelogs -l /svc/spi/web/apache/logs/access-log/access.%Y%m%d 86400" combined



7. apache sudo 설정
apache권한이 root일경우 서비스 계정(test)으로 실행하기 위해 sudo 설정을 한다.
아래설정은 서비스계정이 apachectl 과 cat, tail, rm, mv 을 서비스계정으로 실행할 수 있게 해주는 설정이다. 
[root@ apache]# vi /etc/sudoers 
root    ALL=(ALL)       ALL
test      ALL=/svc/spi/web/apache/bin/apachectl 
test      ALL=/bin/cat /log/spi/web/*
test      ALL=/usr/bin/tail /log/spi/web/*
test      ALL=/bin/rm /log/spi/web/*
test      ALL=/bin/mv /log/spi/web/*


8. 디렉토리 옵션 설정
기존의 웹 문서외에 다른 파일 시스템에 접근 가능하기 때문에 수정

<Directory>지시자의 Options 을 Option None으로 변경(2군데)
#
# Deny access to the entirety of your server's filesystem. You must
# explicitly permit access to web content directories in other 
# <Directory> blocks below.
#
<Directory />
    AllowOverride none
    Require all denied

</Directory>


<Directory "/home/spiweb/documentRoot">
    #
    # Possible values for the Options directive are "None", "All",
    # or any combination of:
    #   Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews
    #
    # Note that "MultiViews" must be named *explicitly* --- "Options All"
    # doesn't give it to you.
    #
    # The Options directive is both complicated and important.  Please see
    # http://httpd.apache.org/docs/2.4/mod/core.html#options
    # for more information.
    #
    Options Indexes FollowSymLinks

    #
    # AllowOverride controls what directives may be placed in .htaccess files.
    # It can be "All", "None", or any combination of the keywords:
    #   AllowOverride FileInfo AuthConfig Limit
    #
AllowOverride FileInfo AuthConfig Limit
Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
<Limit OPTIONS PROPFIND>
        Order allow,deny                                                                                          
        Allow from all                                                                                            
</Limit>
    <LimitExcept GET POST>
        Order deny,allow                                                                                          
        Deny from all                                                                                             
    </LimitExcept>


    #                                                                                                             
    # Controls who can get stuff from this server.                                                                
    #                                                                                                             
    Require all granted

</Directory>



9. 디렉토리 권한 변경
[root@spiwba1 apache]# chmod -R 740 conf
[root@spiwba1 conf]# chmod -R 600 *.conf



image

image