WordPressを二つ動かす
/ と /labo/suzuki で二つのWordPressを動かす。
dockerコンテナを用意する
Dockerを使ってWordPressの動くウェブサーバーを立ち上げるに従って、二組のコンテナを立ち上げる。
以後/で動かしたいほうをwpa、/labo/suzukiで動かしたいほうをwpbとする。
apacheの設定
dockerのホストで稼働しているapacheの設定をする。
/etc/httpd/conf.d/wordpress.conf
<VirtualHost *:80>
ServerName biochemistry.isc.chubu.ac.jp
ProxyPreserveHost On
ProxyPass / http://localhost:pa/ # paはwpaの稼働するポート番号
ProxyPassReverse / http://localhost:pa/ # 上と同じ
<Location /labo/suzuki>
ProxyPass http://localhost:pb/labo/suzuki # pbはwpbの稼働するポート
ProxyPassReverse http://localhost:pb/labo/suzuki # 上と同じ
</Location>
</VirtualHost>
WordPressの設定
wpaの設定
普通に http://biochemistry.isc.chubu.ac.jp/ にアクセスして設定する。
サイトアドレスは http://biochemistry.isc.chubu.ac.jp にする。
wpbの設定
http://biochemistry.isc.chubu.ac.jp/labo/suzuki/ にアクセスして設定する。
サイトアドレスは http://biochemistry.isc.chubu.ac.jp/labo/suzuki にする。
.htaccess の修正
wpbのWordPressの設定をすると.htaccessが自動で更新されます。
ここで/labo/suzuki 以下へのアクセスだけをindex.phpに向けるようにwpbの.htaccessを編集します。
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^labo/suzuki(.*) /$1 [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
.htaccessを不意にWordPressが変更しないように、アクセス権を変えておくといいです。
失敗したときの対処法
WordPressのサイトアドレスやWordPressアドレスを間違えると、設定画面にたどり着けなくなります。
その場合はデータベースに接続して、直接値を書き換えます。
# mysql -u root -p # -- mysqlのデータベースにログイン
Enter password: (コンテナ作成時にMYSQL_ROOT_PASSWORDとして設定したパスワードを入力)
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
| wordpress | # <-- これがwordPressのデータベース。WordPressの設定時に変更しているかも
+--------------------+
mysql> connect wordpress; # -- データベースへ接続
mysql> show tables; # -- テーブル一覧
+-----------------------+
| Tables_in_wordpress |
+-----------------------+
| wp_commentmeta |
| wp_comments |
| wp_links |
| wp_options |
| wp_postmeta |
| wp_posts |
| wp_term_relationships |
| wp_term_taxonomy |
| wp_termmeta |
| wp_terms |
| wp_usermeta |
| wp_users |
+-----------------------+
12 rows in set (0.00 sec)
mysql> desc wp_options; # -- テーブルの詳細
+--------------+---------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+--------------+---------------------+------+-----+---------+----------------+
| option_id | bigint(20) unsigned | NO | PRI | NULL | auto_increment |
| option_name | varchar(191) | NO | UNI | | |
| option_value | longtext | NO | | NULL | |
| autoload | varchar(20) | NO | | yes | |
+--------------+---------------------+------+-----+---------+----------------+
4 rows in set (0.01 sec)
mysql> select * from wp_options where option_name in ('siteurl', 'home');
+-----------+-------------+-----------------------------+----------+
| option_id | option_name | option_value | autoload |
+-----------+-------------+-----------------------------+----------+
| 2 | home | http://www.example.com:8000 | yes | # -- WordPressを設定したときに開いたURL
| 1 | siteurl | http://www.example.com:8000 | yes |
+-----------+-------------+-----------------------------+----------+
mysql> update wp_options set option_value = 'http://main.example.com' where option_id in (1, 2);
mysql> exit # -- mysqlを終了する