携帯ページで使うapacheのリダイレクト

携帯では、temporary moved(302)を返すべき!

moved permanent (301)を返すと、DoCoMoで警告がでちゃいます。auでは出ないことを確認しました。

警告を出さないようにするためには、Found(302)を返します。RedirectディレクティブのデフォルトがFoundなので、以下のように書けば問題ないです。

Redirect /service http://foo2.bar.com/service

以下でも同義

Redirect temp /service http://foo2.bar.com/service

mod_rewriteだと以下のように

RewriteRule ^/service/(.*) http://foo2.bar.com/service/$1 [R=302,L]

Read more

複数台で運用しているサーバのアクセスログを1つに統合する

複数台のフロントエンドサーバでapacheが動いている場合を想定します。

その場合、アクセスログが複数のサーバにまたがってしまいます。

こんなかんじ。

  • web-01.access-log.20071130
  • web-02.access-log.20071130
  • web-03.access-log.20071130

webalizerやawstatsといったアクセスログ解析ソフトではこのファイルの状態では解析できない。

なぜなら、webalizerやawstatsのデフォルトでは1つのファイルのみを入力として受け付け、時系列順に記録されていなければならない。

この問題を解決するスクリプトを発見しました。awstatsの中に入っているlogresolvemerge.plというperlスクリプトです。

使い方は超簡単。引数に統合したいファイルを指定して実行すると、標準出力に時系列順にそろったレコードが出力される。

例:

