server-memo.net

wordpressのサーバを移転した際の作業メモ

      2016/12/23

私が「wordpress」のサーバを引っ越した時に行った際の作業メモです。

なお、移転先のサーバは「CentOS7」でデータベースのエクスポートには「mysqladmin」を使用していません。

サーバ移転の流れ

wordpressサーバを移転する際の作業は、大まかには下記の流れで行っていきました。

旧サーバ作業

  • データベースをエクスポート
  • wordpressインストールフォルダのバックアップ

新サーバ作業

  • webサーバインストール・設定
  • MariaDBインストール・設定
  • 旧サーバでエクスポートしたデータをインポート
  • wordpressフォルダをコピー

動作確認

新サーバ側での作業が完了したらwebブラウザでアクセスして動作確認を行います。

DNS設定変更

wordpressの動作確認で問題が無ければ、DNSに登録されているAレコードを新サーバへと変更します。

旧サーバ作業

旧サーバで行う作業の手順を説明していきます。

データベースのエクスポート

mysqldumpコマンドで、wordperss用データベースをmysql(MariaDB)からエクスポートします。

書式

mysqldump –-add-drop-table -u MySQLユーザー名 -p データベース名 > バックアップファイル

エクスポートをする際のユーザは、対象データベースの管理権限をもったユーザかデータベースの「root」ユーザで作業を行ってください。

実行例

私の環境では、wordpress用のデータベースは「servermemo」という名前なので、「MariaDB」サーバの「root」ユーザで「servermemo_20160802.sql」という名前のファイルに「servermemo」データベースをエクスポートしています。

$ mysqldump --add-drop-table -u root -p servermemo > servermemo_20160802.sql

wordpress インストールフォルダのバックアップ

サーバ移転の際に、誤って「wordpress」のデータを破損させないように「wordpress」がインストールされているフォルダをバックアップしておきます。

# cp -Rp wordpress wordpress_yyyymmdd

「wordpress」インストールディレクトリの名前を変更している場合は適宜読み替えて下さい。

新サーバ側作業

新サーバ側で行う作業について説明していきます。

webサーバインストール・設定

詳しい手順の説明は省略しますが、webサーバのインストールを行ってwordpressが動作するように設定を行ってください。

データベースインストール・設定

CentOS7では標準リポジトリにあるデータベースが「MySQL」からMySQL互換の「MariaDB」に変更されているので、「MariaDB」のインストール・設定と旧サーバからデータをエクスポートする手順について説明して行きます。

MariaDBインストール

「yum」を使って「mariadb」と「mariadb-server」をインストールしていきます。

# yum install mariadb mariadb-server
起動

インストールが完了したら、まずは「MariaDB」を起動させます。

# systemctl start mariadb
自動起動設定

自動起動の設定も忘れずに行いましょう。

# systemctl start mariadb
初期設定

「mysql_secure_installation」を実行し初期設定を行っていきます。

# mysql_secure_installation
設定項目

「mysql_secure_installation」で設定する項目です。

設定項目 設定内容
Enter current password for root (enter for none): MariaDBのrootユーザパスワード入力
インストール直後は何も設定されていないので「Enter」キーを押下する
Set root password? [Y/n] rootユーザのパスワードを設定するかどうかの確認
「y」を入力するかそのまま「Enter」キーを押下しパスワードを設定する
Remove anonymous users? [Y/n] 初期設定で作成されている「anonymous」ユーザを削除するかの確認
「y」を入力するかそのまま「Enter」キーを押下し削除する
Disallow root login remotely? [Y/n] MariaDBの「root」ユーザのリモートログインを禁止するかの確認
「y」を入力するかそのまま「Enter」キーを押下し禁止する
Remove test database and access to it? [Y/n] 初期設定で作成されている「test」データベースを削除するかの確認
「y」を入力するかそのまま「Enter」キーを押下し削除する
Reload privilege tables now? [Y/n] 今設定したユーザ設定をすぐに反映させるかの確認
「y」を入力するかそのまま「Enter」キーを押下し反映させる
「mysql_secure_installation」実行ログ
# mysql_secure_installation
/bin/mysql_secure_installation: line 379: find_mysql_client: command not found

NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
      SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!

In order to log into MariaDB to secure it, we'll need the current
password for the root user.  If you've just installed MariaDB, and
you haven't set the root password yet, the password will be blank,
so you should just press enter here.

Enter current password for root (enter for none): <-- 「Enter」キーを押下
OK, successfully used password, moving on...

Setting the root password ensures that nobody can log into the MariaDB
root user without the proper authorisation.

Set root password? [Y/n] y <-- 「Enter」キーを押下
New password:           <---mariadbのrootユーザパスワード設定
Re-enter new password: <---mariadbのrootユーザパスワード設定
Password updated successfully!
Reloading privilege tables..
 ... Success!


