WordPressをインストールしてみよう

 WordPressをインストールしてみようと思います。この記事はMovableTypeで書いているので、WordPressで書くのはまだ先のことだろうと思います。

 WordPressのインストールだけでもこの記事を書き始める前に数回行っています。そういえばと思い過去のメールを漁ってみると2004年末にWordPressを試していました。このときは未だ早いで終わったような気がします。5年前バージョン4.2のときにも評価していて、マルチサイトの使い勝手が悪く既存のサイト構造と合わないということでお蔵入りになりました。MovableTypeだとディレクトリが深かろうが、別のドメイン(同一サーバー)、HTMLでもないメルマガ用テキストであっても出力できたので、使う目的が違いすぎたのだろうと思います。WordPressと相性が悪すぎたんですね。横道へそれました。

インストール前の環境

 それぞれ次の状況となっています。

CentOS 7: 7.8.2003 (Core)
Apache httpd: 2.4.6
MariaDB: 10.4.12-1
PHP: 7.4.5
WordPress: 5.4.1

WordPressのインストール準備

 MySQL(MariaDB)のデータベースを使用するので、事前に準備します。文字コードセットは変更しないので、utf8mb4です。

$ mysql -u root -p
MariaDB [(none)]>create database wordpress;
MariaDB [(none)]> create user 'wordpress'@'localhost' identified by 'wordpressのパスワード';
MariaDB [(none)]> grant all privileges on wordpress.* to 'wordpress'@'localhost' identified by 'wordpressのパスワード';

インストールディレクトリは次のようにしています。評価のためサブドメインで環境を分けています。もちろんHTTPSが前提です。

~/wordpress
 ├ htdocs (ドキュメントルート)
 └ log

wordpress.orgより最新版をダウンロードし、ドキュメントルートへ配置します。WordPressをコピーする前に.htaccessを設置して外部からのアクセスを排除します(排除しないとセットアップが終わるまでに他者へアクセスされる可能性があります)。

$ cd ~/wordpress
$ curl -OL https://ja.wordpress.org/latest-ja.tar.gz
$ tar xzf ./latest-ja.tar.gz
$ ls
htdocs latest-ja.tar.gz log wordpress
$ touch htdocs/.htaccess
$ vim htdocs/.htaccess
$ cp -pR ./wordpress/* ./htdocs

インストール初期では、セットアップを見られてはまずいですし、セットアップ直後の1'st post状態もよろしくないので、サイト全体をBasic認証でガードします。.htpasswdファイルは事前にドキュメントルート外へ準備します。パスワードで保護するとともに、気休めですが自ISPからのアクセスのみ許可します。固定IPであればそれを許可します。

~/wordpress/htdocs/.htaccess

AuthUserFile .htpasswdの場所
AuthName "for site owner"
AuthType Basic
require valid-user
order deny,allow
deny from all
allow from .(ピリオド)で始まるリモートホスト名の固定部分

ドキュメントルートが空の状態で、Basic認証が動作することを確認して、WordPressの本体をコピーします。

所有者とパーミッション変更

 WordPressの保守を考慮すると、2種類の設定が考えられます。

1.所有者
apache
2.所有者
ログインユーザー
ディレクトリ
パーミッション
770 701
ファイル
パーミッション
660 604
wp-config.php
等保護すべきファイル
440 404
自動更新可否 ×(手動)
プラグイン
インストール
WordPress プラグイン
ディレクトリは簡単に
インストール可能
手動でプラグイン
ディレクトリへ転送
ファイル改竄可能性
  1. 所有者apache
    Apache httpdの実行アカウントである apache を所有者に設定。保守のためログインユーザーを apache グループへ追加。
    WordPressあるいはプラグインにセキュリティリスクがあったとき、ファイル改竄の可能性はあり得ます。
    プラグインにWordPressバージョン依存が存在したとき、更新時に問題が顕在化する可能性はあります。
    追記)プラグイン追加時はディレクトリに o+rx 、ファイルに o+r が付与されていました。
    また、.htaccessは644、wp-config.phpは666で生成されていました。
  2. 所有者ログインユーザー
    ログインユーザーがファイルのメンテナンスを行う。apache は読み取り・実行のみ許可。
    WordPressあるいはプラグインのセキュリティアップデートが遅れるあるいは行われない場合に、セキュリティリスクの可能性があります。

ここでは、VPSを契約し独立したサーバーとして運用していることを前提として、"1.所有者apache"を選択します。レンタルサーバーでは事情が異なるため、参照しないでください。

所有者をApache httpdを実行する apache へ変更します。

ログインユーザーでファイルメンテナンスを可能とするため、apacheグループへログインユーザーを追加します。

$ sudo gpasswd -a username apache

所有者をapacheへ変更し、パーミッションを変更します。ここではapacheとログインユーザーがアクセス可能とします。

$ sudo chown apache. -R htdocs
$ sudo find ./htdocs -type d -exec chmod 770 {} +
$ sudo find ./htdocs -type f -exec chmod 660 {} +

パーミッションは 775 / 664 でも問題ないと思います。セットアップが終了し、運用が始まったら一部のファイルは、 440 にすることになると思います。

WordPressの初期セットアップ

WordPressをドキュメントルートに設置しているので、Webブラウザより https://サーバーホスト名/ を開きます。

202005-wordpress-setup-start.png

データベース作成時のものを入力します。ここではデータベース名およびユーザー名を wordpress としています。

wp-config.phpファイルがapacheから作成可能状態であれば作成されてここまで進みます。

202005-wordpress-setup-dbcomplete.png

ユーザー名は、このwordPressの管理者となるものを入力します。サイトコンテンツで表示される作成者名はこのユーザー名を表示しますが、管理画面で「ニックネーム」に付け替えできます。
パスワードはランダムで生成されたものが表示されます。変更してもよいし、そのまま使用でもよいのですが、そのままのときは必ずメモしてください。

202005-wordpress-setup-blogsetup.png

これでWordPressのインストールが終了しました。

202005-wordpress-setup-complete.png

いくつかアクセス保護を追加

 インストールが終了した段階で htdocs/.htaccess ファイルには、サイト全体のBasic認証によるアクセス保護と、WordPress専用のディレクティブがあるのみです。

サイト全体のアクセス保護は、公開できる準備が出来たら削除します。いくつかのファイルは公開が望ましくないためアクセス保護が必要です。次をWordPress専用のディレクティブの後ろへ追加します。

~/wordpress/htdocs/.htaccess

(中略)
# END WordPress

<Files wp-login.php>
AuthUserFile .htpasswdの場所
AuthName "for site owner"
AuthType Basic
require valid-user
order deny,allow
deny from all
allow from .(ピリオド)で始まるリモートホスト名の固定部分
</Files>

<FilesMatch "^(wp-config\.php|wp-mail\.php|install\.php)">
order allow,deny
deny from all
</FilesMatch>

続いて、WordPressの各部分へ行く予定。

前へ

MovableTypeをインストール

次へ

さくらのVPSを大阪で立てた