% perl logresolvemerge.pl /path/to/log/*access.log.20071130|more

引数にgz圧縮されたファイルを指定してもちゃんと動きます。至れり尽くせりなスクリプト。

★おまけ情報★
ある日まで、commonフォーマットでアクセスログを取っていて、ある時点からcombinedフォーマットでログを取りだした場合、1つのアクセスログの中に2種類のフォーマットのログが混入してしまう。

そこで見つけたのがこの方法。commonフォーマットをcombinedフォーマットにする方法。
http://www.trisweb.com/archives/2007/02/15/convert-apache-common-logs-to-combined-logs/

3回シェルのコマンドを実行すればできちゃう!CUIはすばらしい。

参照:

http://awstats.sourceforge.net/

Compiling subversion from source distribution.

% ./configure --with-apr=/usr/local/apache2   --with-apr-util=/usr/local/apache2 --with-ssl
% make
# make install

subversion-1.4.5 on linux CentOS 4.4.

WebからPHPのPEARをインストール

新規案件のサーバをセットアップしているときに、pearでライブラリを入れていたら、
「Webのインストーラあるよ」と表示されたからちょっと試しに使ってみた。

PEAR: Optional feature webinstaller available (PEAR’s web-based installer)
PEAR: Optional feature gtkinstaller available (PEAR’s PHP-GTK-based installer)
PEAR: Optional feature gtk2installer available (PEAR’s PHP-GTK2-based installer)
To install use “pear install pear/PEAR#featurename”

初期設定はこんな感じ。ホームディレクトリは /home/matsu/ ね。

cd public_html
mkdir go-pear
cd go-pear
wget http://pear.php.net/go-pear
mv go-pear go-pear.php
chmod 777 /home/matsu/public_html/go-pear

go-pear.phpにアクセスしたところ。


1 start up, originally uploaded by supermatsubokkuri.

Read more

PHPのコンパイルオプションに –disable-allをつけて、不要なモジュールをインストールしないときのベンチマーク

PHP5.2.3の configureオプションである–disable-allを指定した場合にどの程度パフォーマンスに影響するかを実験する。
–disable-allとは、PHPをインストールする際にデフォルトでインストールされる機能をインストールしないようにするオプション。デフォルトでは不要なも機能まで入ってしまうため、無駄が発生する場合がある。例えば、XML,JSON、filter、PDOなどである。

PHP実験環境

  • 共通環境
    • ゲスト:CentOS release 4.4 (Final) (on Vmware server 1.0.2)
    • ホスト:Windows XP Professional
    • CPU: Intel Core2 Duo 6600 2.4G
    • Apache:2.2.4
      • ./configure –prefix=/usr/local/apache2 –enable-ssl –enable-rewrite –enable-so
  • 環境1
    • ./configure \
      –enable-mbstring \
      –enable-soap \
      –enable-zend-multibyte \
      –with-apxs2=/usr/local/apache2/bin/apxs \
      –with-mysql=/usr/local/mysql \
      –with-pdo-mysql=/usr/local/mysql \
      –with-curl \
      –with-curlwrappers \
      –with-gd \
      –with-jpeg-dir=/usr/lib \
      –with-png-dir=/usr/lib \
      –with-zlib-dir=/usr/lib \
      –with-mcrypt
  • 環境2
    • ./configure \
      –enable-mbstring \
      –enable-soap \
      –enable-zend-multibyte \
      –with-apxs2=/usr/local/apache2/bin/apxs \
      –with-mysql=/usr/local/mysql \
      –with-pdo-mysql=/usr/local/mysql \
      –with-curl \
      –with-curlwrappers \
      –with-gd \
      –with-jpeg-dir=/usr/lib \
      –with-png-dir=/usr/lib \
      –with-zlib-dir=/usr/lib \
      –with-mcrypt \
      –enable-libxml \
      –disable-all
  • 環境1には入っていて、環境2には入っていないモジュール
    • ctype
    • dom
    • filter
    • hash
    • iconv
    • json
    • pcre
    • PDO
    • pdo_mysql
    • pdo_sqlite
    • posix
    • session
    • SimpleXML
    • SPL
    • SQLite
    • tokenizer
    • xml
    • xmlreader
    • xmlwriter

結果

ファイルサイズ
環境1 環境2 環境2/環境1
(100%以下なら小さい)
libphp5.soのファイルサイズ(B) 17268191 11998616 69%
/usr/local/bin/phpのファイルサイズ(B) 16307443 11306924 69%
apache起動直後のメインプロセスVSZ (kB) 19572 17332 89%
apache起動直後のサブプロセスVSZ (kB) 19704 17468 89%
コマンドラインベンチマーク

コマンドラインにてfunction callの速度を計測。PHPのソースコードに付属している ./Zend/bench.php を利用。 5回実行した結果の平均を記載。

% php ./Zend/bench.php|awk ‘{print $2}’

環境1 環境2 環境2/環境1
(100%以下なら環境1が高速)
Webベンチマーク

Webでアクセスした際のパフォーマンス測定。コマンドラインと同じスクリプトを利用

環境1 環境2 環境2/環境1
(100%以下なら環境1が高速)

結論

Webで利用した場合は、環境1と環境2において差異は無さそう。

ファイル容量がモジュールを削減した分、20%程度減っているため、プロセス起動が頻繁に発生する場合に環境2はアドバンテージがある。

環境1
php env1

環境2
php env2

configure: error: Cannot use an external APR-util with the bundled APR

apache 2.2.4 へアップグレードしようとしたら、aprが古いってエラーだされた。

checking for APR-util… yes
configure: error: Cannot use an external APR-util with the bundled APR

解決するためには、いつものconfigureに–with-included-apr を追加すればOK!

こんな感じで。

./configure --enable-rewrite --enable-so --enable-ssl --with-mpm=prefork --with-included-apr

claraのvpsが遅い

物理マシンのCPUがほとんどidleなのに全然CPUを割り当ててくれてない。
そして、遅い。 PHPのコンパイルに20分かかる。

追記:やっぱり、おそい。おそすぎる。ぜんぜんCPUリソースを割り当ててくれていない。
そして、プロセス数の最大が60とか70だと全然足りない。

daemontoolsでデーモンを管理し出すと軽いプロセスが1サービスにつき4つできちゃうし、
Apache,PHP,MySQLを入れたらもう60プロセス。もちろんいらないサービスはuninstallしまくり。

なので、claraのVPSはやめて他のを探した。

条件は、プロセス数が100以上。CPUリソースの割り当てが500MHz程度。

そしたら、@YMCのVPSのホスティングが一番よかった。YMCでは、サーバのプロセス数の上限なし、CPUリソース300MHz保証。
CPUに空きがあったら全部割り当ててくれる。この情報はWebでは公開されておらず、電話で問い合わせた。

YMCは費用対パフォーマンスは最高!!!!

レンタルサーバーもすすんだなー。個人で1つのホストを借りられちゃう。

RPM

RPMって馬鹿だなぁ。

# apt-get remove perl
パッケージリストを読みこんでいます… 完了
依存情報ツリーを作成しています… 完了
以下のパッケージが削除されます:
MHonArc WMSoundSet WindowMaker analog apache apache-devel apache-manual autoconf automake bind bind-devel control-center
control-center-devel cvs fetchmail fetchmailconf fvwm2 gmc gnome-applets gnome-core gnome-core-devel gnome-utils groff
helptool im jman_pages kakasi kernel-source kernel-utils latex2html libpcap libtool libungif-progs magicdev man mc
metamail mew mkkpkg mod_ssl namazu namazu_JFdb namazu_JMANdb namazu_VineDocsdb ncurses-devel ntp openssh openssh-askpass
openssh-askpass-gnome openssh-clients openssh-server openssl-devel postgresql postgresql-devel postgresql-jdbc
postgresql-odbc postgresql-perl postgresql-python postgresql-server postgresql-tcl postgresql-test postgresql-tk procinfo
proftpd pygnome rail rpm-build samba samba-client sawfish-gnome sharutils svgalib svgalib-devel tcpdump uucp w3m wdm
wmakerconf xchat xlockmore xmms-gnome xscreensaver yenapp zsh

Perl shell

メモ
Perl CPAN shell

 % perl -MCPAN -e shell
 % perl -MCPAN -e 'install("Bundle::Apache")'

こんな風にもできるらしい。

 

リンク

自分の他サイト