PHP最速フレームワークのPhalconですが、RPMパッケージを使ったシステムへのインストールは最速ではありません。Ubuntuの場合、パッケージがあってapt-getで一発インストールできるのですが、デフォルト/EPELリポジトリにはRHEL/CentOS/Fedora用のRPMパッケージはありません。そこでPhalconのRPMパッケージを自分で作る手順を紹介します。
このエントリはPhalcon PHP Advent Calendar 2014 2日目のエントリです。
追記:SRPMファイルのダウンロードリンクを忘れていました。次のURLでダウンロードできます。
私が普段使っている環境はビルドツールが全て揃っています。もし依存性(BuildRequires、Requires)などが足りなかったら教えてください :)
PhalconのRPMパッケージ
実はPhalconのRPMパッケージは私が作成して公開しています。SRPM(ソースコードのRPM)も公開しているのでカスタマイズも簡単です。今回、最新安定板の1.3.4でもビルドできるかFedora20 x86_64, CentOS 7, CentOS6 x86_64, CentOS6 i686で確認しました。今回は次のSRPMをベースに最新安定板のPhalconパッケージを作ってみます。以下のSRPMをダウンロードしてください。
- SRPMパッケージ (Phalcon 1.2.4 + devtool)
このSRPMパッケージはFedora19用として作りましたが、CentOS6/7、Fedora19/20でも利用できます。このパッケージは必要最小限に書いているので小く解りやすいと思います。
最新Phalcon RPMパッケージの作成
CentOSまたはFedoraで操作していることとします。上記のSRPMはPhalcon 1.2.4とそれ用のdevtoolがパッケージされています。これを現在安定板としてリリースされている最新バージョンにアップデートします。
RPMパッケージをビルドするにはrpm-buildパッケージが必要です。もしインストールされていないのであればインストールします。この他にコンパイラなどのビルドツール、開発用もdevelパッケージなどが色々必要になります。エラーメッセージを見て必要なパッケージをインストールしてください。
sudo yum install rpm-build
ダウンロードしたSRPMをrpmコマンドでインストールします。
rpm -ihv php-phalcon-1.2.4-1.fc19.src.rpm
SRPMをインストールすると ~/rpmbuild/SPECにphalconphp.specとRPMに必要なiniファイルを含めたソースファイルが~/rpmbuild/SOURESにインストールされます。 ディレクトリが無い、とエラーが表示される場合は必要なディレクトリをmkdirコマンドで作成してください。
このSRPMは他のRPMパッケージにならってphp-phalconというパッケージを作成します。通常はSPECファイル名とパッケージ名を同じ名前にします。最新版にアップデートすると同時にSPECファイル名も変えてしまいます。
mv ~/rpmbuild/SPEC/phalconphp.spec ~/rpmbuild/SPEC/php-phalcon.spec
このパッケージにはPhalconのgithub.comの2つソースアーカイブ を利用しています。
- https://github.com/phalcon/cphalcon (Phalcon本体 – PHPモジュール)
- https://github.com/phalcon/phalcon-devtools (devtool – phalconコマンド)
Phalconリポジトリのmasterブランチには最新安定板が入っています。ここからmasterブランチのZIPアーカイブをダウンロードします。ダウンロード用のボタンが上記2つリポジトリの右側にあります。
- cphalcon-master.zip
- phalcon-devtools-master.zip
この二つのZIPファイルを~/rpmbuild/SOURCESにコピーします。既にSRPMパッケージで同じファイルがインストールされているので上書きします。
cp -f ~/Download/*phalcon*master.zip ~/rpmbuild/SOURCES/
これだけで最新安定板のPhalconがビルドできるようになります。RPMのバージョンを更新しないと、バージョン番号が更新されないのでビルド前に更新します。
Name: php-phalcon Version: 1.3.4 Release: 1%{?dist} Summary: PhalconPHP is a web framework delivered as a C extension
執筆時の安定板は1.3.4なので、Version: 1.3.4としました。できあがったRPMパッケージのバージョンが間違っているとややこしいので適切なバージョンに設定してください。 必要であれば下の方にある%changelogセクションにチェンジログを記録してください。
これでビルドできます。rpmbuildコマンドでビルドします。
[yohgaki@dev ~]$ rpmbuild -ba rpmbuild/SPECS/php-phalcon.spec 実行中(%prep): /bin/sh -e /var/tmp/rpm-tmp.6j1O75 + umask 022 + cd /home/yohgaki/rpmbuild/BUILD + cd /home/yohgaki/rpmbuild/BUILD + rm -rf cphalcon-master + /usr/bin/unzip -qq /home/yohgaki/rpmbuild/SOURCES/cphalcon-master.zip + STATUS=0 + '[' 0 -ne 0 ']' + cd cphalcon-master + /usr/bin/chmod -Rf a+rX,u+w,g-w,o-w . + unzip /home/yohgaki/rpmbuild/SOURCES/phalcon-devtools-master.zip Archive: /home/yohgaki/rpmbuild/SOURCES/phalcon-devtools-master.zip (省略)
ビルド環境が整っていない場合、*-develパッケージなどビルドに必要なパッケージ無いなどのエラーが発生します。必要なパッケージを全て入れるとビルドできるはずです。できない場合はコメントを下さい。
出来上がったRPMパッケージをインストールするとPhalconを直ぐに利用できる状態になっています!httpdを再起動します。
sudo service httpd restart
phpinfo()で確認します。
無事、1.2.4から1.3.4に更新されています。Scaffoldingに利用するphalconコマンドも直ぐに使えます。
[yohgaki@dev ~]$ which phalcon /usr/bin/phalcon [yohgaki@dev ~]$ phalcon Phalcon DevTools (1.3.4) Available commands: commands (alias of: list, enumerate) controller (alias of: create-controller) model (alias of: create-model) all-models (alias of: create-all-models) project (alias of: create-project) scaffold migration webtools
まとめ
RPMパッケージが無いから使いずらいと感じていた方も自分で簡単にRPMパッケージが作れることが分かったと思います。RPMパッケージを作ったり、カスタマイズしたことが無い方も是非チャレンジしてみてください。そしてRPM系のディストリビューションでも、ぜひPhalconを使ってみてください。
今回作ったspecファイルはGistに入れてあります。