概要
Vagrantを利用してAmazon Linux上に PHP の実行環境を構築します。
##環境
- Mac OS X Sierra 10.12.6
- Vagrant 2.0.0
- VirtualBox 5.1.30r118389
- PHP 7.2.X
MacOS上にVagrantを使ってVirtualboxを立てその中に環境構築しています。
OSイメージはAmazon Linuxのこちらを利用。
PHPインストール
PHPのインストール方法は複数ありますが、今回は一番簡単な yum
によるインストールを行います。
OSの各パッケージの最新化(yumアップデート)
$ sudo yum -y update
epel と remi リポジトリの追加
新しいバージョンのPHPをインストールするためには、epel
と remi
リポジトリを追加する必要があります。
AmazonLinuxの場合、 amzn-main
というyumレポジトリが存在し、
このレポジトリには古いバージョンのPHPがインストールされるように設定されています。
epelリポジトリについて
Amazon Linux(Amazon Linux AMI release 2017.03)ではデフォルトでepelリポジトリが入っているのでインストールする必要はありません。
epelリポジトリが入っていないAmazon Linuxを利用している場合、以下のコマンドでインストールできます。
$ sudo yum install epel-release
remiリポジトリについて
以下のコマンドでインストールを行います。
$ yum install http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
必要なパッケージをインストール
$ yum install httpd libmcrypt libtool-ltdl zlib-devel autoconf automake libevent libevent-devel gcc-c++ libtool
PHP7.2のインストール
$ yum install --disablerepo=amzn-main --enablerepo=remi,remi-php72 php
バージョンを確認します。エラーにならなければ、完了です。
$ php -v
PHP 7.2.3 (cli) (built: Feb 28 2018 08:56:32) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies
他に必要なパッケージをインストール
今回は、以下のパッケージをインストールします。
パッケージ | 目的 |
---|---|
php-devel | 拡張機能のソースをコンパイルするために必要。 |
php-opcache | 処理の高速化のため |
php-mbstring | マルチバイト文字列関連の関数を使うために必要。 |
php-pdo | 複数のデータベースに接続するために必要。 |
php-mysqlnd | MySQLを利用するために必要。 |
php-pecl-xdebug | デバッグ時に必要。 |
php-fpm | 主に高負荷のサイトで有用な追加機能を用意している。 |
php-xml | xmlを利用するために必要。 |
以下のコマンドでインストールを行います。
$ yum install --disablerepo=amzn-main --enablerepo=remi,remi-php72 php-devel php-opcache php-mbstring php-pdo php-mysqlnd php-pecl-xdebug php-fpm php-xml
PHPの設定を編集
PHPの設定ファイルは、 /etc/php.ini
で設定します。
/etc/php.ini
を編集し、設定を変更します。
PHP.iniのバックアップを取得
編集前に、/etc/php.ini
のバックアップを取得します。
php.ini.originというコピーファイルを作成します。
$ cp /etc/php.ini /etc/php.ini.origin
エラー表示の設定
- error_reporting
エラー出力レベルを設定します。
開発環境においてはSTRICTを含めたすべてのレポートをさせます。
error_reporting = E_ALL | E_STRICT
- display_errors
エラーをHTML出力の一部として画面に出力するかどうかを定義します。
エラー内容を表示するように設定します。
display_errors = On
- log_errors
エラーメッセージを、サーバーのエラーログまたはerror_logに記録するかどうかを指定します。
有効に設定します。
log_errors = On
- error_log
スクリプトエラーが記録されるファイル名です。
エラーログを/var/log/php.logに吐くように設定します。
error_log = /var/log/php.log
日本環境にする設定
- default_charset
デフォルトの文字コードをUTF-8に変更します。
default_charset = "UTF-8"
- mbstring.language
mbstringのデフォルトの言語をJapaneseに設定します。
mbstring.language = Japanese
- mbstring.internal_encoding
内部文字のエンコーディングのデフォルト値を設定する項目です。
PHP5.6.0以降非推奨となっているので、コメントアウトして使用しません。
;mbstring.internal_encoding =
- mbstring.encoding_translation
HTTP入力文字のエンコーディングを内部文字のエンコーディングに自動的に変換するかどうかを設定します。
Offを指定し、自動的に変換しないように設定します。
mbstring.encoding_translation = Off
- mbstring.http_input
HTTP 入力文字エンコーディングのデフォルト値を定義します。
PHP5.6.0以降非推奨となっているので、コメントアウトして使用しません。
;mbstring.http_input =
- mbstring.http_output
HTTP 出力文字エンコーディングのデフォルト値を定義します。
PHP5.6.0以降非推奨となっているので、コメントアウトして使用しません。
;mbstring.http_output =
- mbstring.detect_order
文字コードを自動検出する際の優先順位を設定します。
mbstring.detect_order = UTF-8,SJIS,EUC-JP,JIS,ASCII
日本時間にする設定
タイムゾーンを日本標準時間に変更します。
date.timezone = Asia/Tokyo
セキュリティに関する設定
- expose_php
HTTPのレスポンスにPHPのバージョン情報を出力するX-Powered-Byヘッダを含めるかどうかを設定します。
OnだとPHPのバージョン情報などが露呈しまうので、Offを設定します。
expose_php = Off
パフォーマンスに関する設定
- memory_limit
PHPが利用できるメモリの最大サイズを設定します。
post_max_sizeよりも大きく する必要があります。
今回は、デフォルト値である「128M」を指定します。
memory_limit = 128M
- post_max_size
POSTリクエストのデータの最大サイズを設定します
memory_limitの設定値に合わせて「128M」を指定します。
post_max_size = 128M
- upload_max_filesize
ファイルをアップロードする際のアップロードファイルの最大サイズを設定します。
memory_limit、post_max_sizeの設定値に合わせて「128M」を指定します。
upload_max_filesize = 128M
変更した設定を読み込み
php.iniでの設定はApacheを再起動することによって再読込みされます。
$ service httpd restart