Linuxを日常的に使う実験ブログ

レンタルサーバーからVPSにWordpressのブログ引越し手順まとめ

 2020-08-12

 2020-08-12

 WordPress

こんにちは今回のテーマは「レンタルサーバーからVPSにWordpressのブログ引越し手順まとめ」です。最近、長年お世話になっていたロリポップさんのレンタルサーバーからVPSに引越しをしましたので、手順などをまとめておこうと思います。 【目次】

環境

以下引越しを行った環境です。

レンタルサーバー(Lolipop)

  • 契約:スタンダードプラン
  • ssh:利用可能
  • DB: MySQL ver.5.6.23-log
  • PHP: 5.6 CGI版

VPS

  • ディストロ:Ubuntu 18.08LTS
  • httpサーバー:nginx
  • DB: MariaDB ver.10.1.44
  • PHP:7.2 php-fpm使用

ファイルの送受信について

引越しを行うにあたり自分のローカル環境を介して旧サーバー(lolipop)とVPSでファイルをやり取りしました。基本的にファイルの送受信についてはsftpおよびrsyncを用いました。一方、旧サーバーにはFTP接続が可能であり、sftpやrsyncに馴染みのない方にはFTPソフトによるファイルの送受信の方が親しみやすいかと考え、FTPが可能な部分はFTPによる送受信も記載しています。

引越しの概要

まずは引越しの概要を把握しましょう。 まず、旧サーバーのデータをローカル環境にバックアップします。新サーバー(VPS)にワードプレスのファイルを配置し、新サーバーにバックアップしたデータを移動します。主な作業としては旧サーバーのデータベースの内容をリストアと、元サーバーのwp-content内のファイルを全て新サーバーのwp-contentにコピーすることです。ここまでできたら現アドレスとは別のアドレスでブログが正常に動作することを確認します。最後にドメインの設定を行い、旧サーバーから新サーバ(VPS)にアクセスするように設定し、作業終了です。 慣れた人には「非常にまどろっこしい手順」に見えると思います。しかし上記の方法は初心者にわかりやすく失敗が少ない方法だと思っています。wp-config.phpを手動で作成できる方や、事前の確認を必要をしない場合はDBとwp-contentの中身を新サーバに移動してwp-config.phpを作成してドメイン設定するだけで完了します。敢えて回りくどいが安全な方法を取っているとご理解いただければ幸いです。

テスト確認用のサブドメインを用意

新サーバーで構築したワードプレスを確認するためのサブドメインを用意します。ここではexample.comでブログを公開していると仮定して話を進めます。まず、test.example.comで新サーバーの動作確認をできるようにします。 多くの場合はドメインのホスティングサービスのDNSをお使いだと思いますので、そちらでtest.example.comのAレコードを新サーバーのIPアドレスに紐づけます。

データベースのバックアップ

ケース1もしくはケース2の何れかの方法で旧サーバーのデータベースをバックアップします。(それ以外の方法でもDBをdumpできれば何でも良いです。こだわりません。)

ケース1:ssh接続してコマンドでバックアップする

今回はsshで接続したサーバーからDBサーバーにアクセスしてバックアップデータを取得しました。まずはSSHにてロリポップサーバーに接続

ssh -p {ポート番号} {ユーザー名}@{ssh.lolipop.jp}
# パスワードを入力してログイン

次にDBをバックアップします。

mysqldump -u {DBユーザー名} -p{パスワード} {DB名} > backup.sql

作成したbackup.sqlはrsyncもしくはsftpコマンドもしくはFTPソフトでダウンロードします。

ケース2:phpMyAdminを利用する場合

ロリポップではphpMyAdminを利用してデータベースにアクセスすることも出来ます。ssh接続が利用できない場合にはこの方法でバックアップすることに鳴ります。この場合はWordPressを新環境へ「まるごと」移転する方法を参考にバックアップデータを取得して下さい。

wp-contentの中身をバックアップ

データベースの中身を移動するだけではブログの引越しは出来ません。ロリポップのサーバーにあるwp-contentディレクトリ内のフィアルをすべてバックアップしましょう。 ロリポップのサーバからファイルをダウンロードする際にはFTPが利用できますのでFTPでダウンロードしてきます。(お好みでrsyncコマンドやsftpコマンドでも問題ないです。)コチラの記事も参考にしてみて下さい。

新サーバーにWordpressをインストールする

ここではWordpressのファイルを新サーバーに配置していきます。

ディレクトリ作成

今回は/var/www/wordpressディレクトリをブログ用のディレクトリとします。 root権限かsudo権限のあるユーザーで以下を実行します。

mkdir -p /var/www/wp
chown webadmin:www-data /var/www/wp
chmod -R g+w /var/www/wp

※DEB系の場合、nginxがwww-dataユーザーで動作することを前提としています。CentOS等の場合nginxはnginxユーザーで動作することも多いと思います。適宜読み替えて下さい。

インストール作業

以下コマンドでwebadminユーザーとなりwordpressをインストールしていきます。

su webadmin

webadminユーザーのホームディレクトリにWordpressファイルをダウンロードしてインストール作業を進めていきます。

