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を終了する