* PortsでApache2.2をインストール [#n638e3e1]
前提
- /home 以下に VirtualDomain が存在する。
- 各ユーザのホームディレクトリにもuser_dir が存在する。
** Apache2.2+SuExec [#h954908b]
Apacheに付属するSuExecを使用し、且つ、VirtualHostでもSuExecを使用したい。~
デフォルトでは次のようになっており、SuExecが使用出来ない。
# suexec -V
-D AP_DOC_ROOT="/usr/local/www/data"
-D AP_GID_MIN=1000
-D AP_HTTPD_USER="www"
-D AP_LOG_EXEC="/var/log/httpd-suexec.log"
-D AP_SAFE_PATH="/usr/local/bin:/usr/local/bin:/usr/bin:/bin"
-D AP_UID_MIN=1000
-D AP_USERDIR_SUFFIX="public_html"
portsからインストールするときに、make config でおこなっても DOC_ROOTを選択することが出来ないため、次のようにしておこなう。
# cd /usr/ports/www/apache22
# make SUEXEC_DOCROOT=/home
それ以外のオプションについては、 Makefile.doc に記載があり次のようになっています。
WITH_SUEXEC: Enable suExec support
SUEXEC_DOCROOT: SuExec root directory
SUEXEC_USERDIR: User subdirectory (default public_html)
SUEXEC_SAFEPATH: Set the safepath
SUEXEC_LOGFILE: Set log file for suexec (default: /var/log/httpd-suexec.log)
SUEXEC_UIDMIN: Minimal allowed UID (default 1000)
SUEXEC_GIDMIN: Minimal allowed GID (default 1000)
SUEXEC_CALLER: User allowed to call SuExec (default ${WWWOWN} (www))
SUEXEC_UMASK: Defines umask for suexec'd process(default:unset)
無事にインストールが完了すると、次のようになります。
# suexec -V
-D AP_DOC_ROOT="/home"
-D AP_GID_MIN=1000
-D AP_HTTPD_USER="www"
-D AP_LOG_EXEC="/var/log/httpd-suexec.log"
-D AP_SAFE_PATH="/usr/local/bin:/usr/local/bin:/usr/bin:/bin"
-D AP_UID_MIN=1000
-D AP_USERDIR_SUFFIX="public_html"
うまく、動くのを確認したら、 /etc/make.conf に書いておきましょう。
# echo "SUEXEC_DOCROOT=/home" >> /etc/make.conf
実際に使いたいドメイン等のvirtual host 次のように記述することでSuExecが使用可能になります。
<VirtualHost *:80>
ServerAdmin foo@example.com
DocumentRoot /home/www/example.com/public_html
ServerName example.com
SuexecUserGroup foo bar
DirectoryIndex index.html
…
</VirtualHost>