Webサイトを構築後、その環境を異なる環境に移行したいケースがある。
例えば、ローカルのPC等でテストとして環境を構築し、その後クラウド上のサーバに移行してWebに公開するケース。また、レンタルサーバにて構築した環境を、異なる安価なクラウド上のサーバに移行したいケースなどである。
そこで、本ナレッジではDockerとWordPressを利用したWebサイト環境を、Gitを利用して移行する手順を記載する。
移行対象環境は下記ナレッジのような環境となる。
本手順はWebサイト環境を移行対象として記載しているが、DockerおよびDocker Composeを利用した環境であれば、同手順にて環境の移行は可能である。
Sponsored Links
移行元環境から環境取得
移行元環境から、WordPressを利用したwebサイト環境を取得する。
本手順はGitを利用した手順を記載するが、対象ディレクトリやファイルが移行出来れば、Gitを使わずzip等に圧縮してファイルを移行しても問題ない。
下記手順は移行元サーバ側での手順となる。
- WordPress環境のデータベースの静止断面を取得するのため、docker_composeにて環境を停止する。
- docker_composeコマンドは docker-compose.yml ファイルが存在するところで実施する。
$ cd ~/web/top/docker_compose/
$ docker-compose stop
Stopping docker_compose_wordpress_1 ... done
Stopping docker_compose_db_1 ... done
- 環境が停止したことを確認する。
$ docker-compose ps
Name Command State Ports
------------------------------------------------------------------------------
docker_compose_db_1 docker-entrypoint.sh mysqld Exit 0
docker_compose_wordpress_1 docker-entrypoint.sh apach ... Exit 137
- Docker および Docker Composeを利用している環境においては、基本的にdocker-compose.yml とその中で利用してるvolumesのディレクトリが、環境の全てとなる。そのため、そのディレクトリとファイルを確保する。
- WordPress本体はその設計図となるdocker-compose.ymlさえ確保しておけば、それを基に移行先環境で同一環境が構築可能である。
- WordPressのテーマ等の更新されたファイルは、WordPress用仮想サーバの “/var/www/html” に格納されている。そのため、その領域をvolumesにてマウントしているディレクトリである “./volumes/wordpress/html” も確保する必要がある。
- WordPressの記事等の更新されたファイルは、データベース用仮想サーバの “/var/lib/mysql” に格納されている。そのため、その領域をvolumesにてマウントしているディレクトリである “./volumes/db_data” も確保する必要がある。
- 詳細については以下ナレッジを参照。
$ ls ~/web/top/docker_compose/
docker-compose.yml volumes
$ ls ~/web/top/docker_compose/volumes/
db_data wordpress
- 対象ディレクリとファイルを、Gitにてリモートリポジトリにアップロードする。
- Gitのワークツリーは以下の例では、 ”~/git_repo/pj01_repo01” となる。
- Git関連の詳細は以下ナレッジを参照
- 対象ディレクトリやファイルが確保出来れば、Gitを使わずzip等に圧縮してファイルを移行しても問題ない。
- Gitのワークツリーは以下の例では、 ”~/git_repo/pj01_repo01” となる。
$ sudo cp -rfp ~/web/top/docker_compose/* ~/git_repo/pj01_repo01/
$ cd ~/git_repo/pj01_repo01/
$ sudo git add *
$ sudo git commit -m "for migration"
$ git push -u origin master
- 移行元のwebサイトは、必要に応じて起動する。
$ cd ~/web/top/docker_compose/
$ docker-compose start
移行先環境へ環境設置
移行先環境に、先ほど取得したDocker環境を設置する。
下記手順は移行先サーバ側での手順となる。
- 移行先サーバ側でもGitを利用した手順となるため、導入していない場合は下記ナレッジを基にGitのインストールおよび前述のリモートリポジトリへのSSH設定当実施する。ただし、前述の通りGitを利用しなくても、対象のディレクトリとファイルを設置出来たら問題ない。
- Gitにより、先ほどアップロードしたリモートリポジトリから必要ディレクトリおよびファイルをダウンロードする。
- 初回の場合git cloneにて、リポジトリ全てを複製する。
- git cloneの利用方法詳細は以下ナレッジに記載している。
- 初回の場合git cloneにて、リポジトリ全てを複製する。
$ mkdir ~/git_repo
$ cd ~/git_repo
$ git clone ssh://[User]@[FQDN]:[port][リポジトリの絶対パス]
- もし、既に過去にgit clone実施済みでありローカルリポジトリを更新するのみの場合は、以下コマンドのようにワークツリー配下で pull を実施。
$ cd ~/git_repo/pj01_repo01
$ git checkout master
$ git pull origin master
- ダウンロードしたディレクトリ、ファイルを移行元と同じディレクトリに配置。
$ mkdir -p ~/web/top/docker_compose
$ cd ~/web/top/docker_compose/
$ sudo cp -prf ~/git_repo/pj01_repo01/* ~/web/top/docker_compose/
移行先環境にてwebサイト環境を起動
- 移行先環境にDockerおよびDocker Composeを導入していない場合は、以下ナレッジを参考に導入。
- 移行したファイルの中のWordPress実体ファイルについて、WordPress管理とするためオーナを “www-data” に変更する。
$ cd ~/git_repo/pj01_repo01
$ ls
docker-compose.yml volumes
$ sudo chown -R www-data:www-data volumes/wordpress/html
$ ls -l volumes/wordpress/
total 4
drwxrwxr-x 5 www-data www-data 4096 Dec 27 01:28 html
- Docker ComposeにてWordPress環境を起動。
$ sudo docker-compose up -d
以上でWebサイトの起動が完了し、移行が完了となる。
”http://localhost/” や、”http://[公開IP]” など、移行先環境の公開IPに従ってアクセスしWebサイトの起動を確認する。
Sponsored Links