WebサーバーとなるNGINXとPHPの下、WordPressをインストールしますが、必要となるデータベースはMariaDBを、またメール送信にはPostfixを、それぞれCentOS7サーバーにインストールします。
WordPressのインストールについてすが、WordPressは簡単な操作でインストールすることができます。しかしながらプラグインやテーマの追加、WordPressのアップデートなどファイル操作に関わる機能を動作させる場合、ファイルパーミッションを合わせて設定しないとFTP情報を入力するページが表示されるなど、すんなりアップデートできない状況が発生します。
本稿ではレンタルサーバーで操作するような環境を、自身が操作するVPSサーバー上で実現するように、CentOS 7の環境を整えます。
MariaDB、Postfixのインストール
どちらも以前VPSサーバーを構築した時と同様の操作ですので、そちらを参照してください。
MariaDBのインストール
さくらのVPS3日目 PHPとMariaDBのセットアップ
Server version: 5.5.56-MariaDB MariaDB Server
Postfixのインストール
さくらのVPS4日目 PostfixとWordPressのセットアップ
mail_version = 2.10.0
WordPressを取得し、解凍してそのシステム全体を「/usr/share/nginx/www」に登録します。
WordPressのシステムは、クライアントPCからFTPでアップロードすればOKですが、ここではVPSサーバーにsshでログインして以下のようにコマンド操作しました。
操作内容は、WordPressサイトから日本語最新版を取得し、解凍、WordPress全体を「/usr/share/nginx/www」ディレクトリへ移動する作業です。
$ wget https://ja.wordpress.org/wordpress-4.9.6-ja.tar.gz $ tar zxvf wordpress-4.9.6-ja.tar.gz $ mv wordpress/* /usr/share/nginx/www
ファイル操作は、FTPSを利用したアップロード・ダウンロード、PHPプログラムによるリード・ライトなどがあります。
それぞれ実行時ユーザーが異なるため、動作時にファイルパーミッションのチェックで動作が拒否される場合が発生します。
ここではそれを避けるための操作環境の設定について、実施した内容を記述します。
1.これまでの設定
異なるユーザーがファイル操作できるように共通グループ「webuser」を登録し、自身のログインユーザーIDとNGINXが動作するときのユーザーID「nginx」に「webuser」グループを追加、またWebドキュメントに関わるファイルパーミッションを「664」とし、ディレクトリ(ドキュメントルート)には「SGID」をセットしてグループ「webuser」を継承するようにしました。
これにより、FTPクライアントからのファイルアップロードは、オーナーとして自身のログインユーザーID、グループは「webuser」でファイルが生成され、またコピー・移動・削除などの操作ができるようになりました。
2.WordPressのアップデート
WordPressのアップデート動作はPHPプログラムで動作するので、PHP-FPMの設定ファイルで「user」と「group」を「nginx」に設定しており、すんなり動作するかと思いましたが、FTP情報の入力画面が出力されてしまいました。
そこで何か情報がないか調べたところ、次のサイトに対処方法の記事が掲載されていました。
この記事の中で、WordPressの設定ファイル「wp-config.php」にファイルシステムの方式「FS_METHOD」を「direct」に定義する方法を取りました。挿入箇所は「WP_DEBUG」の下にしました。
define('FS_METHOD', 'direct');
通常デフォルトでこの設定が利用されるようですが、今回はwp_config.phpに上記定義を明示的に追加することで、FTP情報の入力画面が出力されずに動作するようになりました。
3.アップデートされたファイルのグループ
上記の設定でアップデートされるようになりましたが、アップデートされたファイルのグループが「nginx」となり、意図した「webuser」で登録されていません。
そこでPHP-FPMの設定ファイル「/etc/php-fpm.d/www.conf」の「group」項目を、「nginx」から「webuser」に変更してリスタートしました。
4.アップデートされたファイルのパーミッション
アップデートされたファイルのパーミッションを見ると「644」となっており、グループ権限はリードオンリー状態でした。意図したパーミッションは「664」とリード・ライトできる状態です。
そこでPHP-FPMのUMaskの設定を変更しました。「systemctl」コマンドを利用してエディターで内容を設定します。
systemctl edit php-fpm.service [Service] UMask=002
設定内容は「/etc/systemd/system/php-fpm.service.d/override.conf」ファイルに登録されます。