PHP-FPM(php7.4) Apache2.4 でWebサーバ構築 on CentOS8

PHP-FPM(php7.4) Apache2.4 でWebサーバ構築 on CentOS8

2021-01-175 min read

目次

  1. 概要
  2. 環境
  3. php74-のインストール
  4. apacheのインストール
  5. php-fpmの設定を変更する
  6. php-fpm-の起動
  7. apacheの起動
  8. 確認
  9. おまけ-エラーと解決方法
  10. 参考にしたサイト

概要

CentOS8 に PHP7.4 + Apache2.4 をインストールしてWebサーバを構築した際のメモです。 ここで紹介するのはデフォルトと殆ど変わらないオプションでApache + php-fpmを構築する手順です。

環境

  • CentOS8.3 (docker)
cat /etc/redhat-release 
CentOS Linux release 8.3.2011

docker は次のオプションで起動する。

$ docker run --detach --name test -p 8080:80 --privileged  -it centos:8 /sbin/init

※ ここで紹介している操作は全てrootユーザで実施しています。

php7.4 のインストール

php7.4のインストールは次のページを参考にしました。

CentOS8 に PHP7.4 インストール

$ dnf module list php # php7.4があることを確認
$ dnf module install php:7.4
$ dnf install php

apacheのインストール

以下のコマンドを実施します。

$ dnf install httpd

php-fpmの設定を変更する

php-fpmの設定を変更します。 設定ファイルは、 /etc/php-fpm.d/www.conf にあります。

+listen.owner = apache
+listen.group = apache

-listen.acl_users = apache,nginx
+;listen.acl_users = apache,nginx

php-fpm の起動

$ systemctl restart php-fpm

でphp-fpmを起動します。以下のコマンドのように statusを確認して active になっていればOKです。

$ systemctl status php-fpm
● php-fpm.service - The PHP FastCGI Process Manager
   Loaded: loaded (/usr/lib/systemd/system/php-fpm.service; disabled; vendor preset: disabled)
   Active: active (running) since Sun 2021-01-17 07:28:31 UTC; 3min 45s ago
 Main PID: 620 (php-fpm)
   Status: "Processes active: 0, idle: 5, Requests: 0, slow: 0, Traffic: 0req/sec"
    Tasks: 6 (limit: 11868)
   Memory: 10.1M
   CGroup: /docker/9cd225d5a0b658092395ffc308219bf22534a1950f2d1cc35b9edd3a5b0837b9/system.slice/php-fpm.service
           ├─620 php-fpm: master process (/etc/php-fpm.conf)
           ├─621 php-fpm: pool www
           ├─622 php-fpm: pool www
           ├─623 php-fpm: pool www
           ├─624 php-fpm: pool www
           └─625 php-fpm: pool www

Jan 17 07:28:31 9cd225d5a0b6 systemd[1]: Starting The PHP FastCGI Process Manager...
Jan 17 07:28:31 9cd225d5a0b6 systemd[1]: Started The PHP FastCGI Process Manager.

apacheの起動

以下のコマンドで apache を起動します。

$ systemctl enable httpd
$ systemctl start httpd

status を確認し activeになっていることを確認します。

systemctl status httpd
● httpd.service - The Apache HTTP Server
   Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled)
  Drop-In: /usr/lib/systemd/system/httpd.service.d
           └─php-fpm.conf
   Active: active (running) since Sun 2021-01-17 07:09:55 UTC; 1min 2s ago
     Docs: man:httpd.service(8)
 Main PID: 278 (httpd)
   Status: "Total requests: 6; Idle/Busy workers 100/0;Requests/sec: 0.102; Bytes served/sec: 5.4KB/sec"
    Tasks: 213 (limit: 11868)
   Memory: 16.9M
   CGroup: /docker/9cd225d5a0b658092395ffc308219bf22534a1950f2d1cc35b9edd3a5b0837b9/system.slice/httpd.service
           ├─278 /usr/sbin/httpd -DFOREGROUND
           ├─282 /usr/sbin/httpd -DFOREGROUND
           ├─283 /usr/sbin/httpd -DFOREGROUND
lines 1-14...skipping...
● httpd.service - The Apache 

確認

/var/www/html に index.php を作成します。

index.php

<?php
phpinfo();

http://localhost:8080/ にアクセスして画面が表示されていればApacheの設定は完了です。

おまけ: エラーと解決方法

上記の作業を実施する時にハマったエラーについて記載します。

"System has not been booted with systemd as init system (PID 1). Can't operate ..."が発生する時

systemd 起動時に次のようなメッセージが出ることがあります。

System has not been booted with systemd as init system (PID 1). Can't operate.
Failed to connect to bus: Host is down

これは docker 起動時に --privileged/sbin/init を指定していないため発生すると思われます。

failed to read the acl of the socket '/run/php-fpm/www.sock'

failed to read the acl of the socket '/run/php-fpm/www.sock'

というエラーが出ている場合や systemctl status php-fpm の結果がfailed の場合は php-fpm の設定に不備があります。

+listen.owner = apache
+listen.group = apache

-listen.acl_users = apache,nginx
+;listen.acl_users = apache,nginx

の設定を追加したら、/run/php-fpm/www.sockが作成され、php-fpmのstatusもactiveになりました。

参考にしたサイト

failed to read the acl of the socket '/run/php-fpm/www.sock'

CentOS 8 標準の Apache と PHP の関係について

CentOS 8のApache環境にPHP 7.2をインストールして使えるようにする手順

Tags
javascript(103)
linux(54)
amazon%20aws(47)
node.js(43)
%E3%82%A2%E3%83%AB%E3%82%B4%E3%83%AA%E3%82%BA%E3%83%A0(36)
typescript(33)
%E7%94%BB%E5%83%8F%E5%87%A6%E7%90%86(30)
html5(29)
php(24)
centos(24)
python(22)
%E7%AB%B6%E6%8A%80%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0(21)
mac(21)
mysql(19)
canvas(18)
opencv(17)
%E9%9B%91%E8%AB%87(16)
docker(16)
wordpress(15)
atcoder(14)
apache(12)
%E6%A9%9F%E6%A2%B0%E5%AD%A6%E7%BF%92(12)
%E3%83%87%E3%83%BC%E3%82%BF%E3%83%99%E3%83%BC%E3%82%B9(12)
amazon%20s3(12)
red%20hat(12)
ubuntu(11)
github(10)
git(10)
vue.js(10)
%E7%94%BB%E5%83%8F%E5%87%A6%E7%90%86100%E6%9C%AC%E3%83%8E%E3%83%83%E3%82%AF(10)
mariadb(10)
aws%20cdk(9)
css3(8)
%E5%8F%AF%E8%A6%96%E5%8C%96(8)
%E5%B0%8F%E3%83%8D%E3%82%BF(8)
amazon%20lightsail(7)
react(7)
%E3%83%96%E3%83%AD%E3%82%B0(6)
cms(6)
oracle(6)
perl(6)
gitlab(6)
next.js(6)
prisma(6)
iam(5)
amazon%20ec2(5)
%E8%B3%87%E6%A0%BC%E8%A9%A6%E9%A8%93(5)
aws%20amplify(5)
nestjs(5)
curl(4)
Author
githubzennqiita
ただの備忘録です。※このブログの内容は個人の見解であり、所属する組織等の見解ではないです。