Archive for the ‘PHP’ Category
by cmf@ohtan管理人
PHP5.3.2がリリースされてたからずっとRPMのビルドに四苦八苦しておりましたが・・・
ようやく作ることができましたヽ(´ー`)ノ
いつもなら
1.php5-5.3.1-1vl5.src.rpmをダウンロードしてきてインストール
> rpm -ivh php5-5.3.1-1vl5.src.rpm
2.php-5.3.2.tar.bz2をダウンロードしてきてphp-5.3.1.tar.bz2と差し替え
> cd /usr/src/vine/SOUCES
> wget http://jp2.php.net/get/php-5.3.2.tar.bz2/from/jp.php.net/mirror
> rm -f php-5.3.1.tar.bz2
3.SPECファイルのバージョンを5.3.2に修正
> vi /usr/src/vine/SPECS/php53.spec
4.ビルド
> rpmbuild -ba --clean /usr/src/vine/SPECS/php53.spec
5.アップグレード
> rpm -Uvh php5-5.3.2-1vl5.i386.rpm ・・・
で完了なのですが、今回もビルドは一応完了するもののphp5-5.3.2-1vl5.i386.rpmに含まれる依存関係が1箇所おかしなことになるのです(´・ω・`)
> rpm -qpR php5-5.3.2-1vl5.i386.rpm
alternatives
php5-pear = 5.3.2-1vl5
rpmlib(VersionedDependencies) <= 3.0.3-1
/bin/sh
/bin/sh
/bin/sh
rpmlib(PayloadFilesHavePrefix) <= 4.0-1
rpmlib(CompressedFileNames) <= 3.0.4-1
/usr/src/vine/BUILD/php-5.3.2/build-cgi/sapi/cli/php
libbz2.so.1
・
・
・
( ´゚д゚`)???
悩み続けること2日・・・どうやら最後に依存関係を勝手に追加してくださる”find-requires”が悪さしているというとこまではわかったのですが、これをどうやって正常な値(/usr/bin/php5)に修正すればよいのやら・・・
試行錯誤した結果、最終的にspecファイルに下記を追加してphp-5.3.2のrpmビルド用”find-requires”を作って正常な値に修正するという荒業で凌ぎました(゚Д゚)
--- php53.spec 2010-04-28 23:03:00.000000000 +0900
+++ php53.spec.org 2010-04-28 23:02:38.000000000 +0900
@@ -341,6 +341,10 @@
#==========================
%prep
+echo "%{__find_requires} | sed -e 's|${RPM_BUILD_DIR}/%{srcname}/build-cgi/sapi/cli/php|%{_bindir}/php5|g'" > %{_tmppath}/find-requires-php
+chmod +x %{_tmppath}/find-requires-php
+%define __find_requires %{_tmppath}/find-requires-php
+
%setup -q -n %{srcname}
%patch33 -p1 -b .phpincludedir
↑は/var/tmpにfind-requires-phpを作って”find-requires”として認識させております。
find-requires-phpは単純に”find-requires”の結果から/usr/src/vine/BUILD/php-5.3.2/build-cgi/sapi/cli/phpを/usr/bin/php5に置換しているだけです。
結果以下のようにちゃんと修正されました
> rpm -qpR php5-5.3.2-1vl5.i386.rpm
alternatives
php5-pear = 5.3.2-1vl5
rpmlib(VersionedDependencies) <= 3.0.3-1
/bin/sh
/bin/sh
/bin/sh
rpmlib(PayloadFilesHavePrefix) <= 4.0-1
rpmlib(CompressedFileNames) <= 3.0.4-1
/usr/bin/php5
libbz2.so.1
・
・
・
よかったよかった・゚・(ノД`)・゚・
by cmf@ohtan管理人
というわけでVine5用のRPMをビルドしてみたのですが・・・
ビルドは完了するのですがなぜかアップグレードでコケる(´・ω・`)
CLIだけうまくコンパイルできていないっぽくてBUILDディレクトリにCLIがないよ!
的な意味不明なエラーがでるのです(´・ω・`)
う~ん・・・もうちょっと頑張ってみよう・・・
by cmf@ohtan管理人
会社で小規模なBTS(バグトラッキングシステム)が欲しいなぁと思いいろいろ探し回っていたところ「OpenTask」というBSTを見つけました。
早速ダウンロードして、設置してみた感じ、ところどころバグがあったりしてう~ん・・・という感じでした。
でも用途としてはこれが1番マッチしてるしシンプルで使いやすいのでこれで諦めるのはもったいない!!
ということで自力でバグをなおしたり、削除機能がないので削除機能を追加してみたりいろいろゴニョゴニョしてなんとか実用Lvに達してきました( ´ー`)
BSDライセンスらしいので、もしかしたら改造版を公開するかもしれません(=´ω`=)
by cmf@ohtan管理人
APC(Alternatice PHP Cache)を入れてみたの続きです。
ちゃんと統計をとってみたところ、何も入れない方が早いといういことが判明(´・ω・`)
やはり、suphpとの共存は無理のようです・・・
suphpは毎回php-cgiを呼び出しているから、その都度キャッシュが初期化されているんじゃないかと・・・・いう気がします。
今度はapacheのキャッシュ機能を使ってみようかな( ´ー`)
※追記
APCの効果が得られないのはこのブログだけだったみたいです。
たぶんDB周りが原因でキャッシュの恩恵を受けれてないもよう。
phpinfo();だけのページをabで計測したらちゃんと早くなってました( ´ー`)
たぶんXCacheも同じ理由のような気がします。
by cmf@ohtan管理人
xcacheを入れてみたであまり効果が体感できなかったので、今回はAPC(Alternatice PHP Cache)を入れてみました。
やはり体感ではあまり分かりませんでした・・・(´・ω・`)
という訳でapacheベンチ(ab)を利用して数値で調べてみたところ、何も無いよりは若干APCの方が早くなっていました(゚∀゚)
XCacheはなぜか何も無い状態よりも悪い結果になりました(やはりsuphpとの共存ができないのだろうか・・・)
ということで、APCの採用を決定!!( ´ー`)
Vine5.0で作ったRPM/SRC.RPM集にRPMとSRC.RPMをアップしましたので欲しい方はどうぞ(ご利用は自己責任で)
ついでにほとんどデフォで使っているMySQLのパフォーマンスチューニングも行いました。
my.cnfに以下を追加しました。
max_connections=200
thread_cache=200
query_cache_size=16M
結構早くなった気がします( ´ー`)
by cmf@ohtan管理人
自宅のメインサーバー機の方もやっとVine5へのアップグレードが完了しました( ´ー`)
では次のステップ!ということで次はPHPの高速化をやってみようということで・・・
(※ウチのサーバーはsuphpを使っているのでPHPのパフォーマンスあまりよろしくないのです。)
まずはeAcceleratorを試してみようと思ったのですが、コンパイル途中(RPMの作成途中で)でエラーとなってしまったので断念(´・ω・`)
仕方ないので次にXCacheを試してみました。
こちらはコンパイル(RPMの作成)も完了しインストールも無事完了。
ちゃんとXCacheが機能しているのかがイマイチよく分からなかったので結局アンインストールしちゃいました( ゚Д゚)
(※そもそもsuphpとxcacheの共存でできるのか???)
つぎはAPCを試してみようと思う( ´ー`)
XCacheのRPMをアップしましたので欲しい方はVine5.0で作ったRPM/SRC.RPM集からどうぞ(要自己責任です)
あ、あと2009年9月のスパム対策統計をアップしました。
Postfix単体で99.95%
Postfix+Procmailで100%
でした。
by cmf@ohtan管理人
RoundCubeやWordPressで問題があった為、php5.3へのアップグレードを躊躇していたのですが、
再チャレンジということで思い切ってアップグレードしてみました( ´ー`)
まずWordPressのwarningの問題はphp.iniで
date.timezone = "Asia/Tokyo"
を明示的に指定してあげれば良いというのは前々から調査済みだったので解決!
さてさて最大の問題であったRoundCubeの方ですが、
単純にphp5.3にアップグレードしただけだと例によってDEPRECATEDがいろいろ出ます。
以前調べた時にphp.iniに
error_reporting = E_ALL & ~E_DEPRECATED
としてあげればDEPRECATEDはでなくなるということは知っていたのでこれを設定(最初から設定されてた)
んが、これでもDEPRECATEDが出力されてしまう・・・。・゚・(ノд`)・゚・。
というところまでで前回は諦めました。
今回はまずRoundCube Webmail の日本語化様よりroundcubemail-0.3-stableを頂戴してきてRoundCubeそのものをアップグレード。
これでもDEPRECATEDは消えない・・・(´・ω・`)
次にじゃーなんで「E_ALL & ~E_DEPRECATED」を指定してもDEPRECATEDが出てしまうのかというところを調査。
結論としてsuPHPを使っていることが原因のようなのです┐(´д`)┌
RoundCubeは設置時に直下のディレクトリに.htaccessを作成しphp_flagやphp_valueを設定します。
ところがsuPHPは.htaccessのphp_valueを認識できません。
どうもこれがダメなんじゃないか???というところに行き着きついたのです。
じゃーどうすればよいか!ということですがこれは結構簡単でphpが動作しているディレクトリ配下に以下のような.htaccessを置いてphp.iniを認識させればよいのです。
suPHP_ConfigPath /path/public_html/RoundCube
<Files php.ini>
order allow,deny
deny from all
</Files>
※/path/public_html/RoundCube直下にphp.iniをコピーしてRoundCube設置時に.htaccessに指定してあったphp_value等をphp.iniに反映させます。
今度はDEPRECATEDが消えましたヽ(´ー`)ノ
とりあえずは問題なさそうですが、もう少し様子をみる必要はありそうです( ´ー`)
by cmf@ohtan管理人
2.8.1からあまり日が経ってないのにリリースが早いなぁ~と思っていたのですが、どうやらXSSの脆弱性が見つかったっぽい?
それはそうと以前のことがあってPHP5.3にどのタイミングでアップグレードしようかいまだに悩んでいます・・・( ´ー`)
気合いを入れて自力で問題箇所を修正するかどうするか・・・
by cmf@ohtan管理人
メインサーバーと予備サーバーの両方にPHP5.3を適用してみたのですが、WordPressでWarningがでたり、RoundCubeでエラーがでて動かなかったりと何かと問題アリアリだったので結局もとの5.2.10に戻しました(´・ω・`)
メインサーバー(Vine4.2)の方は以前作ったRPMでアップグレード。(そしてダウングレード)
予備サーバー(CentOS5.3)の方はremi-testをリポジトリに追加してあるのでそちらからyumでアップグレード。(そしてダウングレード)
ちなみにCentOSのyumリポジトリにrpmforgeとremi、remi-testを追加する方法は以下のとおり
wget http://packages.sw.be/rpmforge-release/rpmforge-release-0.3.6-1.el5.rf.i386.rpm
rpm --import http://dag.wieers.com/rpm/packages/RPM-GPG-KEY.dag.txt
rpm -ivh rpmforge-release-0.3.6-1.el5.rf.i386.rpm
wget http://rpms.famillecollet.com/remi-enterprise.repo
rpm --import http://rpms.famillecollet.com/RPM-GPG-KEY-remi
cd /etc/yum.repos.d/
vi CentOS-Base.repo
[base]
name=CentOS-$releasever - Base
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os&cc=jp
#baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
baseurl=http://ftp.riken.jp/Linux/centos/$releasever/os/$basearch/
gpgcheck=1
#gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5
gpgkey=http://ftp.riken.jp/Linux/centos/RPM-GPG-KEY-CentOS-5
priority=2
#released updates
[updates]
name=CentOS-$releasever - Updates
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates&cc=jp
#baseurl=http://mirror.centos.org/centos/$releasever/updates/$basearch/
baseurl=http://ftp.riken.jp/Linux/centos/$releasever/updates/$basearch/
gpgcheck=1
#gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5
gpgkey=http://ftp.riken.jp/Linux/centos/RPM-GPG-KEY-CentOS-5
priority=2
#packages used/produced in the build but not released
[addons]
name=CentOS-$releasever - Addons
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=addons&cc=jp
#baseurl=http://mirror.centos.org/centos/$releasever/addons/$basearch/
baseurl=http://ftp.riken.jp/Linux/centos/$releasever/addons/$basearch/
gpgcheck=1
#gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5
gpgkey=http://ftp.riken.jp/Linux/centos/RPM-GPG-KEY-CentOS-5
priority=2
#additional packages that may be useful
[extras]
name=CentOS-$releasever - Extras
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=extras&cc=jp
#baseurl=http://mirror.centos.org/centos/$releasever/extras/$basearch/
baseurl=http://ftp.riken.jp/Linux/centos/$releasever/extras/$basearch/
gpgcheck=1
#gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5
gpgkey=http://ftp.riken.jp/Linux/centos/RPM-GPG-KEY-CentOS-5
priority=2
#additional packages that extend functionality of existing packages
[centosplus]
name=CentOS-$releasever - Plus
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=centosplus&cc=jp
#baseurl=http://mirror.centos.org/centos/$releasever/centosplus/$basearch/
baseurl=http://ftp.riken.jp/Linux/centos/$releasever/centosplus/$basearch/
gpgcheck=1
enabled=0
#gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5
gpgkey=http://ftp.riken.jp/Linux/centos/RPM-GPG-KEY-CentOS-5
priority=3
vi rpmforge.repo
[rpmforge]
name = Red Hat Enterprise $releasever - RPMforge.net - dag
#baseurl = http://apt.sw.be/redhat/el5/en/$basearch/dag
mirrorlist = http://apt.sw.be/redhat/el5/en/mirrors-rpmforge
#mirrorlist = file:///etc/yum.repos.d/mirrors-rpmforge
enabled = 0
protect = 0
gpgkey = file:///etc/pki/rpm-gpg/RPM-GPG-KEY-rpmforge-dag
gpgcheck = 1
priority=1
vi remi-enterprise.repo
[remi]
name=Les RPM de remi pour Enterpise Linux $releasever - $basearch
baseurl=http://rpms.famillecollet.com/el$releasever.$basearch/
# http://remi.collet.free.fr/rpms/el$releasever.$basearch/
enabled=0
gpgcheck=1
gpgkey=http://rpms.famillecollet.com/RPM-GPG-KEY-remi
failovermethod=priority
priority=1
[remi-test]
name=Les RPM de remi en test pour Enterpise Linux $releasever - $basearch
baseurl=http://rpms.famillecollet.com/test-el$releasever.$basearch/
# http://remi.collet.free.fr/rpms/test-el$releasever.$basearch/
# http://iut-info.univ-reims.fr/remirpms/test-el$releasever.$basearch/
enabled=0
gpgcheck=1
gpgkey=http://rpms.famillecollet.com/RPM-GPG-KEY-remi
priority=1
使用する際は以下ようにオプションを追加
yum --enablerepo=remi,remi-test,rpmforge check-update
yum --enablerepo=remi,remi-test,rpmforge update
by cmf@ohtan管理人
ということでRPM、SRC.RPMを作ってみました。
http://cmf.ohtanz.com/download/vine4.2/php5/5.3.0/
※apache1.3系のモジュールは除外しております。
そして私はまだアップグレードしてません・・・(゚Д゚)
ご利用は自己責任でお願いします( ´ー`)