以下のローカル環境に他所で動いているWordPressを移す手順について記す。
かなり端折ったのに長くなった(´・ω・`)
- Windows 10 Pro (Hyper-V 未インストール)
- Virtual box
- ubuntu server
- apache2
備忘録なので作業検証時に知った関係ないことや初歩的なことも書いてある(ノ∀`)
WordPressの移行先フォルダは"wpbl"になっているが、これは元の環境に合わせて適宜変更する。
文字化け対策
アップデート
MySqlの設定
unzipのインストール
共有フォルダーの設定
WordPressの取得
DocumentRootの変更
WordPressのインストール
Duplicatorのインストールとデータのエクスポート
データのインポート
パーマリンク形式変更による404エラー対策
VirtualBoxとUbuntu Serverのインストール
- Virtual Boxをダウンロードして来てインストールする。
- Virtual Boxでubuntu用の仮想マシンを作成する。
- 作成した仮想マシンの「ネットワーク」の「アダプター1」タブの「割り当て」を"ブリッジアダプター"にする。
- ubuntu serverのインストールisoをダウンロードして来て「ストレージ」の「CDドライブ」にセットして仮想マシンを起動する。
- ほぼデフォルトでインストールする。
最後のtaskselのところで"LAMP server"を選択してインストールする。(ssh接続等の検証もしたい場合は、"OpenSSH server"もインストールする。) 入れ忘れた場合はログイン後に"sudo tasksel"でインストールする。
- mysqlのrootユーザー用のパスワードの設定する。
- 再起動後にログイン
文字化け対策
vimがインストール済みでない場合、viを利用するかvimをインストールする。
sudo apt-get install vim or sudo apt install vim
でインストールする必要があり。
-
sudo vim ~/.bashrc
- [i]または[a]で編集モードにして適当なところに以下を追加し、[:wq]で書き込み保存。
sudoモードで開くのを忘れてしまった場合は[:w !sudo tee %]で強制的に書き込み保存する。case $TERM in linux) LANG=C ;; *) LANG=ja_JP.utf8 ;; esac
-
exit
- 再ログイン。以降の[sudo aptitude update]等で文字化け(◇)が表示されていないことを確認する。
アップデート
2021/8/13追記 今はもうaptでやるのが主流?
16.04LTSではaptitudeが最初は入っていない模様。
なので先に
sudo apt-get install aptitude or sudo apt install aptitude
でインストールする必要があり。
apt - 16.04 : "aptitude" at the command line
sudo aptitude update sudo aptitude upgrade
途中で以下のようなメッセージが表示されたら[y]
MySqlの設定
- rootユーザーでMySqlにログイン。パスワードはインストール時に指定したモノ。
mysql -u root -p
- データベース"mysql"を選択。
use mysql;
- WordPress管理用ユーザーを作成。
この例でのユーザーは"wpadmin"、パスワードは"password"。insert文でテーブルに対して直接作成することも可能。
create user 'wpadmin'@'localhost' identified by 'password';
- WordPress用データベースを作成。
create database wpdb;
- 管理用ユーザーに作成したデータベースの全ての権限を許可する。
※ubuntu16.04に入っているmysql 5.7.12では下の方じゃないと駄目かも。grant all on wpdb.* to wpadmin; or grant all on wpdb.* to wpadmin@localhost;
- 権限の反映。(この手順の場合は権限の反映は必要がない?)
flush privileges;
-
exit
- 管理用ユーザーで再びログインする。
-
mysql -u wpadmin -p
- 権限のあるデータベースを確認する。
show databases;
-
exit
※6.3.2 ユーザーアカウントの追加
"CREATE USER および GRANT の代わりとして、直接 INSERT ステートメントを発行してから、FLUSH PRIVILEGES を使用して付与テーブルを再ロードするようにサーバーに指示することで、同じアカウントを作成できます。"
"INSERT を使用してアカウントを作成する場合は、FLUSH PRIVILEGES を使用して、付与テーブルを再ロードするようにサーバーに指示する必要があります。そうしなければ、サーバーを再起動するまで変更が認識されません。CREATE USER では、FLUSH PRIVILEGES が必要ありません。 "
共有フォルダーの設定
- VBoxGuestAdditions.isoのセット。
※以下のようなダイアログが表示された場合は<強制マウント解除>をクリック。
- 仮想マシンの設定でVBoxGuestAdditions.isoがセットされていることを確認する。
- dkmsのインストール。
sudo aptitude install dkms
以下のようなメッセージが表示されたら、[y]
- 再起動する。
sudo shutdown -r now
- 起動したらログインする。
- CDイメージをマウントして、VBoxLinuxAdditions.runを実行し再起動する。
sudo mount /dev/cdrom /media/cdrom sudo /media/cdrom/VBoxLinuxAdditions.run sudo shutdown -r now
- 起動したらログインする。
- 仮想マシンの設定で「共有フォルダー」の設定をする。この例のフォルダ名は"temp"。「フォルダーのパス」はホストOSの任意のフォルダを選択。
- 共有用フォルダ(/usr/sf)を作り、起動スクリプトを開く。
sudo mkdir /usr/sf sudo vim /etc/rc.local
- 以下の一文を追加して書き込み保存する。
mount -t vboxsf temp /usr/sf
- 再起動する。
sudo shutdown -r now
- 起動したらログインする。
- ホストOS側で共有フォルダに何らかのファイルをコピーをして、自動マウント及び共有が上手く行っているか確認する。
ls /usr/sf
※2016/05/04追記
現時点ではubuntu server 16.04で同じ手順を行ってもrc.localが実行されないのか
自動マウントされない。この手順はVirtualBoxでの共有フォルダの自動マウントなので常用しない場合は必要ない。
代わりに以下のように手作業でマウントする。sudo mount -t vboxsf temp /usr/sf
※2016/05/04追記
どうもこれは15.04から起動プロセスがupstartからsystemdに変わったことによるもの?
アップグレードの場合はupstartのままで、新規インストールの場合はsystemdらしい。
その絡みからかなんかでrc.localが実行されていないくさい。※2016/10/23追記
これだとなんか上手くいかないかも(´・ω・`)
前は上手く行った気がするんだけれども…もしも16.04等で自動マウントしたい場合は/etc/fstabを使うと良いらしい。
VirtualBoxの共有フォルダの自動マウント化sudo vim /etc/fstab
で/etc/fstabを開き、
temp /usr/sf vboxsf defaults 0 0
を追加して保存。
起動時にvboxsfを利用可能にする為に
sudo vim /etc/modules-load.d/modules.conf
でmodules.confを開き、
vboxsf
と追加し、保存。
後は項番11~13を実行して、自動マウント出来ているかを確認する。
※以前はフォルダ共有をする際に「hwinfo」をインストールしていたが、しなくても大丈夫な模様。正確に言うと、14.04では通常の方法では「hwinfo」を入れることが出来ないようだったので、飛ばしたが問題がなさそう。hardware - hwinfo replaced with ... what?
WordPressの取得
- 公式サイトからWordPressをダウンロードする。
sudo wget "https://ja.wordpress.org/latest-ja.zip"
- ダウンロードしたWordPressを「/var/www/」以下の任意のディレクトリ(この例では「/var/www/wpbl/」)に解凍。
sudo unzip latest-ja.zip -d /var/www/wpbl/
- 「wordpress」ディレクトリ内の全てのファイル及びディレクトリを「/var/www/wpbl/」に移動して、、
「wordpress」ディレクトリを削除する。sudo mv -f /var/www/wpbl/wordpress/* /var/www/wpbl/. sudo rm -Rf /var/www/wpbl/wordpress/
- 「/var/www/wpbl/」の所有者をrootからapache2の実行ユーザー・グループのwww-dataに変更する。
sudo chown -R www-data /var/www/wpbl/
※WordPressの圧縮ファイルをホストOS側でダウンロード・解凍して、共有フォルダ経由でコピーすることも可能。また、この例ではzip形式でダウンロードして来ているのでunzipをインストールする必要があったが、.tar.gz形式でダウンロードして来る場合はその限りではない。
DocumentRootの変更
デフォルトではDocumentRootが「/var/www/html」になっているので「/var/www/」に変更する。
-
sudo vim /etc/apache2/sites-available/000-default.conf
- DocumentRootを「/var/www」に変更して保存する。
- apacheを再起動する。
sudo service apache2 restart
※尚、apacheを再起動した際に出るAH00558というメッセージを消すには、以下のようにする。
- fqdn.confを作成する。
sudo vim /etc/apache2/conf-available/fqdn.conf
- 以下の内容を書き込み、保存する。
ServerName $HOSTNAME
- 作成した設定ファイルを有効にする。
sudo a2enconf fqdn
- apacheをリロードする。
sudo service apache2 reload
結局のところ、FQDNの解決に失敗していることに起因するエラーなので、解決方法は他にも色々とある模様。
参考:
ubuntuにおけるapache2のAH00558エラーを解決する。
WordPressのインストール
- ゲストOSのipを調べる。
ifconfig
- ホストOSのブラウザで"http://ゲストOSのip/wpbl/index.php"にアクセスする。
- 「ようこそ」画面が表示されたら、<さあ、始めましょう!>をクリックする。
- 「データベース接続情報入力」画面が表示されたら、"データベース名"、"ユーザー名"、"パスワード"を入力し、<送信>をクリックする。
- 「部分完了」画面が表示されたら、<インストール実行>をクリックする。
- 「必要情報入力」画面が表示されたら、"サイトのタイトル"、"ユーザー名"、"パスワード"、"メールアドレス"を入力する。これはデータ移行後には使わなくなるので適当で良い。
脆弱なパスワードを設定した場合は「パスワード確認」にチェックを入れる。
<WordPressをインストール>をクリックする。
- 「成功しました!」画面が表示されたら、<ログイン>をクリックする。
- 「ログイン」画面が表示されたら、"ユーザー名"と"パスワード"を入力して<ログイン>をクリックする。
- インストールしたWordPressにログイン出来ることを確認する。
Duplicatorのインストールとデータのエクスポート
- 移行元のWordPressでDuplicatorプラグインを検索、インストールして有効化する。
- Duplicatorを起動する。
- 右上の<Create New>をクリックする。
- 右下の<Next>をクリックする。(ここでエクスポートしないファイルの指定、ログイン名等の指定が出来る模様)
※2016/05/05追記
移行元のubuntu serverが16.04の場合(正確にはphpが7.0以降の場合)、以下のようなエラーが
出る場合があります。この場合、不足しているパッケージを手作業でインストールする必要があります。
sudo aptitude install php7.0-zip sudo aptitude install php7.0-bz2 sudo shutdown -r now (apache2の再起動だけでいい?)
再起動後に再びブラウザからwordpressにログインし、項番2の手順から続きを行います。
- スキャン結果にWarn(警告)がある場合は"A warning status was detected,are you sure you want to continue?"にチェックを入れ、<Build>をクリックする。
- <installer>及び<Archive>をクリックし、installer.phpとデータをダウンロードする。
参考:
引っ越しも楽々? WordPressで構築したサイトを丸ごとコピーできるプラグイン「Duplicator」
尚、「All-in-One WP Migration」でもデータ移行は可能。
但し、無償版だと512MBを越すとエラーが出た(ような気がしたが、改めてやってみたら
630MBオーバーでもバックアップファイルが作成された模様)
また、移行先でも同じプラグインを追加して、そこからデータのインポートを行うので微妙に手間がかかる気がする。
エクスポートファイルはバックアップとして残るので、バックアップ目的ならば良いとは思う。
ただ、このバックアップファイルの存在を忘れて「Duplicator」でエクスポートしたり、
WordPressをまるごとバックアップしようとするとデータがとんでもない大きさに膨れ上がるので注意。
データのインポート
- ホストOSの共有フォルダにinstaller.phpとデータを移動する。
- ゲストOSで共有フォルダ内にファイルが見えることを確認する。
cd /usr/sf ls または ls /usr/sf
- データとinstaller.phpを/var/www/wpblに移動する。
sudo mv xxxxxxxxx.zip /var/www/wpbl sudo mv installer.php /var/www/wpbl
- ホストOSのブラウザで"http://ゲストOSのIPアドレス/wpbl/installer.php"に移動する。
- "データベース名"、"データベース管理者ユーザー名"、"パスワード"を入力し、<Test Connection>をクリックする。
- 「Server Connected」と「Database Found」が"Success"なら、「I have read all warnings & notices」にチェックを入れ、<Run Deployment>をクリックする。
- 以下のエラー画面が表示されたら、wp-config.phpを削除する。(よくよく考えてみると前項の段階でwp-config.phpを削除しておけばいいのかもしれない)
sudo rm /var/www/wpbl/wp-config.php
- <Try Again>をクリックする。
- (処理が実行される。)
- 「File & Database」画面が表示されたら、
をクリックする。 (ここで新しい管理者アカウントの情報を追加出来たりする)
- 「Test」画面が表示されたら、各項目をチェックする。
パーマリンク形式を変更している場合、index.phpからエントリへのリンクを辿っても404エラーになるはず。以降の手順で変更する必要がある。
パーマリンク形式変更による404エラー対策
- rewrite.loadファイルの内容を確認する
cat /etc/apache2/mods-available/rewrite.load
と実行し、以下の内容が表示されることを確認する。
LoadModule rewrite_module /usr/lib/apache2/modules/mod_rewrite.so
- rewrite.loadを有効化する。
sudo a2enmod rewrite
※a2enmodはrewrite.loadのような特定のモジュールを有効化するスクリプトが書かれているファイルを、「/etc/apache2/mods-enabled」内にシンボリックリンクを作ることによって有効化する。a2dismodはその逆。
- apacheの設定ファイルを開く。
sudo vim /etc/apache2/apache2.conf
- 任意の場所に以下の内容を追記して書き込み保存する。
<Directory /var/www/wpbl> AllowOverride All </Directory>
- apacheを再起動する。
sudo service apache2 restart
- ホスト側のブラウザで各エントリをクリックし、404エラーにならないことを確認する。
コメントを投稿するにはログインしてください。