はじめに

 さて、ここまでbuildpackの概要、アプリケーションのデプロイ準備及びデプロイの実行方法をお話してきました。

 PHPで作成されたアプリケーション用のbuildpackでは、apacheとPHP、各々のバージョンを指定してデプロイする事ができます。

 そこで今回は、アプリケーションの実行環境に焦点を当ててお話したいと思います。



用意するもの

 apache、PHPをbuildpack用に用意するにあたって、yumやapt-getなどでアプリケーションをインストールするのではなく、ソースコードからコンパイルIして生成し、用意する必要があります。  コンパイルするには、

・gccなどのANSI-C準拠のコンパイラ

・50MB以上のHDD空き容量

・perl5

・使用したいバージョンのapache及びPHPのソースコード

・apr、apr-util、apr-iconv、pcre、libz、libxml2、libexpat、openssl、zlib、libpng、libjpeg、freetype、gd等、必要に応じてライブラリを用意



buildpackからダウンロードさせるapache、PHPの置き場所の準備

 buildpackは、指定されたURLのサーバーに置かれた決められたディレクトリからtar.gzでまとめられたapache、PHPを取得するようにできています。

 そこで、apache,PHPを用意する前に、tar.gzファイルの置き場所を作成しておきます。ファイルの置き場所は、httpでアクセスできる場所に下記のディレクトリ構成で用意します。



ドキュメントルート─┬─download─┬─httpd─┬─2.2─httpd-2.2.25-bin.tar.gz

             │          │       └─2.4─httpd-2.4.xx-bin.tar.gz

             │          └─php─┬─5.3─php-5.3.27-bin.tar.gz

             │                 ├─5.4─php-5.4.20-bin.tar.gz

             │                 └─5.5─php5.5.4-bin.tar.gz





buildpackのconfigディレクトリ下にある、options.jsonに、

{

    "DOWNLOAD_URL": "http://ダウンロードファイルを置くサイトのFQDN/download/",

    "HTTPD_VERSION": "2.2.25",

    "PHP_VERSION": "5.5.4",

    "ADMIN_EMAIL": "管理者のメールアドレス"

}

と、記述されたものを用意するとHTTP_VERSION、PHP_VERSIONに指定されているバージョンのapache、phpをそれぞれ指定されたURLから取得して来てくれます。


apacheのtar.gzファイル作成

 では、早速apacheを作成していきましょう。

1. コンパイルするに当たりhttp://ftp.riken.jp/net/apache/等から作成したいバージョンのapacheのソースをダウンロードしてきます。
2.ダウンロードしてきたtar.gzファイルをtarコマンドを使用して(tar zxvf 圧縮ファイル名)解凍します。
3.解凍先ディレクトリに移動します。
4.configureオプション--prefixを指定して、指定したディレクトリに作成したapacheを置くように仕向けて、configureコマンドを実行します。(--enable-auth-digest、 --enable-dav、--enable-mime-magic、 --enable-rewriteなども、必要に応じて指定します)

./configure --prefix=/var/tmp/apache2.2-bin --enable-auth-digest --enable-dav --enable-dav-fs --enable-dbd --enable-headers --enable-mem-cache --enable-mime-magic --enable-rewrite --enable-speling --enable-unique-id --enable-vhost-alias --enable-v4-mapped --with-mpm=worker --enable-suexec --enable-modules=all --enable-mods-shared=all --with-suexec-bin=/tmp/staged/app/httpd/bin/suexec
5.エラーなく終わったら。makeを実行します。
6.make installを実行します。
7.prefixで指定されたディレクトリに作成したapacheが格納されているので、tarコマンドを実行してtar.gzに固めてダウンロードディレクトリにファイルを配置します。

tar zcvf ドキュメントルートへのフルパス/download/httpd/2.2/httpd-2.2.25-bin.tar.gz /var/tmp/apache2.2-bin

PHPのtar.gzファイル作成

 続いて、PHPもapache同様コンパイルして作成します。ソースは、jp1.php.net等からダウンロードできます。

1.コンパイルするに当たりhttp://jp1.php.net/downloads.php#v5.5.7等から作成したいバージョンの apacheのソースをダウンロードしてきます。
2.ダウンロードしてきたtar.gzファイルをtarコマンドを使用して(tar zxvf 圧縮ファイル名)解凍します。
3.解凍先ディレクトリに移動します。
4.アプリケーションの動作に必要なライブラリが使用できるようにconfigureオプションを指定し、オプション--prefixを指定してconfigureコマンドを実行します。
5.エラーなく終わったら。makeを実行します。
6.make installを実行します。
7.オプションで指定したオプションで、シェアードライブラリ(/libや/lib64下に格納されているライブラリ)を使用している場合は、prefixで指定されたディレクトリに作成されたphpディレクトリ下にできているlib下にコピーしておく(これをやっていないと、buildpackを使用してデプロイした時に、シェアードライブラリが無いと、怒られる!!)
8.prefixで指定されたディレクトリに作成されたphpが格納されているので、tarコマンドを実行してtar.gzに固めてダウンロードディレクトリにファイルを配置します。

まとめ

 駆け足で、解説をしたが、ポイントはアプリケーションの動作が可能なようにapacheやPHPのコンパイルオプションを指定して実行ファイルを作成することと、buildpackがダウンロードできる場所にtar.gzに圧縮されたapache、PHPを置くことの2点に尽きる。
 最近の傾向を見ると、ソースからコンパイルして実行ファイルを作成するのに慣れていないので、躓くことも多いと思いますが、頑張ってトライしてみてください。