직접 빌드한 Apache 2를 시스템 환경 설정의 공유 항목에서 실행시키고 끄기
이번에 소개할 요령은, 앞에서 소개된 Apache 바이너리와 같이, 손수 빌드(build)한 Apache 2의 실행 환경을 Mac OS X에 기본 설치된 Apache 1.3.x 버전과 동일하게 만들어서, 손쉽게 시스템 환경 설정의 공유 항목에서 실행시키고 끌 수 있게 하는 방법입니다. 이렇게 해 놓으면, 시스템의 재시동 후에도 특정 시동 항목이나 LaunchDaemon의 설정 없이도 Apache가 자동적으로 실행될 수 있도록 만들 수도 있답니다.
먼저 Apache2의 httpd.conf 파일을 열고 httpd의 실행 권한을 다음과 같이 바꾸어 줍니다.
다음에, PidFile을 다음과 같이 Mac OS X에 기본 설치된 Apache의 것에 설정되어 있는 값과 같게 해줍니다.
<IfModule !mpm_netware_module>
PidFile /private/var/run/httpd.pid
</IfModule>
그리고, 기본 Apache 1.3.x 버전의 /usr/sbin/apachectl 파일을 apachectl-1.3이라는 이름으로 바꾸어 따로 남겨놓고, 심볼릭 링크(symbolic link)를 사용해서 원래의 것은 Apache 2의 것으로 대체되도록 합니다.
sudo mv /usr/sbin/apachectl /usr/sbin/apachectl-1.3
ln -s <path to apache2>/bin/apachectl /usr/sbin/apachectl
여기서, <path to apache2> 대신에, 실제 Apache 2가 설치되어 있는 경로를 입력해 주어야 합니다. (주로 /usr/local/apache2)
이렇게 하면, Mac OS X에 기본 설치된 Apache 1.3.x 버전과 거의 비슷한 환경을 구현해 놓게 되면서, 시스템 환경 설정의 공유 항목에서 Apache 2를 키고 끌 수 있게 됩니다.
덤으로, Mac OS X에서는 주기적(주간) 일정으로 비대해진 Apache의 log 파일들을 정리(rotate)하게 되는데, 손수 빌드해서 설치한 Apache 2의 log 파일들을 정리하도록 만들려면 /privat/etc/periodic/weekly/500.weekly에 위치한 주간 실행 shell 스크립트 파일을 열고, httpd log 파일 정리 부분을 다음과 같이 바꾸어 줍니다.
echo ""
printf %s "Rotating httpd log files:"
cd /usr/local/apache2/logs/
for i in access_log error_log; do
if [ -f "${i}" ]; then
printf %s " $i"
if [ -x /usr/bin/gzip ]; then gzext=".gz"; else gzext=""; fi
if [ -f "${i}.3${gzext}" ]; then mv -f "${i}.3${gzext}" "${i}.4${gzext}"; fi
if [ -f "${i}.2${gzext}" ]; then mv -f "${i}.2${gzext}" "${i}.3${gzext}"; fi
if [ -f "${i}.1${gzext}" ]; then mv -f "${i}.1${gzext}" "${i}.2${gzext}"; fi
if [ -f "${i}.0${gzext}" ]; then mv -f "${i}.0${gzext}" "${i}.1${gzext}"; fi
if [ -f "${i}" ]; then mv -f "${i}" "${i}.0" && if [ -x /usr/bin/gzip ]; then gzip -9 "${i}.0"; fi; fi
touch "${i}" && chmod 644 "${i}" && chown root:admin "${i}"
fi
done
if [ -f /private/var/run/httpd.pid ]; then /usr/local/apache2/bin/apachectl restart; fi
echo ""
위에서, /usr/local/apache2/ 부분은 자신이 설치한 Apache 2의 경로에 맞게 고쳐주어야 합니다.
그리고, Mac OS X에 설치된 Apache는 시스템 특성상 Finder에서 생성된 .DS_Store 파일들을 그대로 전달하게 되면서 보안상의 위험을 노출할 수도 있기 때문에, Apache의 httpd.conf 파일에 있는 .htaccess 파일들을 감추어 주는 설정 부분을 다음과 같이 바꾸어 주어야 합니다.
#
# The following lines prevent .htaccess and .htpasswd files from being
# viewed by Web clients.
#
#### For Mac OS X Server: Note the method used to deny access to these
#### files so that files on case-insensitive HFS+ volumes are protected.
#### Also note that .DS_Store files created by the Finder are denied here.
#### (Consider adding .FBCIndex files)
#### (Note: Denying .DS_S* may interfere with Finder WebDAV operation)
#
<Files ~ "^\.([Hh][Tt]|[Dd][Ss]_[Ss])">
Order allow,deny
Deny from all
Satisfy All
</Files>
이렇게 하면, 안전하고 Mac OS X의 환경과도 잘 어울리는 Apache 2 서버를 얻게 된답니다.