Amimoto AMIのEC2にphpenvを使ってphpをインストールし直す
phpenv + php-buildでMagentoのデバッグをしやすく
Magento本体、エクステンションはWordpressと比べてもphpバージョンに依存することが多く、導入時には複数のphpバージョンでテストする必要がある。
いちいちインスタンスを建てるのは面倒なので、ひとつのインスタンスでテストできるようにphpenvとphp-buildでバージョンを切り替えられるようにする。
更新状況
随時更新予定!
- 2014/03/02 23:07 最初の投稿
アジェンダ
環境
サーバー
- AWS EC2 Tokyo Region
- t1.micro Instance
- AMIMOTO.AMI
- Amazon Linux OS
- nginx version: nginx/1.4.3
ソフトウェア
- Magento Community Edition(CE) 1.8.0.0
- WordPressを同サーバーに共存
0.前準備
Amimoto AMIでAmazon Linux OSインスタンスを立ち上げてることを前提とする。
既にphp5.4がインストールされているので、まずはこれをアンインストールするところからはじめる。
なお、phpビルドするときにCompilingでハイパー時間かかるので、一時的にインスタンスタイプを上げておいたほうが良いかもしれない。
1.php5.4のアンインストール
yum erase php*
yumを使って、サーバーにインストールされているphp関連のパッケージを削除。
アスタリスクを使って、php全てをヒットさせる。
2.phpenvのインストール
curl https://raw.github.com/CHH/phpenv/master/bin/phpenv-install.sh | bash
自動でgitからダウンロード、インストールされる。
終了時のメッセージにある通り、.bashrcまたは.zshrcの末尾に以下の2行を追加
vi ~/.bashrc
PATH=$HOME/.phpenv/bin:$PATH # Add phpenv to PATH for scripting
eval "$(phpenv init -)"
3.php-buildのインストール
mkdir $HOME/.phpenv/plugins
cd $HOME/.phpenv/plugins
git clone git://github.com/CHH/php-build.git
$HOME/.phpenv/plugins以下にphp-buildフォルダを置くだけで、php-buildプラグインが使用可能になる。
4.コンパイラをインストール
php-buildでビルドするとき、gccツールを使ってインストールする。
Amimoto AMIにはgccは標準でインストールされていないので、yumを使ってインストールしておく。
yum install gcc
5.phpをビルドするときに依存するパッケージをインストール
yum --enablerepo=epel install re2c libmcrypt libmcrypt-devel
yum install libxml2-devel bison bison-devel openssl-devel curl-devel libjpeg-devel libpng-devel libmcrypt-devel readline-devel libtidy-devel libxslt-devel httpd-devel enchant-devel libXpm libXpm-devel freetype-devel t1lib t1lib-devel gmp-devel libc-client-devel libicu-devel oniguruma-devel net-snmp net-snmp-devel bzip2-devel
後でエラー見ていちいちインストールしてたんでは時間の無駄なので、先にインストールしておく。
6.各バージョンのphpをビルド
phpenv install --complete
このコマンドで、インストール可能な全バージョンが表示される。
今回は試しに5.3.28をはじめにインストール。
php 5.3.28
phpenv install 5.3.28
[Info]: Loaded apc Plugin.
[Info]: Loaded pyrus Plugin.
[Info]: Loaded xdebug Plugin.
[Info]: Loaded xhprof Plugin.
[Info]: php.ini-production gets used as php.ini
[Info]: Building 5.3.28 into /root/.phpenv/versions/5.3.28
-[Downloading]: http://www.php.net/distributions/php-5.3.28.tar.bz2
-[Preparing]: /tmp/php-build/source/5.3.28
-[Compiling]: /tmp/php-build/source/5.3.28
[Pyrus]: Downloading from http://pear2.php.net/pyrus.phar
[Pyrus]: Installing executable in /root/.phpenv/versions/5.3.28/bin/pyrus
[XDebug]: Downloading http://xdebug.org/files/xdebug-2.2.3.tgz
[XDebug]: Compiling in /tmp/php-build/source/xdebug-2.2.3
[XDebug]: Installing XDebug configuration in /root/.phpenv/versions/5.3.28/etc/conf.d/xdebug.ini
[XDebug]: Cleaning up.
[Info]: The Log File is not empty, but the Build did not fail. Maybe just warnings got logged. You can review the log in /tmp/php-build.5.3.28.20140302222943.log
[Success]: Built 5.3.28 successfully.
Compilingに鬼時間かかるけど黙って待機。
Successで完了。
php 5.5.9
phpenv install 5.5.9
[Info]: Loaded apc Plugin.
[Info]: Loaded pyrus Plugin.
[Info]: Loaded xdebug Plugin.
[Info]: Loaded xhprof Plugin.
[Info]: php.ini-production gets used as php.ini
[Info]: Building 5.5.9 into /root/.phpenv/versions/5.5.9
-[Downloading]: http://www.php.net/distributions/php-5.5.9.tar.bz2
-[Preparing]: /tmp/php-build/source/5.5.9
-[Compiling]: /tmp/php-build/source/5.5.9
Compilingにやっぱり鬼時間かかるけど黙って待機。
Successで完了。