cd ~/
wget https://ja.wordpress.org/latest-ja.tar.gz
tar zxvf latest-ja.tar.gz
cp -r wordpress/* /var/www/wp/

これでWordpressがインストール出来ました。

nginxの設定

それではnginxの設定を行いましょう。今回の例ではhttp://test.example.comにアクセスするとブログが見えるようにする作業です。この確認作業は必須ではないですが、実際に VPSでブログが正しく表示されていないか確認せずにドメイン設定をしてしまうとトラブルがあった時に慌てふためくことになりかねないので、実施することをオススメします。 /etc/nginx/site-available/wordpress.conf ファイルを作成します。今回はDeb系のUbuntuでの設定例なのでCentOSや他のディストロでは設定ファイルの構成が異なる可能性があります。設定項目は変わりませんので適宜読み替えて下さい。このwordpress.confは/etc/nginx/nginx.confからインクルードされるファイルです。 /etc/nginx/site-available/wordpress.conf

server {
	listen 80;

	root /var/www/wordpress;

	# Add index.php to the list if you are using PHP
	index index.html index.htm index.nginx-debian.html index.php;

	server_name test.example.com;

	location / {
		try_files $uri $uri/ /index.php?args;
	}

	# pass PHP scripts to FastCGI server
	#
	location ~ \.php$ {
		include snippets/fastcgi-php.conf;
		fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
	}
}

php-fpmでPHPを動作させています。nginxの設定は本題とは逸れますので詳細はご自身の環境に合わせて行って下さい。それではnginxの設定を再読込しましょう

ln -s /etc/nginx/sites-available/wordpress.conf /etc/nginx/sites-enable/
systemctl reload nginx

データベース作成とリストア

ではVPSのMariaDBにデータベースを作成していきます。まずVPSに接続します。VPSへのSSH接続やMariaDBのインストールは済んでいる前提とします。

ssh -p {sshdポート} {ユーザー名}@{ホスト名}
mysql -u root -p
# パスワード入力してログイン

以下MariaDB内でデータベースとデータベースを利用できるユーザーを作成します。ここでは便宜上、作成するデータベース名をwordpress,ユーザー名をbloguserとします。 ※ここではワードプレスと同一サーバー内のMariaDBを使用する前提ですが、他サーバのMariaDBを利用する場合は適宜読み替えて下さい。

[mysql] use mysql; [mysql] create database wordpress; [mysql] create user ‘bloguser’@‘localhost’ identified by ‘{パスワード}’ [mysql] grant all on wordpress.* to ‘bloguser’@‘localhost’ [mysql] quit # MariaDBを一度出る

ではバックアップしたDBのデータbackup.sqlを新規作成したwordpressデータベースにリストアしましょう。

cd {backup.sqlのあるディレクトリ}
mysql -u bloguser -p{パスワード} wordpress < backup.sql

これでデータの流し込みが終わりました。そして、ここがとても大事です!ワードプレスのデータベースはブログのアドレスを保持しているテーブル(wp_options)があり、このアドレスと異なるアクセスの場合リダイレクトさせてしまいます。つまりtest.example.comにアクセスしようとしても現在のexample.com(旧サーバー)にリダイレクトされてしまうのです。確認作業時はここを書き換える必要があります。 以下のSQLコマンドで保持されているアドレスを書き換えます。

update wp_options set option_value ='http://test.example.com' where option_value='http://example.com';

wp-contentの中身をアップロード

次にVPSにインストールしたwordpressの中のwp-content内にバックアップしたファイルをアップロードしましょう。ここではrsyncを用いてアップロードします。

cd {データのあるディレクトリ}
rsync -e "ssh -p {ポート番号}" -auz ./wp-content/ webadmin@{vpsホスト名}:/var/www/wp/wp-content/

これでローカルにバックアップしたwp-content内のファイルは全てVPSにコピーされました。ここでwww-dataユーザーがプラグインやテーマディレクトリ、ファイルに書き込み可能なようにしておきましょう。(ワードプレスのアップロードやテーマの更新に影響があります。) VPSに入って作業します。

chmod -R g+w /var/www/wordpress

ウェブブラウザで初期設定と動作確認を行う

ウェブブラウザでhttp://test.example.comにアクセスし初期設定を行いましょう。以下のように初期設定画面が出ればOKです。データベースの情報を入力してインストール作業を進めましょう。 データベースへの接続情報を入力します。 インストール続行を押します。 「すでにインストールされています」と表示されればOKです。ログインしましょう。 さて、個々までくればもうゴールは間近です。頑張りましょう。ブログ記事が正常に表示されるか、プラグインは正常動作しているか確認して下さい。ここで不具合を全てチェックしておきましょう。

公開のための準備

公開のための準備が整いました。あとは最終調整をして公開するだけです。

データベースのサイトアドレスを元に戻す

正常動作が確認できたので公開の準備を進めていきましょう。まずは先程書き換えたデータベースのアドレスを元に戻します。VPSにsshで入りmysqlにログインして以下のSQLコマンドを実行しアドレスを書き換えます。

update wp_options set option_value ='http://example.com' where option_value='http://test.example.com';

nginxの設定

現在nginxのバーチャルホストはtest.example.comで受けるように設定されているので、これをexample.comで受けるように修正します。

ドメインの設定する

最後にexample.comのAレコードが新サーバーのアドレスを指し示すように設定をしましょう。ホスティングサービスによっては時間がかかる場合があります。設定をしてすぐに切り替わらなくても焦らず待ちましょう。尚、旧サーバーのワードプレスはすぐに削除せず、何かトラブルがあったらすぐにドメイン設定で戻せるようにしておきましょう。

最後に

ほとんど実際にやった工程を書き出した感じですが、自分で見てもまどろっこしいことをしていますね。今回はロリポップのレンタルサーバーからVPSへの引越しでしたが、他のレンタルサーバーでも同様の手法で引っ越せると思います。本記事が何かのお役に立てば幸いです。