ApacheCentOS 7WordPress ApacheLAMPPHP自宅サーバ

最新のローカル LAMP 環境で WordPress を構築する〜Apache httpd ・PHP 設置編|CentOS 7

wordpress-apache-php-logo Apache
スポンサーリンク

『Apache httpd 2.4.39 ・PHP 7.3.6 設置』編

※ 2019/10/15 追記
WordPress 5.2.4 でも正常動作します。

「最新のローカル LAMP 環境で WordPress を構築する」は、4編に分けてあります。他の記事は ▼ をご参照ください。

いよいよ Apache httpd 2.4.39PHP 7.3.6 バージョンをインストールします。

Apache httpd 2.4 最新版を設置

Apache httpd 2.4 の 最新版 を確認します。(2019/06/19現在)

各種パッケージをコンパイルしてインストールする場合に、よく /usr/local/src にソースファイルを置いてコンパイル作業を行います。
ディレクトリがなければ、mkdir /usr/local/src コマンドで作成してください。後で再度コンパイルする際にも非常に便利です。
ちなみに、./configure–help コマンドでコンパイルオプションを確認できます。

[root@centos7 ~]# mkdir /usr/local/src
[root@centos7 ~]# cd /usr/local/src
[root@centos7 src]# cd httpd-2.4.39/
[root@centos7 httpd-2.4.39]# ./configure --help

Apache httpd 2.4 の最新版に HTTP/2SSL/TLSBrotli モジュールなどを有効化してインストールします。

cd /usr/local/src/
wget http://ftp.kddilabs.jp/infosystems/apache//httpd/httpd-2.4.39.tar.gz

tar xvzf httpd-2.4.39.tar.gz
cd httpd-2.4.39/

./configure \
--enable-http2 \
--enable-brotli \
--with-brotli=/usr/local/lib \
--enable-ssl \
--with-ssl=/usr/local/openssl-1.1.1b \
--with-apr=/usr/local/apr \
--with-apr-util=/usr/local/apr \
--enable-so \
--enable-mods-shared=all \
--enable-mpms-shared=all \

make
make install

設置されたバージョンを確認します。(選択)

[root@centos7 ~]# /usr/local/apache2/bin/httpd -v
Server version: Apache/2.4.39 (Unix)
...

Apache httpd 2.4.39/usr/local/apache2/ 以下にインストールされます。

[root@centos7 ~]# ls /usr/local/apache2/
bin  build  cgi-bin  conf  error  htdocs  htdocs_org  icons  include  logs  man  manual  modules

PHP 7.3.6 設置

PHP 7.3Remi レポジトリから設置できます。Remi レポジトリが依存する EPEL レポジトリを先に追加します。

yum -y install epel-release
yum -y update

Remi レポジトリを追加

rpm -ivh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
rpm --import http://rpms.famillecollet.com/RPM-GPG-KEY-remi

Remi レポジトリを有効化します。

remi.repo

[root@centos7 ~]# vi /etc/yum.repos.d/remi.repo
[remi]
...
enabled=0
 ↓↓↓
enabled=1

remi-php73.repo

[root@centos7 ~]# vi /etc/yum.repos.d/remi-php73.repo
[remi-php73]
...
enabled=0
 ↓↓↓
enabled=1

古いバージョンの PHP がインストールされている場合(PHP 5.6.x)Apache httpd との連動ができない問題が発生する可能性があります。インストールされている既存のバージョンを確認した上で、削除してインストールします。

# 設置されたパッケージを確認
[root@centos7 ~]# yum list installed | cut -d " " -f 1  | grep php

# 古い PHP パッケージを削除します。
[root@centos7 ~]# yum remove -y `yum list installed | cut -d " " -f 1 | grep php`

PHP 7.3.6 をインストールします。

設置される PHP モジュールは Apache httpd 2.4 にも設置されます。
Apache では HTTP/2 ( mod_http2 ) が動作するためには、prefork MPM は使用できない。
HTTP/2 の下で PHP を利用するためには、FastCGI で PHP を設定する必要があります。

したがって、Apache と PHP は event MPM + PHP-FPM の組み合わせで構築します。

yum -y install php
yum -y install php-devel
yum -y install php-pdo
yum -y install php-mysqlnd
yum -y install php-mbstring
yum -y install php-gd
yum -y install php-pear
yum -y install php-pecl-apc-devel
yum -y install php-fpm

設置された PHP パッケージを確認します。

