Studio ilia

Wordpress、ゲームコンテンツ開発ブログ

CentOS 8に構築したApacheにPHPとPHP-FPMの導入

PHPについて

PHP(ピー・エイチ・ピー)は 「The PHP Group」 によってコミュニティベースで開発されているオープンソースの汎用プログラミング言語です。
サーバーサイドで動的なWEBページ作成するための機能を多いのが特徴です。

本手順ではWEBブログツールの「WordPress」を安定稼働させるためのPHPの構築を行います。

 

▼公式WEB

 

構築環境
  • CentOS Linux release 8.2.2004 (Core)
  • httpd 2.4.37-21
  • PHP 7.3.20
  • WordPress 5.5
  • mysql 8.0.21

 

▼PHPインストールVer
CentOS 7まで5.4系のPHPが採用されているけど、CentOS 8からは7.2系が採用されています。
違いはApacheが『eventMPM』に対応していることです。
MPMは (Multi Processing Module) マルチプロセッシングモジュールの略で、WEBブラウザからのリクエストをApacheが効率よく並列処理をするための仕組みをモジュール化したもの。
ブラウザからのリクエストに対して外部プログラムを呼び出して処理をするCGIや、データベースとPHPにて動的に処理されるWordpressなどのWEBページに多数のリクエストが発生した際にサーバーのパフォーマンスをあげることができるのです。

 

このMPMにはいくつか種類があり、それぞれの特徴があります。

prefork WEBブラウザからリクエストが来る前に予め子プロセスを待機させておくことで子プロセスの生成回数を減らしパフォーマンスを上げる仕組みです。
worker マルチスレッドとマルチプロセスのハイブリッド型でpreforkと比べてプロセス数を抑えることができるのでCPUやメモリのリソース消費が少ないです。
しかしスレッドを使うためmod_phpなどの非スレッドモジュールにはパフォーマンスを発揮できないのです。
event Apache2.4系から導入されたworkerをベースとしたマルチスレッドモデルとマルチプロセスモデルのハイブリッドモデルです。
workerはサーバーからのレスポンス後にKeepAliveがの処理でリソースを使っていましたが、eventはサーバーからのレスポンス後、KeepAliveなどのコネクション管理を別のスレッドに任せるため、サーバースレッドのリソースが空いて次のリクエストを処理できるという仕組みです。
workerと同じくスレッドを使用するモデルです。
結局FPMは何を使う?

preforkはメモリ消費が多いから、非スレッドモデルのプログラムを動かさない限りeventが良いかなぁと思います。

 

▼php-fpm
FPM(FastCGI Process Manager)はPHPスクリプトをFastCGIとして動作させるための仕組みで、高負荷時のサーバーでパフォーマンスを発揮できます。

本手順ではこちらの構築も行います。

備考

通常のCGIは、WEBブラウザからのリクエストがある度にプロセスの生成と破棄を行なっており、大量のリクエストがあればその分だけリソースを食いつぶしていた。
FastCGIは、初回リクエスト時に起動したプロセスをメモリにキャッシュして、次回以降のリクエスト処理はメモリに保持されたプロセスを実行することでCGIよりもパフォーマンスを向上させているのです。

 

 

PHPのインストール

▼PHP関連パッケージの一覧

 

▼Wordpressで必要なPHPパッケージ

php PHPの本体。
php-xml XMLを利用できるようにするモジュール。
php-xmlrpc XML-RPCを利用できるようにするモジュール。
外部システムからの投稿や画像のアップロードにしようされるが脆弱性があるためWordpressの設定を変更する必要あります。
php-json JavaScriptObjectNotationを利用できるようにする拡張機能。
php-mbstring 日本語などマルチバイト文字に対応させるためのモジュール。
php-gd 画像を処理するために必要なモジュール。
php-mysqlnd MySQLを利用できるようにするモジュール。
php-pdo PHPからデータベースのアクセスを抽象的にできるモジュール。
MySQLやPostgreSQL等、どのデータベースを使用しても同じプログラムの書き方で使用できます。

 

▼PHP本体とモジュールのインストール

 

▼インストールされたPHPパッケージを確認
リストの結果をパイプ「|」でgrep コマンドに送り「php」という文字列のみ表示。

 

▼インストールされたPHPのバージョン確認

 

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

 

 

php-fpmのコンフィグを設定

 

 

phpのコンフィグ変更

 

 

 

php-fpmの起動

▼php-fpmを起動

ココに注意

php-fpmの起動時にエラーが出る場合はApache実行ユーザーと上記php-fpmのユーザーの不一致。
useraddでのユーザー作成含め、その辺りを見直しましょう。

 

▼php-fpmの起動後確認

 

▼php-fpmの自動起動設定

 

php-fpmの自動起動確認

 

 

phpの動作確認

▼phpファイルの作成
WEBから設置PHPにアクセスすると、phpの詳細情報を表示させるコードを記述します。
Apacheのドキュメントルートに設置したPHPファイルを設置してください。

 

 

▼ブラウザでアクセス
設置したPHPファイルにブラウザからアクセスして下記画像のようなPHPのインフォメーションが表示されれば動作しています。

http://192.168.0.50/phpinfo.php

 

 

エラーログについて

▼PHPのエラーログの出し方

 

 

▼PHP7でMySQLエラー発生時

エラー内容

Call to undefined function mysql_connect()

 

 

 

Home
Profile
Menu
Search