CentOS 7のウェブサーバーにphp 7.2を導入する。phpの入門にも最適な環境の構築
前回の記事「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もサポートが終了しています。)については、サポートされていないため、対象外としています。本記事ではセキュリティ面とパフォーマンスから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に関するパッケージが表示されないことが確認できれば、完了です。
2-2.remiレポジトリの設定
OSデフォルトではphp7.2系に関するパッケージを探してみても見つかりません。これはOSのベースに用意されているレポジトリにはphpの7.2系は含まれていなことが原因です。試しにphp72と名前が付いたパッケージを探してみます。
上記のようにphp72パッケージは見つかりません。
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レポジトリが追加されているという前提で先へ進めます。
(参考サイト)remiレポジトリ公式サイト
上記の公式サイトにリンクにあるRedhat enterprise linux 7用のremiを利用します。インストールにはrpmコマンドを利用します。
以下のように実行します。
以下が実行結果です。
エラーが出力されなければ、remiレポジトリの追加は完了です。
2-2-2.remiレポジトリの追加の確認
remiがレポジトリリストに追加されていることを確認します。以下のように実行することで、現在、利用が可能なレポジトリリストを確認できます。
応答結果にremiが表示されればremiレポジトリを利用する準備は完了しています。
上記の結果からremi-safeが有効になっていることが確認できます。remi-safeはremiと比べて信頼性のアップしたリポジトリになります。因みに有効になっているrem-safeのレポジトリ設定は”/etc/yum.repos.d/remi-safe.repo”ファイルで確認できます。
以下、ファイルの内容です。
remi-safeレポジトリがenable=1になっている。enableが1になっているものが有効なレポジトリになります。これでremiレポジトリの追加と確認が完了しました。
remiレポジトリが有効になった状態で再度、phpの7.2系であるphp72パッケージを探してみます。
今度はphp72パッケージが表示されることが確認できました。この中で必要になるものは以下のパッケージになります。
php7.2系基本パッケージ
- php72.x86_64 : Package that installs PHP 7.2
- php72-php.x86_64 : PHP scripting language for creating dynamic web sites
- php72-php-xml.x86_64 : A module for PHP applications which use XML
- php72-php-pecl-mcrypt.x86_64 : Provides bindings for the unmaintained libmcrypt.
マルチバイト対応用パッケージ
- php72-php-mbstring.x86_64 : A module for PHP applications which need multi-byte string handling
画像処理用パッケージ
- php72-php-gd.x86_64 : A module for PHP applications for using the gd graphics library
MySQLデータベース連携用パッケージ
- php72-php-pdo.x86_64 : A database access abstraction module for PHP applications
- php72-php-mysqlnd.x86_64 : A module for PHP applications that use MySQL databases
- php72-php-pecl-mysql.x86_64 : MySQL database access functions
上記のphp72パッケージをインストールしていきます。
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モジュールの読み込み
phpはcliから動作させることも可能です。phpコマンドを使ってバージョンを確認してみます。
実はインストール直後、phpコマンドを実行できません。これはユーザーの環境変数でコマンドを実行するためのパスが設定されていますが、このパス以外にphp72がインストールされることが原因となります。試しにwhichコマンドを実行すると、パスにphpが見つかりません。と表示されます。
php72の場合、本体のバイナリは”/usr/bin/php72/php72”に配置されます。このバイナリを指定すると、バージョンの応答があります。
phpでは有効化するphpのバージョンを変更するためにmoduleコマンドが利用できます。このコマンドを利用することでパスも設定されます。moduleコマンドはphpインストール直後では、有効になりません。以下、moduleコマンドの実行結果になります。
moduleコマンドを有効にするためには、一度、システムからログアウトします。再度、ログインしてmoduleコマンドを確認します。
今度はmoduleコマンドが利用できます。moduleコマンドを利用して利用したいphpのバージョンを指定すると、cliでも利用できるようになります。以下のように実行します。
エラーが出力されなければ、正常にphp72モジュールが読み込まれています。
再度、phpのバージョンを確認してみます。
今度は正常にバージョンが表示されました。ここまででphpの読み込みは完了です。
4.phpの基本的な設定
項目3.の手順までで、php7.2系パッケージの導入とモジュールの設定までが完了しました。phpの場合、この状態でも動作しますが、基本的な設定を行うことをお勧めします、本記事では運用するにあたって最低限、必要になる設定を行います。設定の前提は以下の通りです。
- 最低限のセキュリティ設定
- アップロードサイズの変更(2Mから20MBへ)
- タイムゾーンの設定
- マルチバイト対応(日本語対応)
この条件に合わせて設定を行っていきます。
4-1.php.iniの変更
phpの設定は/etc/opt/remi/php72/以下にあるphp.iniファイルで行います。php.iniの設定変更前に、既存のファイルをバックアップしておきます。具体的には以下の手順でコピーを行います。
バックアップの完了後、エディタで設定ファイルを開いて変更を行います。本環境ではOSの標準的なエディタである、viエディタを利用しています。
4-1-1.phpのセキュリティ設定
phpはデフォルトでhttpヘッダーにバージョンを表示します。バージョンは公開しないほうがセキュアになりますので、phpのバージョンを非表示にする設定を行います。374行目にある
を
に変更します。
4-1-2.アップロードサイズの変更
phpのデフォルト設定ではアップロードできるファイルのサイズが2MBだと少ないため、20Mに変更します。825行目にある
を
に変更します。
4-1-3.タイムゾーンの設定
タイムゾーンの設定を行います。これを設定しないとエラーが大量に出力されます。902行目
を
に変更します。
4-1-4.マルチバイト対応(日本語対応)設定
以下の項目は日本語を利用するうえでの設定変更になります。適宜、変更してください。
1509行目のパラメーター
を
に変更します。
1516行目のパラメーター
を
に変更します。
1524行目のパラメーター
を
に変更します。
1534行目のパラメーター
を
に変更します。
1542行目のパラメーター
を
1547行目のパラメーター
を
に変更します。
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の情報が画面に表示されます。
これでphpの動作確認は完了です。作成したindex.phpファイルはセキュリティホールになりますので、削除しておきます。
7.まとめ
ここまででhttpdとphpの導入が完了しました。この状態でphpプログラムは動作しますので、phpの入門にも利用できます。wordpressなどのCMSを動作させるためには、別途データベースが必要になります。次回の記事ではデータベースの導入までを紹介していきます。まずは本環境でphpでプログラムを作成して、phpを使ってみることをお勧めします。
システムでお困りのお客様
Facebookでのご購読が便利です。
関連する情報
-
-
Windows Server 2008 R2で仮想マシンを初期化、sysprepの実行手順
仮想化環境(ここでは主にVMWare ESXiやマイクロソフトのHyper-Vなどのhyperv
-
-
Windows Server 2016をインストール 最新OSの導入手順を確認する
Windowsのサーバー製品であるWindows Serverも2012の購入が難しくなり、メイ
-
-
Windows Server 2012 R2でActive Directoryにドメインコントローラーを追加する手順
以前の記事「Windows Server 2012 R2へActive Directoryをイン
-
-
Windows Server 2012 R2へActive Directoryをインストール・構成する
以前の記事「Windows server 2012 R2を利用する前に始める10の作業」でWin
-
-
Windows Update後に2012 R2 が再起動を繰り返す不具合の原因と対応
先日、弊社で行っていたWindows Storage Server 2012 R2 のセットアッ
-
-
Windows Server 2012 R2をより便利に利用する12のコマンド
Windowsを利用している環境だと、GUIに頼ってしまいませんか。WindowsのGUIは直観
-
-
プロキシサーバー経由でファイルがダウンロード出来ない問題への対応
先日、弊社のお客様より、ブラウザを利用して大きい容量のファイルがダウンロードできないというお問い
-
-
Windows Server 2016でActive Directoryを導入した後に設定する、DNSのお勧め項目
前回の記事「Windows Server 2016でActive Directoryを習得する。
-
-
CentOS7の基本設定 Linuxのインストール後に設定する9つのポイント
CentOS7(ここでは7.0~7.4)のインストール完了後に、設定する最低限のポイントを纏めて
-
-
bind ゾーンファイル “already in use” エラーの対応方法
このところネームサービスとして代表的なアプリケーションである"bind"のセキュリティホールが多