CentOS 7のウェブサーバーにphp 7.2を導入する。phpの入門にも最適な環境の構築

2018/07/04 CentOS, Linux, php, サーバー構築

centos-php-inst-top
前回の記事「CentOS 7 への Apacheインストール。最短でウェブサーバーを構築してテストページを表示する。」「SEO対策にも有効!CentOS 7 と Let’s Encryptで信頼性の高いHTTPSを設定する」で作成したCentOS 7とHTTPSの環境へphpをインストールしてテスト用のページが表示できるところまでを紹介します。昨今のウェブサイトは静的なHTMLではなく、ユーザーの要求に応えて、動的にHTMLを生成するアプリケーションサーバーで作成されていることが殆どです。このアプリケーションサーバーとしてオープンソースで代表的なものがphpになります。phpで作成されたアプリケーションはWordpressやEC-CUBE等、現在のウェブサイトを構成する上で欠かせないものばかりになります。
是非、本記事を参考にPHPを導入してみて下さい。

スポンサーリンク

尚、導入する環境は記事「CentOS 7 への Apacheインストール。最短でウェブサーバーを構築してテストページを表示する。」で紹介していますが、基本的な環境は以下の通りです。

  • OSのバージョンはCentOSで最新(2018年5月現在)のバージョン7.5を利用しています。
  • ウェブサーバーとしてApache2.4.6がインストールされています。
  • Apacheは基本的な設定が完了して、テストページが表示されています。
  • ApacheはHTTPS通信に対応した設定が完了しています。
  • サーバーはインターネットへ接続されており、グローバルIPアドレスが一つ、割り当てられています。
  • ファイアウォールとしてfirewalldを設定しています。
  • この環境を前提にPHPの導入と設定を進めていきます。

1.php導入の前提条件

phpの導入にあたって、前提条件は以下の通りです。
OSのバージョンは2018年5月現在で、最新のCentOS 7.5を利用します。実際のバージョンを確認してみます。

上記から7.5であることが確認できました。併せてApache(httpd)のバージョンについても確認します。httpdのバージョンは以下のコマンドで確認できます。

上記からバージョンが2.4.6であることが確認できました。
導入するphpのバージョンですが、現在、利用されている主なバージョンとしては

  • 5.4系(CentOSのベースに登録されているもの、OSのサポート期間に準ずる)
  • 5.6系(2018年12月31日でサポート終了)
  • 7.1系(7系の前バージョン、サポート期間がやや短い)
  • 7.2系(最新のメジャーバージョン、サポート期間が長い)

の4つがあります。これ以前のバージョン(OSのベースパッケージ以外で導入したphpについては5.4もサポートが終了しています。)については、サポートされていないため、対象外としています。本記事ではセキュリティ面とパフォーマンス(php5系と比較して2倍の処理能力ある)から7.2系をインストールしていきます。

2.phpインストール前の事前準備

php7.2系のインストール前に事前準備を行います。作業としては、導入する環境にOSデフォルトのPHPがインストールされていないかを確認することと、php7.2系をインストールするのに必要なレポジトリであるremiレポジトリの追加になります。

2-1.php5.4系のインストール確認

php7.2系をインストールする前にOSデフォルトのphp(5.4系)がインストールされていないことを確認します。5.4系がインストールされていると、設定ファイルやモジュールの読み込み時に混乱する可能性があります。以下のコマンドでphpがインストールされていないことを確認します。

phpに関するパッケージが表示されないことが確認できれば、完了です。もし出力結果にphpが含まれている場合は

などでphp5系のパッケージを削除してください。

2-2.remiレポジトリの設定

OSデフォルトではphp7.2系に関するパッケージを探してみても見つかりません。これはOSのベースに用意されているレポジトリにはphpの7.2系は含まれていなことが原因です。

2-2-1.remiレポジトリの追加

