超簡単!! CentOS+NginX環境にPHP7をインストールする


はじめに

前回、CentOS環境にNginXをインストールしましたが、その環境にPHP環境を構築したいと思います。

インストールはすごく簡単にできます。

本環境はローカル環境で動作することを前提で作成しています。

NginX環境もほぼデフォルト状態となっています。

NginX構築に関しては下記を参考にしてください。

 

PHP7のインストール

本環境にインストールするPHPのバージョンは7.3とします。

remiリポジトリを追加する

PHPのパッケージをインストールする前に、remiリポジトリを追加します。

上記サイトでremiリポジトリが管理されています。

$ yum -y install http://rpms.famillecollet.com/enterprise/remi-release-7.rpm

上記実行すると、リポジトリが追加されます。

読み込んだプラグイン:fastestmirror, langpacks
remi-release-7.rpm                                                                                          |  20 kB  00:00:00     
/var/tmp/yum-root-KkvSOF/remi-release-7.rpm を調べています: remi-release-7.7-2.el7.remi.noarch
/var/tmp/yum-root-KkvSOF/remi-release-7.rpm をインストール済みとして設定しています
依存性の解決をしています
--> トランザクションの確認を実行しています。
---> パッケージ remi-release.noarch 0:7.7-2.el7.remi を インストール
--> 依存性の処理をしています: epel-release = 7 のパッケージ: remi-release-7.7-2.el7.remi.noarch
Loading mirror speeds from cached hostfile
 * base: ftp.iij.ad.jp
 * extras: ftp.iij.ad.jp
 * updates: ftp.iij.ad.jp
base                                                                                                        | 3.6 kB  00:00:00     
extras                                                                                                      | 2.9 kB  00:00:00     
nginx                                                                                                       | 2.9 kB  00:00:00     
updates                                                                                                     | 2.9 kB  00:00:00     
--> トランザクションの確認を実行しています。
---> パッケージ epel-release.noarch 0:7-11 を インストール
--> 依存性解決を終了しました。

依存性を解決しました

===================================================================================================================================
 Package                        アーキテクチャー         バージョン                        リポジトリー                       容量
===================================================================================================================================
インストール中:
 remi-release                   noarch                   7.7-2.el7.remi                    /remi-release-7                    26 k
依存性関連でのインストールをします:
 epel-release                   noarch                   7-11                              extras                             15 k

トランザクションの要約
===================================================================================================================================
インストール  1 パッケージ (+1 個の依存関係のパッケージ)

合計容量: 41 k
総ダウンロード容量: 15 k
インストール容量: 51 k
Downloading packages:
epel-release-7-11.noarch.rpm                                                                                |  15 kB  00:00:00     
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  インストール中          : epel-release-7-11.noarch                                                                           1/2 
  インストール中          : remi-release-7.7-2.el7.remi.noarch                                                                 2/2 
  検証中                  : remi-release-7.7-2.el7.remi.noarch                                                                 1/2 
  検証中                  : epel-release-7-11.noarch                                                                           2/2 

インストール:
  remi-release.noarch 0:7.7-2.el7.remi                                                                                             

依存性関連をインストールしました:
  epel-release.noarch 0:7-11                                                                                                       

完了しました!

以下のコマンドを実行して、リポジトリが追加されているかどうかを確認します。

$ ls -la /etc/yum.repos.d/ | grep remi*

下記の様な結果が得られればOKです。

-rw-r--r--.   1 root root  446  2月 18 01:07 remi-glpi91.repo
-rw-r--r--.   1 root root  446  2月 18 01:07 remi-glpi92.repo
-rw-r--r--.   1 root root  446  2月 18 01:07 remi-glpi93.repo
-rw-r--r--.   1 root root  446  2月 18 01:07 remi-glpi94.repo
-rw-r--r--.   1 root root  855  2月 18 01:07 remi-modular.repo
-rw-r--r--.   1 root root  456  2月 18 01:07 remi-php54.repo
-rw-r--r--.   1 root root 1314  2月 18 01:07 remi-php70.repo
-rw-r--r--.   1 root root 1314  2月 18 01:07 remi-php71.repo
-rw-r--r--.   1 root root 1314  2月 18 01:07 remi-php72.repo
-rw-r--r--.   1 root root 1314  2月 18 01:07 remi-php73.repo
-rw-r--r--.   1 root root 1314  2月 18 01:07 remi-php74.repo
-rw-r--r--.   1 root root  750  2月 18 01:07 remi-safe.repo
-rw-r--r--.   1 root root 2605  2月 18 01:07 remi.repo

ただ、リポジトリを追加しただけだと、有効化されていないため、以下のコマンドを実行して有効化します。

$ yum info --enablerepo=remi,remi-php73 php

これで有効化されました。

 

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

では早速インストールしていきましょう。

