チルダなしhttp://サーバアドレス/ユーザ名/でアクセス
これで、WordPressやJoomlaなどCMSをインストールする環境は整ったのですが、apache のデフォルト設定のままですと、ドキュメントルートの所有者が管理者になっていますので、ftpでのファイルアップロードなど何かと面倒です。
DocumentRoot の所有者を一般ユーザに変更したり、httpd.conf で DocumentRoot を変更するなどの方法があるのですが、今回は、一般ユーザがウェブサイトを公開できるようにしてみようと思います。
これもデフォルトでは無効になっているようですので、httpd.conf の二ヶ所
LoadModule userdir_module lib/httpd/modules/mod_userdir.so
# User home directories
Include /etc/httpd/extra/httpd-userdir.conf
のコメントアウトをはずし、apache をリスタートでOKです。
ただ、このままですと、アドレスが http://サイト名/~ユーザ/となってしまいますので、httpd-userdir.conf の UserDir の下辺りに
AliasMatch ^/([^/]+)/(.*) /home/$1/public_html/$2
を追加して、チルダなしでアクセスできるようにしておきます。
あら!?
# apachectl restart
AH00671: The ScriptAlias directive in /etc/httpd/httpd.conf at line 511 will probably never match because it overlaps an earlier AliasMatch.511行のScriptAliasディレクティブは、それよりも前にあるAliasMatchとかぶってるよ
ってことですか? 511行ってのは、
Plamo5-2/apache+phpをCGIで動かすの ScriptAlias /local-bin/ “/usr/bin/” なんですが、この /local-bin/ が httpd-userdir.conf の正規表現にマッチし、ユーザディレクトリと判断されてしまうということのようです。httpd-userdir.conf の組み込みを最下行にして、前後入れ替えましょう。
後は、DirectoryIndex に index.php を追加しておきます。ついでに、index.htm も入れておいた方がいいですね。
DirectoryIndex index.html index.htm index.php
phpをFastCGIで動作させる
phpinfo で FastCGI と表示されるのは、php が FastCGI に対応しているよという意味で、それで動いているということではないようです。
Server API | CGI/FastCGI |
apache に FastCGI を導入してみようと思います。
ソースからコンパイルしてインストールします。
# wget http://ftp.tsukuba.wide.ad.jp/software/apache//httpd/mod_fcgid/mod_fcgid-2.3.9.tar.gz
解凍してディレクトリ移動
# ./configure.apxs
# make
# make install
これで、httpd.conf に以下が追記されまので、
LoadModule fcgid_module lib/httpd/modules/mod_fcgid.so
後は、必要なディレクトリに
Options ExecCGI
AddHandler fcgid-script .php
FCGIWrapper /usr/bin/php-cgi .php
を追加すればいいようです。