remiレポジトリはEPELの補完的な立ち位置の外部リポジトリです。有志によって管理されているプロジェクトになります。
remiの目的ですが、最新バージョンのPHPモジュールをRHEL系のディストリビューションに提供することです。このレポジトリをインストールします。
なお、remiのリポジトリを追加するには、EPELのyumリポジトリが追加されている必要があります。このEPELレポジトリはHTTPSを設定する際に追加済みなので、ここでは手順を割愛しています。もしEPELレポジトリが追加されていない場合は、記事「SEO対策にも有効!CentOS 7 と Let’s Encryptで信頼性の高いHTTPSを設定する」の項目4-4-1.を参照してEPELレポジトリを追加してください。ここではEPELレポジトリが追加されているという前提で先へ進めます。
※6月23日追記:epelレポジトリがインストールされていなくても、yumコマンドの依存関係でremiレポジトリをインストールする際にepelレポジトリもインストールされます。

(参考サイト)remiレポジトリ公式サイト

上記の公式サイトにリンクにあるRedhat enterprise linux 7用のremiを利用します。インストールにはyumコマンドを利用します。
以下のように実行します。

以下が実行結果です。

エラーが出力なく”完了しました!”と表示されれば、remiレポジトリの追加は完了です。
追加後には、レポジトリを設定するファイルとしてphp関連のものが追加されていることが確認できます。
※レポジトリファイルは/etc/yum.repos.d/以下に含まれています。以下が追加後のディレクトリ一覧になります。

remi関連のファイルが追加されていることが確認できます。

2-2-2.remiレポジトリの追加の確認

remiレポジトリでphp7.2系の導入に利用するレポジトリはremi-php72レポジトリになります。remi-php72レポジトリはデフォルトでは有効になっていません。それ程、使用頻度も高くないことからphp7.2系に関連したyumコマンドを実行する際だけ有効にするようにします。
この場合はyumコマンドにオプションである”–enable-repo=remi,remi-php72”を付与します。例えばphpパッケージを探す場合は以下のように実行します。

実行結果は以下の通りです。

php7.2系のパッケージについて詳細が表示されます。remiレポジトリを有効にするオプションを付与して再度、phpのパッケージを探してみます。

今度はphpのバージョン7.2系を含むパッケージが表示されることが確認できました。この中で必要になるものは以下のパッケージになります。
php7.2系基本パッケージ

  • php.x86_64 : Package that installs PHP 7.2
  • php-xml.x86_64 : A module for PHP applications which use XML
  • php-xmlrpc.x86_64 : A module for PHP applications which use the XML-RPC protocol
  • php-pecl-mcrypt.x86_64 : Provides bindings for the unmaintained libmcrypt.

マルチバイト対応用パッケージ

  • php-mbstring.x86_64 : A module for PHP applications which need multi-byte string handling

画像処理用パッケージ

  • php-gd.x86_64 : A module for PHP applications for using the gd graphics library

MySQLデータベース連携用パッケージ

  • php-pdo.x86_64 : A database access abstraction module for PHP applications
  • php-mysqlnd.x86_64 : A module for PHP applications that use MySQL databases
  • php-pecl-mysql.x86_64 : MySQL database access functions

上記のphpパッケージをインストール対象とします。

3.phpパッケージのインストール

本章では実際にphp7.2系のパッケージをインストールする手順を紹介していきます。

3-1.phpパッケージの情報確認

php72パッケージのインストール前に、パッケージの情報を確認しておきます。

実行結果は以下の通りです。各パッケージの役割などを確認しておくと、インストールするパッケージの意味合いをイメージしやすいと思います。

各パッケージの詳細を確認後、インストールに入ります。

スポンサーリンク

3-2.phpのインストール

php72パッケージはyumコマンドにinstallオプションを付けることでインストールすることができます。項目3-1.で必要なパッケージの情報が確認できましたので、以下のコマンドでインストールします。

上記ではyumコマンドに-yオプションを付けることでインストール時の確認応答を省いています。パッケージを複数インストールする場合はスペースを入れてパッケージ名を列記します。コマンドを実行すると、以下のようにインストールが開始されます。

