WordPress の評価用サイト(某所のクローン)を作った

当初、せっかくなので 1GB VM x 2 がずっと無料で使えると一部で話題の Oracle Cloud Platform の Always Free Services にチャレンジしてみようと思ったが、インスタンスを作るところで “Out of host capacity” と言われて挫折。申込みが殺到していて、雲の中で物理キャパが足りていない模様です。来週またチャレンジしてみる予定。中の人がんばれ!

仕方がないので、個人で借りている EC2 の一部を間借りすることに。このインスタンスではすでに別の WordPress サイトが動いているので、ミドルウェア的には準備 OK。インスタンスのサイズは t2.micro なので Mem 1GB。自己所有ドメイン(DNS は Route53)に CNAME co-jp-rc を追加。ちなみに co-jp-rc は『某サイト.co.jp の RC(Release Candidate)』という意味。

次に、Web サーバにバーチャルホストを追加する。

$ cd /etc/nginx/conf.d
$ sudo vi co-jp-rc.conf
# /etc/nginx/conf.d/co-jp-rc.conf
server {
    listen      80;
    server_name co-jp-rc.example.com;
# 大きめのファイルをインポートするので制限を緩和(nginx)
    client_max_body_size 512m;
    root        /var/www/co-jp-rc;
    index       index.html index.htm index.php;
    fastcgi_read_timeout 3600;
    access_log  /var/log/nginx/co-jp-rc_access.log;
    error_log   /var/log/nginx/co-jp-rc_error.log;

    location ~ \.php$ {
      try_files     $uri = 404;
      include       /etc/nginx/fastcgi_params;
      fastcgi_pass  unix:/var/run/php-fpm/php-fpm.sock;

      fastcgi_index index.php;
      fastcgi_split_path_info  ^(.+\.php)(/.+)$;
      fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
      fastcgi_param PATHINFO        $fastcgi_path_info;
      fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
# 大きめのファイルをインポートするので制限を緩和(php)
# 後述の All-in-One WP Migration で必要になる。
      fastcgi_param PHP_VALUE "
    upload_max_filesize=512M
    post_max_size=512M
    memory_limit=256M
    max_execution_time=300
    max_input_time=300";
    }

    # Disallow access
    location ~ /\.(ht|git|svn) {
      deny all;
    }
    location = /robots.txt {
      deny all;
    }

    # Don't record access to favicon
    location = /favicon.ico {
      access_log off;
      log_not_found off;
    }
}

# 文法チェック
$ sudo nginx -t

WordPress の追加インストールには wp-cli を利用する。インストールすると wp コマンドが使えるようになる。以下のような感じで新しい WordPress サイトを追加できる。

$ mkdir /var/www/co-jp-rc
$ cd /var/www/co-jp-rc
$ wp core download --locale=ja
$ wp config create --dbname=co-jp-rc --dbuser=root
$ wp db create
$ wp core install \
  --url=co-jp-rc.example.com \
  --title=WP-CLI \
  --admin_user=wpcli \
  --admin_password=wpcli \
  --admin_email=hotta@example.com

# コンテンツファイルの所有者を合わせておかないと、プラグインの削除等で認証を聞かれて困る。
$ sudo chown -R nginx.nginx .
# 設定の反映
$ sudo systemctl restart nginx

これで仮の WordPress サイトが動き出したので、wpcli/wpcli でログイン。wp コマンドで指定したこのクレデンシャル(認証情報)が有効なのは最初だけ。この後すぐに別サイトの中身をインポートで被せるので、クレデンシャル含めて消えてなくなる。

データベースの更新が必要とか言われるのでポチッと。すぐに終わる。

管理画面に入ったら、Web サイトの引っ越しに重宝すると評判の(?) All-in-One WP Migration をインストール。メニューに “All-in-One WP Migration” が現れるので、別サイトで All-in-One WP Migration でエクスポートした xxxx.wpress ファイルを指定してインポート。

これで某サイトのクローンができました。自動的に管理画面からはじき出されるので、『某サイト』側の認証情報を使ってログインし直します。今日はここまで。

(参考情報)