🎃

【Wordpress】PHPの導入と設定を自動化

2024/08/14に公開

目的

  • Wordpressアプリを起動するためのPHPを導入したい。
  • 導入および設定をIaCを使って管理する。

導入するPHP関連のパッケージの意味

パッケージ名 役割 ない場合の影響
php 下記パッケージを使用するために必要 PHP関連のパッケージ使えない
php-fpm PHP向けのCGIモジュール アプリのプロセスが起動しない
php-mysqlnd PHPのMySQL拡張モジュール MySQLと連携できない
php-gd PHPで画像加工ライブラリGD向けの拡張モジュール 画像アップロード時にエラーになる

特によくわからなかったパッケージについてまとめる。

php-fpm

fpm?CGI?(;´д`)

php-mysqlnd

導入方法

まずはepelとremiをインストールするところから始める。

  • Remi Repositoryから取得する事が定説らしい。
    • CentOSやRHEL向けにPHPの最新バージョンや以前のバージョンを提供する有名なリポジトリ。
    • 信頼性も高い。
platform_version = node[:general][:platform_version]

package "epel-release" do
    not_if 'rpm -q epel-release'
end

package "http://rpms.famillecollet.com/enterprise/remi-release-#{platform_version}.rpm" do
    not_if "rpm -q remi-release"
end

次にWordpressを導入するために必要なPHPのパッケージをインストールしていく。

packages = ["#{package_name}-php","#{package_name}-php-fpm","#{package_name}-php-mysqlnd","#{package_name}-php-gd"]
package_name # php83

packages.each do |pkg|
    package pkg do
        version version #8.3.10-1.el9.remi
        action :install
        options "--enablerepo=remi"
    end
end

PHPの設定ファイルを修正する必要があった。

  • ソケットにアクセスするユーザはnginxである必要がある。ので所有者をnginxへ変更した。
  • Nginx設定にて、FastCGIのパスを/run/php-fpm/www.sock;に設定したので、こちらもPHP設定と合わせてやる必要がある。cookbookに直書きしたのは、正直今後変更する必要がないと思ったからである。親切心でコメントだけ書いておく。
phpfpm_conf = "/etc/php-fpm.d/www.conf"

file phpfpm_conf  do
    action :edit
    block do |content|
        content.gsub!(/^user = apache$/, "user = nginx")
        content.gsub!(/^group = apache$/, "group = nginx")
        content.gsub!(/^listen = 127.0.0.1:9000$/, "listen = /run/php-fpm/www.sock" )
        #Align with nginx.conf
    end
    only_if "test -f #{phpfpm_conf}"
end

最後にPHP-FPMを起動させてやる。

service "php-fpm" do
    action [:start, :enable]
end

Discussion