サーバー

VPS NGINXとWordPressのインストール

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のインストール

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更新時にFTP情報入力画面が表示される場合の対処方法3つ

この記事の中で、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」ファイルに登録されます。

参考:
systemdで既存のunitを編集する2つの方法