読者です 読者をやめる 読者になる 読者になる

Pandora Pocket

MS系の備忘録と日記。三日坊主。

VPSでUbuntuサーバー 未完成備忘録 其の三 -PHP設定、suPHPの導入-

f:id:Ovis:20061014153348j:plain

 

前回で基本的な設定は終了・・・というかそのまま使っても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をインストール。

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

 

aptitude install -y libapache2-mod-suphp

pecl install htscanner channel://pecl.php.net/htscanner-0.9.0

 

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

suPHPは.htaccessphp_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はCGIPHPで動くのでモジュール版PHPを外しておく。

 

a2dismod php5

 

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

 

aptitude install php-apc

 

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

 

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

 

 

次の記事へ続く。