[root@centos7 ~]# yum list installed |grep php
php.x86_64                            7.3.6-3.el7.remi           @remi-php73
php-cli.x86_64                        7.3.6-3.el7.remi           @remi-php73
php-common.x86_64                     7.3.6-3.el7.remi           @remi-php73
php-devel.x86_64                      7.3.6-3.el7.remi           @remi-php73
php-fedora-autoloader.noarch          1.0.0-1.el7.remi           @remi
php-fpm.x86_64                        7.3.6-3.el7.remi           @remi-php73
php-gd.x86_64                         7.3.6-3.el7.remi           @remi-php73
php-json.x86_64                       7.3.6-3.el7.remi           @remi-php73
php-mbstring.x86_64                   7.3.6-3.el7.remi           @remi-php73
php-mysqlnd.x86_64                    7.3.6-3.el7.remi           @remi-php73
php-pdo.x86_64                        7.3.6-3.el7.remi           @remi-php73
php-pear.noarch                       1:1.10.9-3.el7.remi        @remi
php-pecl-apcu.x86_64                  5.1.17-2.el7.remi.7.3      @remi-php73
php-pecl-apcu-devel.x86_64            5.1.17-2.el7.remi.7.3      @remi-php73
php-process.x86_64                    7.3.6-3.el7.remi           @remi-php73
php-xml.x86_64                        7.3.6-3.el7.remi           @remi-php73

PHP バージョンを確認

[root@centos7 ~]# php -v
PHP 7.3.6 (cli) (built: May 28 2019 09:32:59) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.3.6, Copyright (c) 1998-2018 Zend Technologies

【 2019/07/26 追記 】
よりスマートな画像サイズ変更 ( 小さい画像用 ) および PDF サムネイルのサポートするためのImagick / ImageMagick の設定を追加しました!

Apacheと PHP 設定

PHP 7.3.6 を設定します。

[root@centos7 ~]# vi /etc/php.ini

expose_php = On
 ↓↓↓
expose_php = Off

;date.timezone =
 ↓↓↓
date.timezone = 'Asia/Tokyo' 

error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT
 ↓↓↓
error_reporting = E_ALL & ~E_NOTICE

PHP-FPM を設定します。

  • PHP-FPM ( FastCGI プロセスマネージャ ) は、あらゆる規模のサイト、特に忙しいサイトに役立ついくつかの追加機能を備えた代替の PHP FastCGI です。
  • PHP-MPM は preforkworkerevent 3つの種類がある。
  • event MPM は Apache 2.4 系から導入されたマルチスレッド・マルチプロセスモジュールであり、CPU とメモリの使用量が、3つの中で最も少ないモジュールである。
  • PHP-FPM は Apache httpd と同じ実行ユーザ/グループで動作するように設定する
  • 基本的な実行ユーザは daemon である。
[root@centos7 ~]# vi /etc/php-fpm.d/www.conf

user = apache
group = apache
 ↓↓↓
user = daemon
group = daemon

Apache httpd 2.4 と PHP-FPM が同じサーバー上で実行されている場合は、TCP/IP 通信より速度が速い UNIX ドメインソケットを経由するように設定します。

listen = 127.0.0.1:9000
 ↓↓↓
listen = /var/run/php-fpm/php-fpm.sock

;listen.owner = nobody
;listen.group = nobody
;listen.mode = 0660
 ↓↓↓
listen.owner = daemon
listen.group = daemon
listen.mode = 0660

PHP-FPM のログファイルディレクトリの権限も daemon に変更します。

chown daemon /var/log/php-fpm

PHP-FPM を起動して、サービス自動起動を有効にします。

systemctl start php-fpm
systemctl enable php-fpm

SSL 証明書を作成

HTTP/2Brotli は、HTTPS が必須であるため、Apache httpd を設定する前に、SSL 証明書 を作成しておきます。
Let’s encryptを利用して作成するには、Let’s Encrypt ワイルドカード証明書を取得・自動更新を完結する|DNS-RFC2136 をご参照ください。

Apache httpd 2.4.39 設定

元の設定ファイルをバックアップしておきます。

mv -i /usr/local/apache2/conf/httpd.conf /usr/local/apache2/conf/httpd.conf.org
mv -i /usr/local/apache2/conf/extra/httpd-ssl.conf /usr/local/apache2/conf/extra/httpd-ssl.conf.org

設定ファイルを作成します。

最初に元の設定ファイルを修正しながら作成したが、500 エラーが発生してデバッグしても問題が解消されず、結局は新しい httpd.conf ファイルを作成して設定しました。

元の設定ファイルの場所:/usr/local/apache2/conf/httpd.conf.org または、/usr/local/apache2/conf/original/httpd.conf

元の設定ファイルを修正するか、下記の設定ファイルを使用するかは、ご自身が選択してください。

httpd.conf

httpd.conf ファイルを /usr/local/apache2/conf/httpd.conf にコピベーしてください。

# 下記の項目を含め、適宜変更してください。
[root@centos7 conf]# vi /usr/local/apache2/conf/httpd.conf
...

ServerAdmin admin@example.com
ServerName www.example.com:80
...

Include conf/extra/httpd-ssl.conf
Include conf/extra/httpd-vhosts-10-service.conf
...

