(2015/4/1現在のCloud9にて作業)
Cloud9は、Rubyであればデフォルトでrvmが入っているのでバージョン管理はそれでOK、ただ、PHPでもバージョン管理が出来ないかを試してみた。
Ubuntu に phpenv を入れて複数バージョンのPHP管理しようとした や CentOSにrbenvとphpenvをシステムワイドにインストール の記事を参考に挑戦。
結果、出来ましたが、穏やかでないこともしているので 自己責任 でお願いします。
phpenvのインストール
ワークスペースの作成では、種類は「custom」にして作成。
最初に、インストール用のスクリプトファイルをダウンロードする。
$ cd
$ mkdir .installer-phpenv
$ cd .installer-phpenv/
$ wget https://raw.githubusercontent.com/CHH/phpenv/master/bin/phpenv-install.sh
そのスクリプトファイルを実行する。
$ chmod +x phpenv-install.sh
$ ./phpenv-install.sh
Installing phpenv in /home/ubuntu/.phpenv
Cloning into '/home/ubuntu/.phpenv'...
remote: Counting objects: 2052, done.
remote: Compressing objects: 100% (4/4), done.
remote: Total 2052 (delta 0), reused 0 (delta 0), pack-reused 2046
Receiving objects: 100% (2052/2052), 340.61 KiB | 255.00 KiB/s, done.
Resolving deltas: 100% (1272/1272), done.
Checking connectivity... done.
Success.
;;
*)
;;
esac
export PATH="/home/ubuntu/.phpenv/bin:$PATH"
eval "$(phpenv init -)"
Add above line at the end of your ~/.bashrc and restart your shell to use phpenv.
~/.bashrc
にexport
とeval
の設定を追加するよう指示が出るので、viで開いて2行追加する。で、再読み込み。
$ vi ~/.bashrc
$ source ~/.bashrc
php-buildのインストール
phpenvを使うことが前提なので、phpenvのプラグインとして導入する。
$ git clone git://github.com/CHH/php-build.git $HOME/.phpenv/plugins/php-build
phpenv install
を実行し、インストールできるPHPのバージョンが一覧表示されればOK。
$ phpenv install
usage: phpenv install VERSION
Available versions:
5.2.17
5.3.10
5.3.11
5.3.12
.
.
.
5.6.5
5.6.6
5.6.7
5.6snapshot
master
bison 2.7のインストール(と3.0のアンインストール)
PHPのどれかをインストールするのは、まだ先。引き続き、必要な作業をしていく。
どのバージョンのPHPを入れるにしてもbisonの特定のバージョンが必要になる。Cloud9ではデフォルトで3.0版のbisonがインストールされているが、これではOUT。
びっくりすることにCloud9ではapt-get
が利用できるので、3.0版のbisonをアンインストールし、2.7版のbisonをソースコードからインストールする。(元々インストールされているものをアンインストールするので、 自己責任 でお願いします。)
bison 2.7のダウンロード
$ mkdir .source-bison27
$ cd .source-bison27/
$ wget http://ftp.gnu.org/gnu/bison/bison-2.7.tar.gz
$ tar xvzf bison-2.7.tar.gz
$ cd bison-2.7/
$ ./configure
$ make
bison 3.0のアンインストール
$ sudo apt-get remove bison
bison 2.7のインストール
$ sudo make install
依存パッケージのインストール
他にも必要なパッケージがあるので、インストールしていく。
自分が行なったときにインストールしたパッケージは、下記のとおり。する必要のなかったものもあるかも…。(あと、libcurl関連は、ひとつずつインストールしないと上手くいかなかった。)
$ sudo apt-get update
$ sudo apt-get install libcurl3
$ sudo apt-get install libcurl4-gnutls-dev
$ sudo apt-get install libcurl4-nss-dev
$ sudo apt-get install libcurl4-openssl-dev
$ sudo apt-get install libmcrypt4 libmcrypt-dev libtidy-0.99-0 libtidy-dev libxslt1.1 libxslt1-dev apache2-dev
apxs2の設定
PHPのインストールの際にlibphp5.so
というApache用のファイルを作成できるように、設定を追加する。~/.phpenv/plugins/php-build/share/php-build/default_configure_options
をviで開き、次の1行の設定を、ファイルの一番下に追加する。
--with-apxs2=/usr/bin/apxs2
パーミッションの変更
以下のディレクトリのパーミッションを変更しないとPHPのインストール時にコケるので、chmod
を実行する。また、デフォルトのlibphp5.so
を退避させておく。
$ sudo chmod oga+rw /usr/lib/apache2/modules
$ mv /usr/lib/apache2/modules/libphp5.so ~/.phpenv/versions/
$ sudo chmod oga+rw /etc/apache2/mods-available
PHPのインストールを実行する
ここまでやって、ようやくPHPをインストールできる。リストの中からPHP5.6.7をインストールしてみる。
なお、フリープランだと恐ろしく時間がかかるので、覚悟する。(メモリが不足しているという警告が何度も出るが、それのせいでインストールがコケることは無かった。)
$ phpenv install 5.6.7
[Info]: Loaded extension plugin
[Info]: Loaded apc Plugin.
[Info]: Loaded composer Plugin.
[Info]: Loaded pyrus Plugin.
[Info]: Loaded uprofiler Plugin.
[Info]: Loaded xdebug Plugin.
[Info]: Loaded xhprof Plugin.
[Info]: php.ini-production gets used as php.ini
[Info]: Building 5.6.7 into /home/ubuntu/.phpenv/versions/5.6.7
[Skipping]: Already downloaded and extracted http://php.net/distributions/php-5.6.7.tar.bz2
[Preparing]: /tmp/php-build/source/5.6.7
[Compiling]: /tmp/php-build/source/5.6.7
[Pyrus]: Downloading from http://pear2.php.net/pyrus.phar
[Pyrus]: Installing executable in /home/ubuntu/.phpenv/versions/5.6.7/bin/pyrus
[xdebug]: Installing version 2.3.2
[xdebug]: Compiling xdebug in /tmp/php-build/source/xdebug-2.3.2
[xdebug]: Installing xdebug configuration in /home/ubuntu/.phpenv/versions/5.6.7/etc/conf.d/xdebug.ini
[xdebug]: Cleaning up.
[Info]: Enabling Opcache...
[Info]: Done
[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.6.7.20150401094243.log
[Success]: Built 5.6.7 successfully.
インストールしたPHPを使えるようにする
$ phpenv global 5.6.7
$ phpenv rehash
これでphp -v
を実行すれば、5.6.7と出る。また、適当なPHPファイルをworkspaceの中に作成して、phpinfo()
でも書いておいて、Apacheを起動すれば、問題なくPHPが動いていることが確認できるはず。
終わりに
結構大変で力尽きたので、当記事は、ここまでで。ここまで問題なければ、DBとの連携なども上手くいく、はず。試していないけど…。それは、また後で。
あと、ここまで使い倒すなら、有料プランへの乗り換えも考えた方が良いのかも。