2009年10 月1日  |  Written by matsumoto  |  under Perl, web技術 Yahoo!ブックマークに登録    はてなブックマーク - [perl] Sledgeドキュメントまとめ

弊社では、Webアプリケーションの開発をperl/PHPで行っています。
特にperlでの開発の場合、ほとんどがmod_perlを使っています。

mod_perl上で動くフレームワークは Catalyst などが有名どころではありますが、使い慣れている点もあり長らく Sledgeを利用しています。

以下、Sledgeについての自分がよく見るサイトのまとめです。

Sledgeについて

SledgeのSessionストレージをMemcachedに持たせるモジュールです。必須。
永続化をするならTokyoTyrantでも使えると思う。

mod_perl

mod_perlリファレンス(mod_perl クイック・リファレンス (1))

mod_perl1 Apache1.3系のmod_perlのリファレンスです。
mod_perlベースでのWebアプリケーション開発時には必ず見ています。(というかAPIを覚えられないんですよね・・・)

Sledge関連の書籍

※以下はSledgeは載っていませんが、Sledgeを使うために必須となる部分が載っています。

TemplateToolkit

TTは Sledgeから扱う Templateモジュール自体の使い方と、Templateシステム内のシンタックス(表記法)の2つが混在しています。

Class::DBI

参考までにORマッパーのリンクも。
未だにCDBI?という感じではありますが、メンテナンスを続けているサイトもあります関係でこのような感じに。

2009年10 月2日  |  Written by matsumoto  |  under PHP Yahoo!ブックマークに登録    はてなブックマーク - [PHP] CentOS5.3 で PHP5.3をインストール(YUM風オプションで)

こんばんは松本です。

PHP5.3.0がリリースされてから3ヶ月経ちましたが、だいぶ使い勝手にも慣れて来ました。
PHP5.3.1でのBugFixの数もすごいですが、ガベージコレクトやstatic属性など、便利機能が多いですので是非。

自分は CentOS5 x86_64 で利用しているのですが、PHP5.3を導入するにあたり、ソースコードからインストールしています。
できるだけ、標準のPHP(5.1.6)のオプションを踏襲した形でPHP5.3をインストールしました。

既存のPHP(5.1.6)をアンインストール

yum remove php*

付随する php-common などのライブラリも全てアンインストールします。
自分の環境ではYUM経由のPHP関係のライブラリをフルフルに入れていましたので、以下がアンインストールされました。

アンインストールされたYUMライブラリ

php
php-bcmath
php-cli
php-common
php-dba
php-devel
php-eaccelerator
php-gd
php-imap
php-jpgraph-docs
php-ldap
php-mbstring
php-mysql
php-ncurses
php-odbc
php-pdo
php-pear
php-pear-Date
php-pear-File
php-pear-HTTP-Request
php-pear-MDB2
php-pear-MDB2-Driver-mysql
php-pear-Mail-Mime
php-pear-Net-Sieve
php-pear-Net-Socket
php-pear-Net-URL
php-pear-date
php-pear-db
php-pear-file
php-pecl-Fileinfo
php-pecl-memcache
php-pecl-session_mysql
php-pgsql
php-snmp
php-soap
php-xml
php-xmlrpc

必要なライブラリのインストール

phpをソースコードからインストールするための必要となるライブラリをyumでインストールします。
※レポジトリにはrpmforgeも入れています。
後からpeclのmemcacheも利用しますので、memcached自体もインストールしています。

yum -y install ncurses*
yum -y install gcc-c++
yum -y install flex
yum -y install libxml*
yum -y install gdbm-devel
yum -y install gd gd-devel freetype freetype libpng libmng* libtiff* libjpeg* libc-client* giflib*
yum -y install httpd httpd-devel
yum -y install pcre-devel
yum -y install unixODBC-devel
yum -y install net-snmp-devel
yum -y install openssl*
yum -y install bzip2*
yum -y install curl*
yum -y install gdbm*
yum -y install db4*
yum -y install gmp*
yum -y install libc-client*
yum -y install openldap*
yum -y install libmcrypt*
yum -y install mhash*
yum -y install mysql*
yum -y install freetds*
yum -y install aspell*
yum -y install readline*
yum -y install libtidy*
yum -y install libxslt*
yum -y install libtool*
yum -y install curl*
yum -y install memcache*

PHPのソースコードをダウンロード

php.net からPHPのソースコードをダウンロードします。ダウンロードは こちら から。

wget http://jp2.php.net/get/php-5.3.0.tar.gz/from/this/mirror
tar xvzf php-5.3.0.tar.gz

configure