# 設定を確認
[root@centos7 conf]# /usr/local/apache2/bin/httpd -t
Syntax OK

httpd-ssl.conf

httpd-ssl.conf ファイルを /usr/local/apache2/conf/extra/httpd-ssl.conf にコピペしてください。

mainhost.com と example.com が設定された conf ファイルです。ドメイン名、SSL 証明書の位置などを適宜変更して使ってください。

# 設定を確認してhttpdデーモンを再起動
[root@centos7 conf]# /usr/local/apache2/bin/httpd -t
Syntax OK

[root@centos7 conf]# systemctl restart httpd

httpd-vhosts-10-service.conf

httpd-vhosts-10-service.conf /usr/local/apache2/conf/extra/httpd-vhosts-10-service.conf にコピペしてください。
mainhost.com と example.com が設定された conf ファイルです。ドメイン名など適宜変更して使ってください。なお、このファイルには 301リダイレクト の設定 も含まれています。

設定したバーチャルホストの内容を確認してください。( 任意 )

[root@centos7 extra]# /usr/local/apache2/bin/httpd -S

Apache httpd 2.4.39 用 Systemd サービスファイル作成

Apache httpd 2.4.39PHP-FPM サービスファイルには、それぞれの依存関係を追加して作成します。

ここでは Apache 2.4.6 バージョンが存在するので、httpd2.service で登録します。

httpd2.service

[root@centos7 ~]# vi /etc/systemd/system/httpd2.service

[Unit]
Description=The Apache HTTP/2 Server
After=network.target remote-fs.target nss-lookup.target
Requires=php-fpm.service          #  << 依存関係設定(php-fpm)
Documentation=man:httpd(8)
Documentation=man:apachectl(8)

[Service]
Type=forking
ExecStart=/usr/local/apache2/bin/apachectl start
ExecReload=/usr/local/apache2/bin/apachectl graceful
ExecStop=/usr/local/apache2/bin/apachectl stop

[Install]
WantedBy=multi-user.target

PHP-FPM にも依存関係を設定します。

php-fpm.service

[root@centos7 conf]# vi /etc/systemd/system/multi-user.target.wants/php-fpm.service
[Unit]
Description=The PHP FastCGI Process Manager
After=syslog.target network.target
Requires=httpd2.service        #   <<  依存関係設定(httpd2)
...

作成したサービスファイルを Systemd へ登録します。

Systemd へ登録

systemctl daemon-reload

Systemd へ反映されたか確認します。

[root@centos7 ~]# systemctl list-unit-files | grep httpd
httpd.service                                 enabled
httpd2.service                                disabled

httpd が起動中であれば stop!して、

[root@centos7 ~]# systemctl stop httpd

httpd2 サービスを開始 ( start ) して異常がなければ ( status ) 、有効 ( enable ) にします。

[root@centos7 ~]# systemctl start httpd2
[root@centos7 ~]# systemctl status httpd2
● httpd2.service - The Apache HTTP/2 Server
   Loaded: loaded (/etc/systemd/system/httpd2.service; enabled; vendor preset: disabled)
   Active: active (running) since Thu 2019-05-23 17:15:21 JST; 7s ago
  Process: 18744 ExecStart=/usr/local/apache2/bin/apachectl start (code=exited, status=0/SUCCESS)
 Main PID: 18747 (httpd)
   CGroup: /system.slice/httpd2.service
           ├─18747 /usr/local/apache2/bin/httpd -k start
           ├─18748 /usr/local/apache2/bin/httpd -k start
           ├─18749 /usr/local/apache2/bin/httpd -k start
           └─18750 /usr/local/apache2/bin/httpd -k start

May 23 17:15:21 centos7 systemd[1]: Starting The Apache HTTP/2 Server...
May 23 17:15:21 centos7 systemd[1]: Started The Apache HTTP/2 Server.
[root@centos7 ~]#
[root@centos7 ~]# systemctl enable httpd2

httpd を無効 ( disable ) にしておきます。

[root@centos7 ~]# systemctl disable httpd

Firewall 設定

80/TCP443/TCPポートをオープンしてファイアウォールを再起動して反映します。

firewall-cmd --add-port=80/tcp --permanent
firewall-cmd --add-port=443/tcp --permanent
firewall-cmd --reload

確認します。

# 環境によって内容は異なります。
[root@centos7 conf]# firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: p1p1
  sources:
  services: samba http dns smtp smtps ssh https imaps   # << ここに http https が表示されれば OK!
  ports: 1999/tcp
  protocols:
  masquerade: no
  forward-ports:
  source-ports:
  icmp-blocks:

以上で、設定が完了しました。
次回MySQL 8.0.6 をインストールおよび設定します。

スポンサーリンク

参考文献

Migrating from PHP5.6.x to PHP7.0.x
PHP-FPM – A simple and robust FastCGI Process Manager for PHP

コメント

タイトルとURLをコピーしました