普通にインストールのコマンドを実行しても、下記の様なエラーがでるため、パッケージの一覧を引数に付与する必要があります。

$ yum -y install --enablerepo=remi,remi-php73 php php-mbstring php-xml php-xmlrpc php-gd php-pdo php-pecl-mcrypt php-mysqlnd php-pecl-mysql

これで、phpのパッケージのインストール完了です。

 

php.iniの設定

インストールが完了したらphp.iniファイルの設定を行います。

今回は最低限必要な設定を行います。

まず。本ファイルのバックアップファイルをとっておきます。

$ cp -p /etc/php.ini /etc/php.ini.org
$ vi /etc/php.ini

最低限設定する内容

# PHPのバージョンを非表示設定
expose_php = Off

# アップロードサイズ(ここでは100MBに設定
post_max_size = 100M

# タイムゾーンの設定
date.timezone = "Asia/Tokyo"

# マルチバイトの設定(日本語)
mbstring.language = Japanese

# エンコード設定
mbstring.internal_encoding = UTF-8

# HTTP出力字の文字コード設定
mbstring.http_input = UTF-8

# 文字コード自動検出を設定
mbstring.detect_order = auto

その他、環境に合わせて設定してください。

php-fpmパッケージインストール

$ yum -y install --enablerepo=remi,remi-php73 php-fpm

インストールが完了したら、自動起動設定を行います。

$ systemctl enable php-fpm

 

NginXの設定変更

phpを動作させるために、NginXの設定ファイルの変更を行います。

もともとのdefault.confファイルのバックアップをとり、修正します。

$ cp -p /etc/nginx/conf.d/default.conf /etc/nginx/conf.d/default.conf.org
$ vi /etc/nginx/conf.d/default.conf

Locationに「index.php」を追加します。

location / {
        root   /usr/share/nginx/html;
        index  index.php index.html index.htm;
    }

また、phpをfastCGIで動作する様に設定します。
(コメントを外します)

location ~ \.php$ {
        root           html;
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
        include        fastcgi_params;
    }

設定が正しいかどうか確認します。

$ nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

successfulとなれば、NginXを」再起動します。

$ systemctl restart nginx

動作確認

インストールが正常に完了しているかどうか、確認してみます。

「/usr/share/nginx/html」に「index.php」を作成します。

vi /usr/share/nginx/html/index.php

上記ファイルに「<?php phpinfo(); ?>」を記載し保存します。

対象のサーバURLにアクセスし、下記が表示されることを確認してください

 

index.phpを指定して、File Not Foundと表示される場合

原因としては、下記が考えられます。

  • nginxの設定が正しく設定されていない。
  • php-fpmの設定が正しくない。

 

NginXの設定確認

確認する観点は下記です。

  1. default.confファイルの locationに「index.php」が記載されているかどうか
  2. default.confファイルの「root」のパスが正しいかどうか
  3. default.confに記載した、拡張子「.php」の設定において、「root」が正しいかどうか、または、index.phpが存在するかどうか
  4. default.confの「fastcgi_param」のパスが間違っている

上記が問題ない場合は php-fpmの設定が正しくない可能性が高いです。

筆者は、4つめの設定パスが間違っていたため、エラーとなりました。

$ vi /etc/nginx/conf.d/default.conf

/script を $document_root に変更します。

#fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
fastcgi_param  SCRIPT_FILENAME  /$document_root$fastcgi_script_name;

NginXを再起動します。

systemctl restart nginx

 

php-fpmの設定確認

  • 実行ユーザ名が「apache」のままになっている。
$ ps aux | grep php-fpm
root     18670  0.0  0.7 354364 13692 ?        Ss   17:56   0:00 php-fpm: master process (/etc/php-fpm.conf)
apache   18674  0.0  0.4 356448  8184 ?        S    17:56   0:00 php-fpm: pool www
apache   18675  0.0  0.4 356448  8184 ?        S    17:56   0:00 php-fpm: pool www
apache   18676  0.0  0.4 356448  8184 ?        S    17:56   0:00 php-fpm: pool www
apache   18677  0.0  0.4 356448  8184 ?        S    17:56   0:00 php-fpm: pool www
apache   18678  0.0  0.4 356448  8192 ?        S    17:56   0:00 php-fpm: pool www
root     22730  0.0  0.0 112720   980 pts/1    S+   18:16   0:00 grep --color=auto php-fpm

apacheとなっています。

php-fpmの設定ファイルを修正します。

実行ユーザはデフォルトでは「nginx」なのでその様に設定

$ vi /etc/php-fpm.d/www.conf

下記のように設定し、保存します。

user = nginx
group = nginx

php-fpmを再起動します。

systemctl restart php-fpm

 

最後に

phpinfoが表示されない原因を見つけるのに時間がかかりましたが、問題なく表示できました。

最短でPHP環境を構築したい場合(テスト環境は開発環境)は参考にしてみてください。