Pandora Pocket

IT系と日常系の備忘録。三日坊主。

前回で基本的な設定は終了・・・というかそのまま使ってもHTMLだけで構築された静的なサイトなら動くはず。

でも私のサイトはPHPも利用しているのでそちらの設定も行う。

まずはPHPの設定ファイル(php.ini)をいじる。

vi /etc/php5/apache2/php.ini

#バージョンを隠す
expose_php = On
↓
expose_php = Off

#ログに記録するサイズを増やす
log_errors = On
↓
log_errors = Off

#出力バッファリング制御を切る
output_buffering = 4096
↓
output_buffering = Off

#SHA-1の指定に変更しておく
session.hash_function = 0
↓
session.hash_function = 1

#言語環境を日本語に設定
;mbstring.language = Japanese
↓
mbstring.language = Japanese

#メモリー制限
memory_limit = 128M
↓
memory_limit = 60M

#アップロード最大サイズ変更
upload_max_filesize = 2M
↓
upload_max_filesize = 10M

まぁ変えなくてもいいかなと思うのもあるわけだけど、一応。特にLTプランを借りているのでメモリーを節約するためにもmemory_limitだけは減らしておいた方がいいと思う。

また、本来変えておけと言われるような設定を変更しなかったりしているのでその辺りご注意。

これでPHPそのものの設定は終了。

でもこれではいろいろセキュリティ的な問題があるらしいので(オイ)、suPHPをインストール。

これはPHPやCGIの実行権限をApacheからユーザーに変更できるものらしい。若干動作速度が落ちるらしいけれどそれほど変わりはない、みたい。

aptitude install -y libapache2-mod-suphp
pecl install htscanner channel://pecl.php.net/htscanner-0.9.0

suPHPそのものをインストールするとともに、htscannerも入れておく。

suPHPは.htaccessのphp_flagなどを無視してしまうそうで、プログラムの実行に支障を来すことがあるので入れておくべし。α版らしいけどきちんと動いた。

このままだと動かないので設定をいじる。

vi /etc/suphp/suphp.conf

docroot=/var/www:${HOME}/public_html
↓PHPが実行できる場所を決定
docroot=/home
umask=0077
↓ファイルのデフォルトパーミッションを644にする
umask=0022
; Minimum UID
min_uid=100
↓実行できるユーザーを指定(この場合UID33以降のユーザー)
; Minimum UID
min_uid=033
; Minimum GID
min_gid=100
↓実行できるグループを指定(この場合UID33以降のグループ)
; Minimum GID
min_gid=033

このほかにも設定はあるけれど普通はこれでいいはず。なお、このままだとディレクトリのパーミッションによっては動かないことが。

そのときはSecurity optionsを変更する。セキュリティ的には好ましくないのでケースバイケースで。

次、suPHPでPHPが動くようにする。

vi /etc/apache2/mods-available/suphp.conf

<IfModule mod_suphp.c>
AddType application/x-httpd-suphp .php .php3 .php4 .php5 .phtml
suPHP_AddHandler application/x-httpd-suphp
suPHP_AddHandler x-suphp-cgi //SuEXECを利用しなくてもこれをいれるとCGIも実行権限がユーザーになる

suPHPを利用するとセッションエラーがでることがある。これは実行権限がApacheにないため。

この場合はセッションが保存されるディレクトリに権限を与えるか、

vi /etc/php5/apache2/php.ini

;session.save_path = "/tmp"
↓セッションディレクトリ変更
session.save_path = "/tmp"

とするといいらしい。

先ほどインストールしたhtscannerが動くように変更。

vi /etc/php5/apache2/php.ini

[htscanner]
extension="htscanner.so"
config_file=".htaccess"
; The fallback docroot when htscanner can't determine the current docroot default_docroot="/"
default_ttl=300
; Stop when an error occured in RINIT (no document root, cannot get path_translated,...)
stop_on_error = 0

これでOK。

suPHPはCGI版PHPで動くのでモジュール版PHPを外しておく。

a2dismod php5

suPHPは前述のようにCGI版PHPということで遅いそうなので、APCというPHPアクセラレータを入れる。

aptitude install php-apc

なお、/usr/share/doc/php-apc/apc.php.gz に入っているapc.phpから設定も可能。解凍したらエディタで開いてパスワードを変更し、ブラウザで開ける場所に置けばいい。

これでPHPの設定は終わり。

次の記事へ続く。