一番面倒なconfigureですが、自分の環境では以下を通しました。
x86_64(64bit環境)の指定と yumでインストールしたapxsのパスあたりがキモです。

./configure \
--with-apxs2=/usr/sbin/apxs \
--build=x86_64-redhat-linux-gnu \
--host=x86_64-redhat-linux-gnu \
--target=x86_64-redhat-linux-gnu \
--program-prefix= \
--prefix=/usr \
--exec-prefix=/usr \
--bindir=/usr/bin \
--sbindir=/usr/sbin \
--sysconfdir=/etc \
--datadir=/usr/share \
--includedir=/usr/include \
--libdir=/usr/lib64 \
--libexecdir=/usr/libexec \
--localstatedir=/var \
--sharedstatedir=/usr/com \
--mandir=/usr/share/man \
--infodir=/usr/share/info \
--cache-file=../config.cache \
--with-libdir=lib64 \
--with-config-file-path=/etc \
--with-config-file-scan-dir=/etc/php.d \
--with-pic \
--with-bz2 \
--with-curl \
--with-exec-dir=/usr/bin \
--with-freetype-dir=/usr \
--with-png-dir=/usr \
--enable-gd-native-ttf \
--with-gettext \
--with-gmp \
--with-iconv \
--with-jpeg-dir=/usr \
--with-openssl \
--with-pcre-regex=/usr/local \
--with-zlib \
--with-layout=GNU \
--enable-exif \
--enable-ftp \
--enable-magic-quotes \
--enable-sockets \
--enable-sysvsem \
--enable-sysvshm \
--enable-sysvmsg \
--enable-wddx \
--enable-ucd-snmp-hack \
--enable-shmop \
--enable-calendar \
--with-libxml-dir=/usr \
--enable-pcntl \
--enable-mbstring \
--enable-mbregex \
--with-gd=shared \
--enable-bcmath=shared \
--enable-dba=shared \
--with-db4=/usr \
--with-xmlrpc=shared \
--with-mysql=/var/lib/mysql \
--with-mysql-sock=/var/lib/mysql/mysql.sock \
--with-mysqli=shared,/usr/bin/mysql_config \
--enable-dom=shared \
--enable-soap=shared \
--with-xsl=shared,/usr \
--enable-xmlreader=shared \
--enable-xmlwriter=shared \
--with-pdo-mysql=shared,/usr \
--enable-zip \
--enable-zend-multibyte \
--with-mcrypt

make ~ インストール

configureが通ったらmakeします。

sudo make install

php -v で以下のように正常にでればとりあえずOKです。

$ php -v
 PHP 5.3.0 (cli) (built: Jul 20 2009 20:59:23)
 Copyright (c) 1997-2009 The PHP Group
 Zend Engine v2.3.0, Copyright (c) 1998-2009 Zend Technologies

あとはphpinfoで詳細を確認します。

PECLをインストール

peclはコマンドからインストールします。
自分は以下のPECLを利用しています。

pecl install memcache
pecl install APC-3.1.3p1
pecl install imagick
pecl install tokyo_tyrant-beta
pecl install hidef-0.1.2
pecl install xdebug-2.1.0beta1

それぞれのPECLの設定方法については、また後述していきたいと思います。

いかがでしょうか。さらっとした覚え書きではありますが、お役に立てますと幸いです。

2009年10 月2日  |  Written by matsumoto  |  under web技術, サーバー Yahoo!ブックマークに登録    はてなブックマーク - [雑感] 最近のWeb技術周りの所感(なんでも)

久しぶりに雨ですが、こんにちは、松本です。

今年度が半分過ぎましたが、Web技術周りはトレンドの入れ替わりが激しいです。
なのですが、メンテナンスを継続している案件もあり、一概に新しいものだけを追い続けるわけにもいかない現状でして
古いものと新しいものが混在するのが世のDEVの方々の常だと思います。

新旧混ぜつつ、ここ最近でありんくのWeb技術まわりでトレンドであったり、特に注力していたりする事柄をつらつらと挙げてみます。

mod_perl

もう何年もお世話になっているモジュールです。適度に枯れていて、バージョンアップの頻度もぼちぼちといったところでいい感じに運用できます。
今まではずっとApache1.3系で利用してきているのですが、いい加減2.0系の方がいいのかな?と思いまして
1.3系と2.0系を比較してみました。

自分の比較テストでは1.3系、2.0系ともにほぼ同様の結果がでており、であれば

使い慣れた1.3系でまだまだ行ってもいいんじゃないかな?

という感じです。

絶版になってはしまいましたが、Apache拡張ガイド(/)は、mod_perlの日本語で解説された貴重な書籍です。(これも1.3系)

