오늘부터 OpenLook은 새로운 서버에서 돌아가게 되었습니다. 옵테론 242 듀얼이라 무지 빨라졌지요~ (사실 별로 돌아가는 게 없어서 그다지 체감 속도는;;) 이번에 옮기는 김에, 기존에 쓰던 아파치에서 lighttpd로 바꿨습니다. 요새 lighttpd가 워낙 인기가 있어서, 한번 도전을 해 봤는데, 환경 설정이나 속도나 소모되는 자원이나 여러모로 아주 마음에 듭니다. 🙂
OpenLook서버에서 돌아가고 있는 웹 사이트 중에 동아리 홈페이지와 파이썬마을이 php를 쓰고 있기 때문에, php를 설정하는 방법을 고심하다가, 심심하면 터지는 php 애플리케이션의 보안 버그에도 좀 대비를 하고자 각각의 php 사이트를 별도의 fastcgi 프로세스로 분리를 해서 setuid/chroot 해버리기로 마음을 먹었습니다. 그래서, lighttpd에서 기본으로 제공해 주는 spawn-fcgi 유틸리티를 이용해서 일단은 만들어 봤는데, spawn-fcgi는 소켓을 만든 다음에, setuid, setgid, chroot를 한 다음에 php를 띄우는 순서로 하다보니, php바이너리는 물론이고 관련 라이브러리까지 모두 chroot 디렉토리 안에 넣어야 제대로 돌아가는 문제점이 있었습니다.
그래서, 아무래도 원하는대로 하려면, chroot를 하기 전에 php의 초기화를 모두 끝내고 나서 chroot를 해줘야하기 때문에, 알고보면 spawn-fcgi에서는 아무리 별짓을 해 봐야, 방법이 없고, 결국은 php 내부에서 해결을 해야 하는 문제로 판단이 됐습니다.
그래서 결국은 패치를 만들었습니다. 으흐.. php-cgi-sapi는 fastcgi와 cgi를 동시에 지원하느라 코드가 상당히 지저분하긴 했지만서도;; 하여간 패치하고 나니까, pear를 사용하지 않는 대부분의 php 프로그램들은 그럭저럭 잘 돌아가는 것이, 제로보드를 돌려도 안전할 것 같은 느낌이 드는군요 -ㅇ-;; 가급적이면 명령행 옵션으로 만들어서 메인스트림에 올렸으면 좋았을텐데, 명령행옵션이 이미 너무 많이 들어가있어서, 옵션들을 더 넣을라니 알파벳도 마땅찮고 –; 그래서 결국은 그냥 환경변수로 그냥 혼자 쓰는 패치로;; 으흐~ 포트 유저는 패치를 /usr/ports/lang/php5/files에 넣으시고 www/php5-cgi를 WITH_FASTCGI=yes옵션을 주고 깔으시면 됩니다~!
명랑하고 발랄하고 경쾌한 lighttpd 세상으로 오세요~ -O-