サブドメインの変更とWordPressの移行

2016/05/26

ポンコツおっさんシロは、サブドメインを変更したくなりました。

そもそも、WordPressを設置した際は、「ポンコツおっさんシロ」というニックネームではなかったので、別のサブドメイン名を使っていました。

しかし、このニックネームに合うように、サブドメイン名もponkotuに変更しましたのでその時の備忘録です。(備忘録ですので、詳細は他のサイトを参考にしてください。)

やりたいこと

xxx.yourdomain.comから、ponkotu.yourdomain.com
にサブドメインを変更し、WordPress設置ディレクトリを、
/home/www/xxx_blog/から/home/www/ponkotu_blog/
に変更します。

データベースのバックアップとダウンロード

まずは、データベースをバックアップします。

WordPressのプラグイン「BackWPup」を使ってデータベースをバックアップしました。
このプラグインは、cronで定期的にバックアップがとれるので便利ですね。

バックアップしたデータベースファイル「xxxxxx.zip」をPCにダウンロードして、その中の「xxx.sql」を取り出します。

データベースの修正

テキストエディタで、「xxx.sql」を一括置換します。

置換内容
/home/www/xxx_blog → /home/www/ponkotu_blog
xxx.yourdomain.com → ponkotu.yourdomain.com

PhpMyAdminにログイン

PhpMyAdminにログインします。
※サーバー内にPhpMyAdminをインストールしている必要があります。

新規データベースの作成

データベースponkotuを作成します。
※データベース名は適当で構いません。

データベースのインポート

先ほど、テキストエディタで修正した「xxx.sql」をインポートします。

データベースの修正(サブドメインの文字数が異なる場合のみ)

前のサブドメイン名の文字数とponkotuの文字数(7文字)が同じであれば、問題ないのですが、異なる場合は、トップページがうまく表示されません。そのため、データベースを修正します。

私の場合、前のサブドメインとの文字数の差が2文字分ありました。

wp_optionsテーブルの修正

まず、データベースのwp_optionsテーブルのoption_nameからWordPressで使用しているテーマを見つけます。
私が利用させていただいているのは、stinger7なのでoption_nameの「theme_mods_stinger7」と「theme_mods_stinger7child」のoption_valueを修正します。

前のURLと現在のURLとの文字数の差が+2文字で、” ”内に、テキストエディタで置換されたURLが1箇所記載されてましたので例えばs:49だった場合、s:51に変更します。
全部で3箇所修正箇所がありました。(stinger7childも含めると計6箇所修正)

s:49:"xxxxxxxxxxxxxxxxxx";

s:51:"xxxxxxxxxxxxxxxxxx";

次に、データベースのwp_optionsテーブルのoption_name「widget_text」を見ると、なぜかoption_valueにデータが正しく入っていません。そこで、前のデータからコピーして移し変えます。
そして、そのデータの” ”内に、前のURLが含まれている場合は、すべて現在のURLに変更します。

その後、前のURLと現在のURLの文字数の差が+2文字で、2箇所のURLを変更した場合、例えばs:696をs:700に変えます。
s:696:"xxxxxxxxxxxxxxxxxx";

s:700:"xxxxxxxxxxxxxxxxxx";

DNSレコードの追加

zoneファイル(正引き)に

ponkotu   IN    A   xxx.xxx.xxx
※xxxはIPアドレス

を追加

Webサーバー設定ファイルの変更

エラーログ等のパスは、必要に応じて変更します。

Apacheの場合(httpd.conf)

ServerName ponkotu.yourdomain.com
DocumentRoot /home/www/ponkotu_blog/public_html/

nginxの場合(ponkotu.conf)

server_name ponkotu.yourdomain.com;
root   /home/www/ponkotu_blog/public_html;

ブログディレクトリのコピーと所有者変更

ディレクトリ名を単に変更すれば、特にコピーする必要はないのですが、バックアップのつもりでコピーしました。

前のブログディレクトリを丸ごとコピー

# cp -r /home/www/blog/xxx_blog /home/www/blog/ponkotu_blog

所有者変更

Apacheなら

# chown -R apache:apache /home/www/blog/ponkotu_blog

nginxなら

# chown -R nginx:nginx /home/www/blog/ponkotu_blog

wp-config.phpの修正

ponkotu_blogディレクトリ内にあるwp-config.phpを

define('DB_NAME', 'ponkotu');

に修正します。

Webサーバーの再起動

Apacheの場合

# /etc/init.d/httpd restart

nginxの場合

# /etc/init.d/nginx restart
# /etc/init.d/php-fpm restart

 

 

 

 

-サーバー関連, 備忘録
-, ,