本サイトはRaspberry Pi B+で稼働させてきましたが、この記事を書いた際に購入したRaspberry Pi 3を活用できてなかったので、移設しました。
これまでと同様、Ansibleを使用してセットアップします。また、Raspberry Pi 3のシステムを先に構築してから移行することで、システム断の時間を最小限にするようにしました。
ハードウェア
Raspberry Pi 3
外付けHDD(東芝HD-SB50GK)
OS
RASPBIAN JESSIE LITE(Raspbian GNU/Linux 8.0)
Version:November 2016
Release date:2016-11-25
Kernel version:4.4
移行の流れは以下の通りです。
1.旧WordPressのバックアップ
2.Raspberry Pi 3の初期設定
3.Raspberry Pi 3 にWordPressをセットアップ
4.WordPressのリストア
5.ネットワークの切り替え
以下、手順の詳細です。
旧WordPressのバックアップ
Ansibleサーバーを起動し「シェルスクリプトでWordPressをバックアップする」に記載した「Ansible Playbookでバックアップ」のPlaybookを実行し、Ansibleサーバー上にバックアップを取得しました。
Raspberry Pi 3の初期設定
「Raspberry Pi(raspbian)にWordPressをAnsibleでセットアップする(その1)」と同様に、Raspberry Pi 3の設定を行います。
OSには旧WordPressサーバーとは別のIPアドレスを設定します。
現行のRaspberry PiのOSはDebianのjessieベースなので、静的IPアドレスを/etc/dhcpcd.confで設定することが推奨されているようです。しかし後述のPlaybook内でdhcpcdを無効化するので、従来通り/etc/network/interfacesで設定しました。
Raspberry Pi 3 にWordPressをセットアップ
以下リンク先のPlaybookを実行し、セットアップを行います。WordPressのZipファイルが古いですが、リストア時にバックアップ時のバージョンになるため問題ありません。
その2 raspbianの共通設定を行うplaybook
その3 外付けHDDをマウントするplaybook
その4 メインのplaybookを実行しwordpressをセットアップする
一部Playbookを修正したため、以下に記載します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
- name: ls /dev/disk/by-uuid command: ls -la /dev/disk/by-uuid register: ls_result - debug: var=ls_result.stdout_lines when: ls_result - pause: prompt="Device UUID?" register: devuuid - name: Mount the New Device shell: mount -t ext4 "UUID={{ devuuid.user_input }}" /media when: devuuid.user_input != "" - name: Delete /media all files shell: rm -rf /media/* when: devuuid.user_input != "" - name: Copy /var Data shell: cp -rfd /var/* /media/ creates=/media/log/messages when: devuuid.user_input != "" - name: Unmount the New Device shell: umount /media when: devuuid.user_input != "" - name: Mount the new device, add the fstab configuration mount: name=/var src='UUID="{{ devuuid.user_input }}"' fstype=ext4 state=mounted when: devuuid.user_input != "" |
15~17行目
外付けHDDにデータが残っていると予期しない動作をしてしまうため、ファイルを全削除する記述を追記しました。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
- name: Place The ntp Configuration File copy: src=conf/ntp.conf dest=/etc/ - name: Place The resolv Configuration File copy: src=conf/resolvconf.conf dest=/etc/ - name: Apply resolv.conf shell: resolvconf -u - name: Locale Settings locale_gen: name=ja_JP.UTF-8 state=present - copy: src=conf/locale dest=/etc/default/ - name: Timezone Settings copy: src=conf/localtime dest=/etc/ - name: reload ntp service: name=ntp state=restarted - name: Stop unnecessary services service: name=dhcpcd enabled=no - name: install python-apt raw: apt-get update && apt-get install python-apt -y -q |
7~8行目
resolv.confの設定反映のため追加しました。
WordPressのリストア
新WordPressサーバーにWordPressをリストアします。「シェルスクリプトでWordPressをバックアップする」に記載した「wp_backup.sh_setup.yml」でバックアップシェルをセットアップしたのち、リストアを実行します。
wp_backup.sh_setup.ymlに一部追記しました。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
--- - hosts: xxx.xxx.xxx.xxx sudo: yes vars_files: - vars/vars.yml tasks: - name: Copy the backup.sh copy: src=wp_backup.sh dest=/home/{{remote_user}}/ mode=0744 - name: Copy the rsyslog setting file copy: src=conf/wp_backup.rsyslog.conf dest=/etc/rsyslog.d/ - name: Reload rsyslog service: name=rsyslog state=restarted - name: Creates an cron entry cron: name="WordPress backup" minute="10" hour="3" weekday="1" user="root" job="/home/{{remote_user}}/wp_backup.sh -b > /dev/null" - name: Create backup directory file: path=/var/bak state=directory |
末尾2行にディレクトリを作成する記述を追記しています。
割愛していたリストアのPlaybookは以下の通りです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
--- - hosts: xxx.xxx.xxx.xxx sudo: yes vars_files: - vars/vars.yml tasks: - name: Install the sshpass apt: pkg=sshpass state=present - name: Put backup file shell: sshpass -p '{{local_user_pass}}' scp -o StrictHostKeyChecking=no {{local_user}}@{{local_address}}:/home/{{local_user}}/wp_bak/*.gz /var/bak/ - name: Run wp_backup.sh -r shell: /home/{{remote_user}}/wp_backup.sh -r removes="/home/{{remote_user}}/wp_backup.sh" |
ネットワークの切り替え
最後に、ルーターのIPマスカレードの設定を変更し、外部NICからのwww通信(80番ポート)を新WordPressサーバのIPアドレスに変換するよう設定します。
結果
5.の実行後、すぐに新WordPressサーバーでの稼働に切り替わりました。
手作業だとそれなりに手間がかかったと思いますが、以前作成していたAnsibleのPlaybookを使用してセットアップすることで、簡単に移行できました。
また、Rabpberry Pi 3に切り替えたことで、パフォーマンスが改善しました。
特にキャッシュが効かない、更新直後のページ表示速度が約10秒から2~3秒まで短縮しました。キャッシュが効いている状態であれば1秒程度なので、CPUの性能上昇が顕著に出ているようです。
現在、既にRaspberry Pi 3 で稼働しています。
最後まで読んでいただきありがとうございました!
よろしければ広告もご覧ください。