By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them.  This is intended only for testing, and to make the installation
go a bit smoother.  You should remove them before moving into a
production environment.

Remove anonymous users? [Y/n] y <-- 「y」または「Enter」キーを押下
 ... Success!

Normally, root should only be allowed to connect from 'localhost'.  This
ensures that someone cannot guess at the root password from the network.

Disallow root login remotely? [Y/n] y <-- 「y」または「Enter」キーを押下

By default, MariaDB comes with a database named 'test' that anyone can
access.  This is also intended only for testing, and should be removed
before moving into a production environment.

Remove test database and access to it? [Y/n] y <-- 「y」または「Enter」キーを押下
 - Dropping test database...
 ... Success!
 - Removing privileges on test database...
 ... Success!

Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.

Reload privilege tables now? [Y/n] y  <-- 「y」または「Enter」キーを押下

Cleaning up...

All done!  If you've completed all of the above steps, your MariaDB
installation should now be secure.

Thanks for using MariaDB!

データベース作成

旧サーバでエクスポートしたデータをインポートするためのデータベースを作成します。

今回は下記の設定内容でデータベースを作成していきます。

  • データベース名 servermemo
  • データベース管理者 blogadmin
  • パスワード dbpassword

wordpress用データベース作成

「MariaDB」の「root」ユーザで「MariaDB」に接続して、データベースを作成していきます。

MariaDBへ接続
$ mysql -u root -p

「CREATE DATABASE」コマンドでデータベースを作成します。

データベース作成書式
CREATE DATABASE データベース名;

特に理由が無ければ、旧サーバで作成してあったデータベース名と同じ名前でデータベースを作成した方が後で「wp-config.php」設定変更の手間が掛かりません。

データベース作成

旧サーバと同じ名前(servermemo)のデータベースを作成しています。

MariaDB [(none)]> CREATE DATABASE servermemo;
Query OK, 1 row affected (0.00 sec)

データベース管理ユーザ作成

wordpress用に作成したデータベースの管理ユーザを作成します。

書式
GRANT ALL PRIVILEGES ON データベース名.* TO "管理ユーザ名"@"localhost" IDENTIFIED BY "パスワード";
管理ユーザ作成

wordpress用データベースの管理ユーザを作成します。

MariaDB [(none)]> GRANT ALL PRIVILEGES ON servermemo.* TO "blogadmin"@"localhost" IDENTIFIED BY "dbpassword";
Query OK, 0 rows affected (0.09 sec)

管理ユーザ有効化

作成したユーザを「FLUSH PRIVILEGES」コマンドで有効化させます。

MariaDB [(none)]> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.01 sec)

データインポート

旧サーバでエクスポートしたsqlデータを、新サーバで作成したデータベースにインポートしていきます。

旧サーバからエクスポートデータをコピー

旧サーバでエクスポートしたデータを、新サーバにコピーします。

コピーする方法は特に決まりはないので、「scp」や「rsync」等お好きな方法で行ってください。

データインポート

旧サーバでエクスポートしたデータがコピー出来たら、次はそのデータを先ほど作成したデータベースにインポートします。

書式
$ mysql -u データベース管理ユーザ -p データベース < エクスポートデータ
Enter password:

インポートは「wordpress」用データベースの管理ユーザ以外に、「MariaDB」の「root」ユーザで行っても良いです。

インポート実行
$ mysql -u blogadmin -p servermemo < servermemo.sql
Enter password:

wordpressフォルダのコピー

webサーバで設定したwordpress公開用ディレクトリに、旧サーバからwordpressのデータを新サーバにコピーします。

# rsync -azv -e "ssh -p 20022" tamohiko@www.server-memo.net:/home/website/vhost/server-memo/wordpress/ .

今回はデータコピーに「rsync」を使っていますが、自分が好きな方法でコピーしていただいて構いません。

wp-config.php編集

新サーバでデータベースを作成した際の、データベース名、管理ユーザ、パスワードの編集を行ってください。

旧サーバと同じ「データベース名」「管理ユーザ」「パスワード」で作成した場合は、特に設定を行う必要はありません。

動作確認

新サーバでwordpressの動作確認をするために、windowsならば、「C:\Windows\System32\drivers\etc\hosts」を編集して、FQDNで新サーバ側にアクセスできるようにしてからwebサイトの動作確認を行ってください。

Linuxならば、/etc/hostsを編集してFQDNで新サーバにアクセスできるようしてから動作確認を行ってください。

DNS設定変更

動作確認を行いwordpressの動作に問題が無い場合は、DNSのAレコード設定を新サーバのIPアドレスに変更してください。

この作業の注意点としては、DNSの情報が切り替わるのには時間が掛かるので、2〜3日は旧サーバも動作させておいたほうが良いでしょう

あと、設定を変更したhostsファイルの情報を元に戻すのも忘れないようにしましょう。

以上でサーバの移転作業は終了です。

 - wordpress