サブドメインにWordPressを移行する
前書き
仕事で依頼された、ブログサイトのWordPressをテストサイト(Xserver)から本番サイト(Sakura)のサブドメインとして移行した手順です。
テストサイト
例:https://test.com
↓
本番サイト(https://www.example.com)のサブドメイン
例:https://blog.example.com
手順
- ブログサイトのバックアップ
- WordPressファイル
- データベース
- サブドメインの追加
- サブドメインのAレコードの追加
- サブドメインのSSLの設置
- サブドメインのBasic認証をかける
- サブドメインのphpバージョンを指定する
- ブログのWPファイルをアップロード
- ブログのデータベースをアップロード
- 「Better Search Replace」というWPのプラグインで旧URLを一括で更新する
ブログサイトのバックアップ
- WordPressファイル
FTPからバックアップを取ります - データベース
phpMyAdminからsqlファイルをエクスポートします
サブドメインの追加
blog.example.com を新規追加します。
左メニューにある ドメイン/SSL > ドメイン/SSL を選択します。
「ドメインを新規追加」ボタンを押します。 
「さくらインターネットで取得の独自ドメインを使う」項目にある「サブドメインを指定する」チェックを入れます。サブドメイン名を入力したら「追加」ボタンを押します。 
サブドメインの A レコードの追加
今回はドメインもさくらから取っているため、さくらインターネットのドメイン画面にログインします。
該当するドメイン(example.com)の「ゾーン」を選択します。
ゾーン情報画面にある編集を押して、サブドメインのAレコードを追加します:
エントリ名:blog.example.com
タイプ:IPアドレス(A)
データ:(IPアドレス)
DNSチェック:チェックしなくてもいい


サブドメインのSSLの設置
無料SSL(Let’s Encrypt)を設定します。
手順は下記サイトを参考にしてください。
作成したサブドメインに無料の独自SSL設定をする
- 左メニューにある ドメイン/SSL > ドメイン/SSL を選択します。
- 設定しているドメイン一覧からSSL設定するサブドメインの「SSL」を選択してください。
- 「登録設定を始める SSL証明書の種類を選択」をクリックしてください。
- 「Let’s Encryptの利用ポリシーに同意する」にチェックを入れ、「Let’s Encrypt (無料SSL)」の「利用する」をクリックします。
- これでサブドメインへの無料独自SSLの設定は完了です。
無料SSLについて詳しく知りたい場合、公式サイトからご確認ください:
無料SSLサーバー証明書 Let's Encrypt
無料SSL(Let’s Encrypt)を設定したい
無料SSL(Let’s Encrypt)のよくある質問
サブドメインのBasic認証をかける
移行作業中はBasic認証をかけておいて確認が取れた後に解除します。
※下記の手順は参考サイトから抜粋したもので、詳しい操作画面の画像はサイトからご確認ください。
さくらインターネットでコントロールパネルからベーシック認証を設定する
- 左メニューにある Webサイト/データ > ファイルマネージャー を選択します。
- 左のツリーからベーシック認証を設定したいフォルダを選択します。
- 上部メニューの 表示アドレスへの操作 > アクセス設定 を選択します。
- 「パスワード制限」タブで「パスワード制限を使用する」にチェックを入れ、パスワードファイルの編集をクリックします。
- ユーザの追加をクリックします。
- ベーシック認証で使用するユーザー名とパスワードを入力して、OKをクリックします。
これで一通りの設定ができたので、OKをクリックして設定完了します。
指定したディレクトリにアクセスして、ベーシック認証がかかっていることを確認できればOKです。
.htaccessは以下のような内容で生成されていました。
DirectoryIndex index.html index.htm index.shtml index.php index.cgi
Options -Indexes
AuthUserFile /home/【アカウント名】/www/【選択したフォルダ】/.htpasswd
AuthType Basic
AuthName "Web access"
Require valid-user
Satisfy all
Order deny,allowDirectoryIndex index.html index.htm index.shtml index.php index.cgi
Options -Indexes
AuthUserFile /home/【アカウント名】/www/【選択したフォルダ】/.htpasswd
AuthType Basic
AuthName "Web access"
Require valid-user
Satisfy all
Order deny,allowサブドメインのphpバージョンを指定する
ブログサイトと本番サイトとはWordPressのバージョンが違うため、別バージョンのphpを利用する必要があります。
さくらサーバーは管理画面からはドメイン毎のPHPバージョン切り替え設定ができませんが、.htaccessとphp.cgiをサーバーにあげることで切り替えられます。
今回はサブドメインごとにphpバージョンを切り替えるので、サブドメインのディレクトリの直下に配置します。(例:/home/example/www/blog.example.com)
手順
.htaccessとphp.cgiを作成して、サーバーにあげる
php.cgi
#!/bin/sh
exec /usr/local/php/7.4/bin/php-cgi#!/bin/sh
exec /usr/local/php/7.4/bin/php-cgi7.4の部分はphpのバージョンです。利用したいphpのバージョンを自由に変更してください。
.htaccess
Action myphp-script /php.cgi
AddHandler myphp-script .php .htmlAction myphp-script /php.cgi
AddHandler myphp-script .php .htmlphp.cgiのパーミッションを「755」か「705」に変更します。
phpバーションの確認
シンプルにサブドメインにindex.phpを作成して、下記のコードを記述したら、確認できます。
<?php phpinfo();?><?php phpinfo();?>注意点
php.cgiは必ず文字コードを「UTF-8」で、改行コードを「LF」で作成してください- cgiファイル名は何でもいいので
php.cgiとしました。
参考URL
【さくらインターネット】PHPのバージョンをディレクトリごとに変更する
【さくらのレンタルサーバ】PHPバージョンを切り替える方法
WPファイルをアップロード
テストサイトからコピーしたWPファイルをFTPでサブドメインのディレクトリにアップします。
データベースをアップロード
データベースの作成
左メニューにある Webサイト/データ > データベース を選択します。 「新規追加」を押して、データベース新規作成します。

sqlファイルのインポート
phpMyAdminにログインしてして新規作成したデータベースにテストサイトからエクスポートしたsqlファイルをインポートします。
WPのプラグイン「Better Search Replace」で旧URLを一括で更新する
旧URLがデータベースに残るので、新しいURLを一括で更新します。
「検索」フィールド:test.com
「次と置換」フィールド:blog.example.com
※「ドライランとして実行する」のチェックを入れたら、変更が加えられないため、事前に結果を確認できます。

完了
確認が取れたら、Basic認証を解除します。