mod_ruid2 는 suphp 와 같은 각 계정의 권한으로 실행되게 해주는 DSO 모듈이다.
suphp 는 DSO 가 아니고 apache 1.x 에서 동작하는데 이건 apache2 용이라고 보면 되겠다.
http://sourceforge.net/projects/mod-ruid
소스는 소스포지에서 & 설치는 매우 간단하다. ‘ㅅ’a
1 2 3 4 5 6 |
~]# yum install libcap-devel ~]# cd ./package ~]# tar xfp mod_ruid2-0.9.8.tar ~]# cd mod_ruid2-0.9.8 ~]# /usr/local/apache/bin/apxs -a -i -l cap -c mod_ruid2.c |
음 그냥 무난하고 설치도 빠르다. 그리고 설정도 간단하다.
1 2 3 4 5 6 |
<VirtualHost *:80> DocumentRoot /var/www/계정아이디/html ServerName www.도메인.주소 ServerAlias 도메인.주소 RUidGid 계정아이디 그룹 </VirtualHost> |
엔드유져는 웹에서 생성한 파일을 ftp로 직접 수정을 할수 있고
퍼미션 변경등의 행위가 불필요 하기 때문에 매우 편리하다.
심지어 쉬운설치 를 지원하는 XE 혹은 wordpress 의 경우 Ftp 정보 입력없이 플러그인 이나
위젯 설치가 가능한 장점이 있다.
이보다 설정이 간단할수는 없지만 함정이 있다.
mod_security2 와 권한 문제로 충돌한다. 물론 apache 를 MPM_ITK 로 했을경우에도 충돌한다.
여기서 수 많은 삽질을 해보았다. 모드시큐리티는 해야하기 때문에 ‘ㅅ’a
아파치 8080포트 nginx 80 포트 로 리버스 프로시를 구성해서 nginx 에서 mod_security2 를 돌리고
프록시를 해서 아파치에서 웹서비스를 가동하는 방법 으로 구성은 했었지만 서비스 운용이
불가능하였다 (많은 문제가 있음 : nginx – mod_security2 가 안정적이지 않다.)
apache – apache(프록시) 를 구성해서 해결을 해볼수도 있겠다. 이건 시도하지 않았다.
다만 구성상 가능할것으로 판단 된다.
프록시를 한경우 mod_remoteip (아파치2.4 내장) 모듈로 프록시 되어온 실제 IP를 log로 남기는
작업을 별도로 할수 있다.
현재 어찌어찌 하여 하나의 아파치2.4 서버에 mod_ruid2 및 mod_security2 를 운영하고 있다.
현재 error_log에 문제가 발생하고 있지는 않지만 좀더 지켜본 뒤 정리해서 업데이트를 하도록 하겠다.
(안정화 테스트중…)
2015-11-10 추가 내용: ruid2 사용시 php.ini 의 session.gc_maxlifetime 에 의해 세션이 자동삭제가되지 않는 증상이 확인 되었고 이를 해결하기 위해 명령어를 주기적(cron등록)으로 실행하여 삭제를 합니다.
*- 세션처리를 file 형태가 아닌 memcached 등을 이용한경우 필요가 없음. -*
1 2 |
## RUID2 에 의한 session.gc_maxlifetime 자동처리 불가에 따른 세션 삭제 로직. find /tmp -type f -name 'sess_*' -cmin +24 -exec rm -f {} \; |
/tmp <—— 세션 디렉토리 선언에 따라 변경할것.
-cmin +24 <—— 세션이 만들어진지 24분이 초과 한경우(필요시 변경)
사유: 폴더 안에 약 32000여개 이상의 파일이 만들어질 경우 해당 폴더에 접근하는 시간이 늦어질수 있음
(파티션종류에 따라 틀림) 즉 웹서버 성능저하가 올수 있음. 때문에 필히 필요한 부분 ‘ㅅ’a