Help us understand the problem. What is going on with this article?

Amimoto AMIのEC2にphpenvを使ってphpをインストールし直す

More than 5 years have passed since last update.

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のアンインストール

Terminal
yum erase php*

yumを使って、サーバーにインストールされているphp関連のパッケージを削除。
アスタリスクを使って、php全てをヒットさせる。

2.phpenvのインストール

Terminal
curl https://raw.github.com/CHH/phpenv/master/bin/phpenv-install.sh | bash

自動でgitからダウンロード、インストールされる。
終了時のメッセージにある通り、.bashrcまたは.zshrcの末尾に以下の2行を追加

Terminal
vi ~/.bashrc
Terminal
PATH=$HOME/.phpenv/bin:$PATH # Add phpenv to PATH for scripting
eval "$(phpenv init -)"

3.php-buildのインストール

Terminal
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を使ってインストールしておく。

Terminal
yum install gcc

5.phpをビルドするときに依存するパッケージをインストール

Terminal
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をビルド

Terminal
phpenv install --complete

このコマンドで、インストール可能な全バージョンが表示される。
今回は試しに5.3.28をはじめにインストール。

php 5.3.28

Terminal
phpenv install 5.3.28
Terminal
[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

Terminal
phpenv install 5.5.9
Terminal
[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で完了。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away