エラーの出力がなく”完了しました!”と表示されれば、phpは正常にインストールされています。

3-3.インストールされたphpパッケージの確認

phpがインストールされたことを確認します。インストールされているパッケージはyumコマンドで確認できます。以下のようにyumを実行することで、phpパッケージがインストールされていることを確認します。

出力結果として、以下のphpパッケージが表示されることを確認します。

上記のパッケージが表示されれば、phpのパッケージ確認は完了です。

3-4.php72 cliの動作確認

phpはcliから動作させることも可能です。phpコマンドを使ってバージョンを確認してみます。

正常に7.2系のバージョンが表示されました。

4.phpの基本的な設定

項目3.の手順までで、php7.2系パッケージの導入とモジュールの設定までが完了しました。phpの場合、この状態でも動作しますが、基本的な設定を行うことをお勧めします、本記事では運用するにあたって最低限、必要になる設定を行います。設定の前提は以下の通りです。

  • 最低限のセキュリティ設定
  • アップロードサイズの変更(2Mから20MBへ)
  • タイムゾーンの設定
  • マルチバイト対応(日本語対応)

この条件に合わせて設定を行っていきます。

4-1.php.iniの変更

phpの設定は/etc/以下にあるphp.iniファイルで行います。php.iniの設定変更前に、既存のファイルをバックアップしておきます。具体的には以下の手順でコピーを行います。

バックアップの完了後、エディタで設定ファイルを開いて変更を行います。本環境ではOSの標準的なエディタである、viエディタを利用しています。

4-1-1.phpのセキュリティ設定

phpはデフォルトの設定ではhttpヘッダーにバージョンを表示します。バージョンは公開しないほうがセキュアになりますので、phpのバージョンを非表示にする設定を行います。374行目にある

に変更します。

4-1-2.アップロードサイズの変更

phpのデフォルト設定ではアップロードできるファイルのサイズが2MBだと少ないため、20Mに変更します。
まずはPOST データの最大サイズを設定するpost_max_sizeを変更します。デフォルトでは8Mですが、これを20Mに変更します。
672行目にある

に変更します。

post_max_sizeの変更だけでは、ファイルのアップロード容量を増やせないため、併せてupload_max_filesizeを変更します。
825行目にある

に変更します。

4-1-3.タイムゾーンの設定

タイムゾーンの設定を行います。これを設定しないとエラーが大量に出力されます。勿論、アプリケーションが時間を扱う時にも運用環境に合わせて設定が行われていないと問題になります。日本の場合は”Asia/Tokyo”になりますので、これをdate.timezoneとして設定を行います。
902行目

に変更します。

4-1-4.マルチバイト対応(日本語対応)設定

以下の項目は日本語を利用するうえでの設定変更になります。一般的な設定を紹介していますが、日本語の扱いは運用環境によって異なると思います。動作するアプリケーションに応じて、適宜、変更してください。
まずはmbstringで使用される言語のデフォルト値を定義するmbstring.languageを設定します。
1509行目のパラメーター

に変更します。

続いて内部文字エンコーディングのデフォルト値を定義するmbstring.internal_encodingを設定します。ここではOSに合わせてUTF-8を指定しています。
1516行目のパラメーター

に変更します。

HTTP通信の時のインプット文字コードを指定するmbstring.http_inputを設定します。ここではUTF-8を指定しています。
1524行目のパラメーター

に変更します。

HTTP 出力文字コードを指定するmbstring.http_outputを設定します。ここではpassを指定して自動変換を行わないようにします。
1534行目のパラメーター

に変更します。

HTTP 入力変換を有効にするmbstring.encoding_translationをOnにします。文字化けが発生した場合はOffにします。
1542行目のパラメーター

に変更します。

