2.6. PHP
2.6.1. 概要
OpenShift Online には 、PHP アプリケーションのビルドおよび実行用に S2I が有効な PHP イメージが含まれています。PHP S2I ビルダーイメージは、必要な依存関係を使用してアプリケーションソースを組み立てて、PHP アプリケーションを含む新規イメージを作成します。結果として生成されるイメージは、OpenShift Online または Docker のいずれかで実行できます。
2.6.2. バージョン
現時点で、OpenShift Online では、PHP のバージョン 5.5、5.6、および 7.0 を提供しています。
2.6.3. イメージ
RHEL 7 イメージは、Red Hat レジストリーから入手できます。
$ docker pull registry.access.redhat.com/openshift3/php-55-rhel7 $ docker pull registry.access.redhat.com/rhscl/php-56-rhel7 $ docker pull registry.access.redhat.com/rhscl/php-70-rhel7
このイメージは、php
イメージストリームで使用することができます。
2.6.4. ビルドプロセス
S2I は、ソースコードをコンテナーに挿入し、コンテナーにソースコードの実行を準備をさせることで、実行準備が整ったイメージを生成します。S2I では、以下の手順を実行します。
- ビルダーイメージからコンテナーを起動します。
- アプリケーションソースをダウンロードします。
- ビルダーイメージコンテナーにスクリプトとアプリケーションソースをストリーミングします。
- (ビルダーイメージから) assemble スクリプトを実行します。
- 最終的なイメージを保存します。
ビルドプロセスの詳細のまとめについては、「S2I ビルドプロセス」を参照してください。
2.6.5. 設定
PHP イメージは数多くの環境変数を複数サポートし、環境変数を設定することで PHP のラインタイムの設定や動作を制御できます。
イメージの一部としてこれらの環境変数を設定するには、ソースコードリポジトリーの中にある .s2i/environment ファイル に配置するか、ビルド設定の sourceStrategy
定義の環境セクションに定義します。
また、新規アプリケーションの作成時に既存のイメージを使用するか、デプロイメント設定などの既存のオブジェクトの環境変数を更新して環境変数を設定できます。
ビルドの動作を制御する環境変数は、s2i ビルド設定または .s2i/environment ファイルの一部として設定して、ビルドの手順で利用できるようにする必要があります。
以下の環境変数は、php.ini ファイルに同等のプロパティー値を設定します。
変数名 | 説明 | デフォルト |
---|---|---|
| PHP で対応する必要のあるエラー、警告、注意を PHP に通知します。 | E_ALL & ~E_NOTICE |
| PHP がエラー、注意、警告を出力するかどうか、さらに出力先を制御します。 | ON |
| PHP の起動シーケンス時に発生した表示エラーを通常の表示エラーとは別に処理するようにします。 | OFF |
|
| OFF |
| 対象のエラーに関連するドキュメントにエラーをリンクします。 | ON |
| PHP ソースファイルへのパス | .:/opt/openshift/src:/opt/rh/php55/root/usr/share/pear |
| セッションデータファイルの場所 | /tmp/sessions |
| アプリケーションのドキュメントルートを定義するパス (例: /public) | / |
以下の環境変数は、opcche.ini ファイルに同等のプロパティー値を設定します。
変数名 | 説明 | デフォルト |
---|---|---|
| OPcache 共有メモリーのストレージサイズ | 16M |
| 更新のスクリプトタイムスタンプをどの頻度で確認するかを秒単位で指定します。0 に指定すると、OPcache はすべての要求の更新を確認します。 | 2 |
以下を設定して PHP 設定の読み込みに使用するディレクトリー全体を上書きすることも可能です。
変数名 | 説明 |
---|---|
| php.ini ファイルにパスを設定します。 |
| 追加の .ini 設定ファイル |
デフォルトの 'packagist.org' ではなく、カスタムの Composer リポジトリーのミラー URL を使用して、パッケージをダウンロードできます。
変数名 | 説明 | COMPOSER_MIRROR |
---|
2.6.5.1. Apache 設定
アプリケーションの DocumentRoot
がソースディレクトリーの /opt/openshift/src にネストされている場合には、独自の .htaccess ファイルで、デフォルトの Apache の動作を置き換え、アプリケーションの要求の処理方法を指定することができます。.htaccess ファイルは、アプリケーションソースのルートに配置する必要があります。
2.6.6. ログへのアクセス
アクセスログは、標準出力にストリーミングされるので、oc logs
コマンドを使用して表示可能です。エラーログは /tmp/error_log ファイルに保存されているので、コンテナーにアクセスする oc rsh
コマンドを使用して表示できます。
2.6.7. ホットデプロイ
ホットデプロイでは、新しい S2I ビルドを生成する必要なしに、アプリケーションに変更をすばやく加え、デプロイすることができます。アプリケーションのソースコードに加えられた変更を即座に検出するには、環境変数を OPCACHE_REVALIDATE_FREQ=0
に指定してビルドイメージを実行する必要があります。
たとえば、oc new-app
コマンドを参照してください。oc env
コマンドを使用して、既存オブジェクトの環境変数を更新できます。
このオプションは、開発またはデバッグの時にだけ使用するようにしてください。 実稼働環境でこの設定をオンにすることは推奨しません。
実行中の Pod でソースコードを変更するには、oc rsh
コマンドを使用して、コンテナーに入ります。
$ oc rsh <pod_id>
実行中のコンテナーに入った後に、現在のディレクトリーを、ソースコードが配置されている /opt/app-root/src に設定します。
2.6.8. PHP テンプレート
OpenShift Online には、サンプル CakePHP アプリケーションまたは サンプル Laravel アプリケーションをデプロイするためのサンプルテンプレートが含まれます。各テンプレートは、ストレージの永続ボリュームを使用して MySQL データベースを含む PHP 7.0 のサンプルアプリケーションをビルドし、デプロイします。
サンプル CakePHP アプリケーションは、以下のコマンドで rhscl/php-70-rhel7
イメージを使用してビルドし、デプロイできます。
$ oc new-app --template=cakephp-mysql-persistent
サンプル Laravel アプリケーションは、以下のコマンドで rhscl/php-70-rhel7
イメージを使用してビルドし、デプロイできます。
$ oc new-app --template=laravel-mysql-persistent