祝!!Fedora 11リリース
全てのFedora開発者およびコミュニティメンバの皆様に、感謝と敬意を込めて!!
Congratulations!!
Apacheのレスポンスタイムをログ記録する
httpd.confの以下の行を変更
;; 実際は1行です LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined ;; %Dを追記 LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %D" combined
これで、/var/log/httpd/access_logなんかを見てみると、処理時間が記録されている。
「%D」だとマイクロ秒(Apache2.x以上)単位、「%T」だと秒単位らしい。
ボトルネックを見つけるのに使えたりするのかな??
ちなみに、「マイクロ秒」は100万分の1秒(・x・ ).o0○
Ubuntuのapacheでmod_rewriteを有効にする
まず、以下のコマンドを実行
$ sudo a2enmod rewrite
次に、/etc/apache2/sites-available/defaultの
<Directory /var/www/> Options Indexes FollowSymLinks MultiViews AllowOverride None -> Allに変更 Order allow,deny allow from all </Directory>
これでOK。最後にApacheを再起動。
$ sudo apache2ctl restart
最初から有効になってると思い込んで、スッカリはまっちゃった(・x・ ).o0○
FirePHP使い方メモ
まず、pearでインストール。本家からダウンロードでも可。
;; チャンネルを追加 # pear channel-discover pear.firephp.org # pear install firephp/FirePHPCore
使い方は、3種類。
1.スタティックに
<?php require_once 'FirePHPCore/fb.php'; $array = array(10, 20, 30); FB::log($array);
2.オブジェクト指向で
<?php require_once 'FirePHPCore/FirePHP.class.php'; $firephp = FirePHP::getInstance(TRUE); $array = array(10, 20, 30); $firephp->log($array);
3.関数として
<?php require_once 'FirePHP/fb.php'; $array = array(10, 20, 30); fb($array, FirePHP::LOG);
他にも色々出来るらしい。
注意点として、php.iniでoutput_bufferingが有効になってない場合は、コード内でob_start()を使う必要アリ。
それにしても便利だな〜(・x・ ).o0○
ユーザディレクトリでCGI実行時に「500」エラー
Perlのパスも問題ない。
文法やtypoも問題ない。
なのに、http://example.com/~user/test.cgiにアクセスすると、無情の「500 Internal Server Error」・・・。
DocRootの/var/www/html下では問題なく動くので、httpd.confの設定でも無さそう。
原因はコイツ
# apachectl -V [中略] -D SUEXEC_BIN="/usr/sbin/suexec"
suEXECというのは、こういうものらしい。
suEXEC 機能により、Apache ユーザは Web サーバを実行しているユーザ ID とは 異なるユーザ ID で CGI プログラムや SSI プログラムを実行することができます。CGI プログラムまたは SSI プログラムを実行する場合、通常は web サーバと同じユーザで実行されます。
適切に使用すると、この機能によりユーザが個別の CGI や SSI プログラムを開発し実行することで生じるセキュリティ上の危険を、 かなり減らすことができます。しかし、suEXEC の設定が不適切だと、 多くの問題が生じ、あなたのコンピュータに新しいセキュリティホールを 作ってしまう可能性があります。あなたが setuid root されたプログラムと、それらから生じるセキュリティ上の問題の管理に 詳しくないようなら、suEXEC の使用を検討しないように強く推奨します。
…え〜と、通常Apache(nobody)権限で実行されるCGIを、別のユーザ(この場合、public_htmlを公開しているユーザ?)権限で実行する事が出来る、という事かな??
よく分からない場合は使うな!!との事なので、バイナリをリネームしてしまえば良いらしい。
# mv /usr/sbin/suexec /usr/sbin/suexec.org
LAN外に公開予定の無いサーバだから、これで問題ないんじゃないかな〜(・x・ ).o0○
ユーザディレクトリ公開時に「403 Forbidden」
httpd.confに
;; コメントアウト UserDir disable →#UserDir disable ;; 追記 UserDir public_html
としてApacheを再起動。適当にindex.htmlファイルとかを作って、http://example.com/~user/にアクセスすると403が返ってくる。
原因はコイツ
# ls -l /home drwx------ 4 user user 4096 6月 2 11:00 user
なので、
# chmod 0711 /home/user
として再度アクセスしたら無事表示。
またハマっちゃった(・x・ ).o0○