2.0系は洋書(Practical modp̲erl)ではあるようなのですが、まだ読んでないです。

perl

CentOS5のYUMに依存したUPDATEをするような体制を作っていますので、Perl自体の管理もYUMです。
なので、バージョンは5.8.8で、これを使い続けています。

もうperl 5.10.1もリリースされ、5.8.x/5.9.xからの移行も本格化しそうなのですが、
これはOSマター(というかyumに頼って)で行いたいと思っています。

perlORマッパー

メンテナンス対象のシステムではClass::DBIを継続しての利用が多いです。これはもうママにメンテを続けていく方向で。

新規に作る分に関してはDBIx::MoCo を使っています。
拙作なのですがDBIx::MoCo::Pagesetでページング処理もらくらくです。

perlテンプレートエンジン

Template-ToolKit(TT)

6Aがサービスされている、「Vox」もmod_perlで構成されているようなのですが、

TTの処理が全体の60%になっている

ということで、TTの重さに愕然とします。

なのですが・・・あまりの便利さ&融通の利きやすさゆえに、離れる事ができず、ずっとTTを利用する形になっています。

Text::MicroTempolate や Tenjin もちょっと調べつつあるのですが微妙です。
TTより数倍速いのは速いっぽいのですが、mod_perl環境ではコンパイルができるため、TTに比べ、そこまでの速度の差は出ませんでした。

TT便利すぎます。

PHP

PHPは、メンテの対象となっているサービスはママそのバージョンを継続なのですが
今後は基本、PHP5.3をベースに考えたいと思っています。

ORM共通の悩みの、リファレンスカウントがそのまま&メモリリークなどという部分を
gc_collect_cyclesでばっさりソリューションしてくれるのかしらという、淡い期待を持っています。

またPHPで特にやっかいなのが、YUMのPHPのバージョンが5.1.6であるという部分で、相当古いです。最低でも5.2系を使いたいところで。

こればっかりは仕方ないのでYUM風のオプションを持ったPHP5.3をソースコードからインストールしています。

アクセラレータ

PHP5.3に対応したアクセラレータを探して右往左往していたのですが、一応APCに落ち着いています。
eAcceleratorは、後から自分の環境ではいきなりhttpdがCoreDumpしたりしてやや不安定でした。

PHPのORマッパー

自作していますので、そのうちUPします

PHPのテンプレ

Smartyはやめました、もう素のPHP=テンプレ。

OS

CentOS

弊社ではデフォルトで利用するOSです。
Fedoraはバージョンアップが激しいので何とも。

そろそろ5.4が出るのでしょうか 基本ド安定で素晴らしすぎます。
あとはReadTekのNICのドライバをきちんとフォローアップしてくれるととてもうれしい感じで。

FreeBSD

昔はメインで利用していたOSです。

最近はもっぱらCentOSで、FreeBSDで作られたシステムはだんだん少なくなってはいます。

やっぱりJavaが動かないのがなんとも。<Solrまわりなど。

WindowsXP

別にサーバーで使っているわけではないのですが、クライアントPCはずっとXPです。
普段はFireFox+Firebugで、IETesterでIEみる感じで。

最近BootCampでWin7を立ち上げられれば移行したいなーという感じです。

ミドルウェア

MySQL

これもCentOSのyumマターで管理しているので 5.0.x系です。
DBIなどのライブラリ周りも一括で管理できる辺りが楽で・・・

Memcache

絶対使いましょう。

Memcache使いまくりです、使って損することはまったくありません。

Tokyo Tyrant

1200万件のレコードからLIKE検索で0.n秒という数値がでまして、今今で検証中です。
相当にすごいミドルウェアかと。

フロントエンド

CSS

YUI のCSSをベースに使っています。
特にRecet.cssは大変便利です

コーディング時はなるべくCSSスプライトを用いて、Apacheへの負荷を削減しています。

Clearfixはこちらのエントリの通りで、おおよそ同一の書き方が多いです。

JS

おおよそ jQuery を使っています。
jQueryは全てバージョンアップを行い最新の1.3.2を利用しています。

ドラッグ&ドロップなどのウィジェット機能もすべて jQueryのプラグインjQueryUI を利用しています。

JSはheadタグに入れるとオーバーヘッドが大きすぎるので、すべてHTMLの終了部分に近い場所に配置します。
=HTMLとCSSのレンダリングが終了してからJSを実行させるためです。


つらつらと書きすぎですが、現状の流行はこのような感じです。

ネットブックでのPCルーター作成 や LVS をネットブックで運用なども非常に突っ込んでみたい所存であります。

私はチーム・マイナス6%です