10
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Vagrant Amazon Linux で PHP実行環境を構築する

Last updated at Posted at 2018-03-06

概要

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をインストールするためには、epelremi リポジトリを追加する必要があります。
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
10
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?