文字コード自動検出の優先順位を定義するパラメーターであるmbstring.detect_orderを設定します。autoの場合、UTF-8が最初に選択されるため、ここはautoで問題ないかと思います。コメントである”;”を削除します。
1547行目のパラメーター

に変更します。

コードとして変換できない文字がある場合に、代替の文字を出力しないようmbstring.substitute_characterを設定します。コメントである”;”を削除します。
1552行目のパラメーター

に変更します。
以上でphp.iniの設定変更は完了です。変更したファイルを保存します。

5.php.ini設定ファイルの反映とhttpdの確認

ここまででphpの基本的な設定は完了しました。変更した設定を反映するためにhttpd(apache)を再起動します。systemctlを以下のように実行します。

エラーが出力されなければ、httpdは正常に再起動しています。
再起動後にhttpdのstatusを確認します。

上記の出力結果から、httpdは正常に再起動していることが確認できます。
併せてhttpd側にphpがモジュールとして組み込まれていることを確認します。確認はhttpdコマンドに-Mを付けて実行します。

結果としてphp7_moduleが表示されれば、確認は完了です。

6.動作確認

項目7.まででphpの設定が完了しましたので、ここからは実際にCLIからのテストと、ブラウザでサイトへ接続して、正常にphpが動作していることを確認していきます。利用しているブラウザはGoogle Chromeになります。

6-1.CLIでのphp確認

コマンドライン(CLI)からphpコマンドを利用してphpの動作を確認することができます。phpコマンドを以下のように実行します。

実行結果は以下のようになります。(出力される量が多いので一部のみを除いて、割愛しています。)

以上のようにphpの設定情報が表示されれば、phpは正常に動作しています。

6-2.ブラウザでのphp確認

ブラウザからも動作を確認しておきます。設定したapacheのドキュメントルートに動作確認用のファイルを作成して、ブラウザからアクセスを行います。

6-2-1.動作確認用のファイルを作成

動作確認用のファイルを作成します。ここではドキュメントルートとして/home/www/htmlが設定されている前提です。
ディレクトリを移動します。

viコマンドでindex.phpというファイル名を作成します。

ファイルの内容は以下になります。

変更後にファイルを保存してください。これで動作確認用ファイルの作成は完了です。

6-2-2.ブラウザからアクセスする

ブラウザからphpinfoの画面が表示できることを確認します。
サイトがあるホスト名がwww.testdom.comの場合は以下のようにブラウザに入力します。

https://www.testdom.com/index.php

正常に設定ができている場合、以下のようなphpの情報が画面に表示されます。
centos-php72-inst-6-2-2-02
これでphpの動作確認は完了です。作成したindex.phpファイルはセキュリティホールになりますので、削除しておきます。

7.まとめ

ここまででhttpdとphpの導入が完了しました。この状態でphpプログラムは動作しますので、phpの入門にも利用できます。wordpressなどのCMSを動作させるためには、別途データベースが必要になります。次回の記事ではデータベースの導入までを紹介していきます。まずは本環境でphpでプログラムを作成して、phpを使ってみることをお勧めします。

関連する記事


システムでお困りのお客様

もし、貴社で、

  • サポート切れのサーバやネットワーク機器の入れ替えをしたいが、どうしたらよいかわからない
  • サーバやネットワークの管理を行う社員がいないため困っている
  • 業務に利用している機器のセキュリティが大丈夫か心配
  • 機器の障害で、業務への影響が発生している
  • 社内の要望に対して、どのようなシステムを導入したらよいか解らない

など、サーバーやネットワーク、セキュリティでお悩みの方、新規のシステム導入を検討中の方。
多くのシステム構築を行い、成功させてきた実績をもつ弊社が、その問題を解決します。
お気軽にお問い合わせ頂き、貴社の問題解決にお役立てください。

お問い合わせ・ご相談はこちらから

Facebookでのご購読が便利です。

Twitter・Feedlyでもご購読できます。

Twitterでフォローする Feedlyでフォローする

Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

  • スポンサーリンク