WordPress検証用環境の作成手順(`・ω・´)

以下のローカル環境に他所で動いているWordPressを移す手順について記す。
かなり端折ったのに長くなった(´・ω・`)

  • Windows 10 Pro (Hyper-V 未インストール)
  • Virtual box
  • ubuntu server
  • apache2

備忘録なので作業検証時に知った関係ないことや初歩的なことも書いてある(ノ∀`)
WordPressの移行先フォルダは"wpbl"になっているが、これは元の環境に合わせて適宜変更する。
 


 
 



VirtualBoxとUbuntu Serverのインストール

  1. Virtual Boxをダウンロードして来てインストールする。
  2. Virtual Boxでubuntu用の仮想マシンを作成する。
  3. 作成した仮想マシンの「ネットワーク」の「アダプター1」タブの「割り当て」を"ブリッジアダプター"にする。
  4. networkadapter_bridgeadapter
  5. ubuntu serverのインストールisoをダウンロードして来て「ストレージ」の「CDドライブ」にセットして仮想マシンを起動する。
  6. storage_isoset
  7. ほぼデフォルトでインストールする。
     
    最後のtaskselのところで"LAMP server"を選択してインストールする。(ssh接続等の検証もしたい場合は、"OpenSSH server"もインストールする。) 入れ忘れた場合はログイン後に"sudo tasksel"でインストールする。
    tasksel_lamp
  8. mysqlのrootユーザー用のパスワードの設定する。
    mysqlpassword01
  9. 再起動後にログイン


文字化け対策

※2016/06/21追記
vimがインストール済みでない場合、viを利用するかvimをインストールする。

sudo apt-get install vim
or
sudo apt install vim

でインストールする必要があり。

  1. sudo vim ~/.bashrc
    
  2. [i]または[a]で編集モードにして適当なところに以下を追加し、[:wq]で書き込み保存。
    sudoモードで開くのを忘れてしまった場合は[:w !sudo tee %]で強制的に書き込み保存する。

    case $TERM in
    linux) LANG=C ;;
    *) LANG=ja_JP.utf8 ;;
    esac
    

    bashrcmodify

  3. exit
    
  4. 再ログイン。以降の[sudo aptitude update]等で文字化け(◇)が表示されていないことを確認する。

参考:
Ubuntu serverの文字化け対策



アップデート

2021/8/13追記 今はもうaptでやるのが主流?

※2016/05/03追記
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]
upgrademessage



MySqlの設定

  1. rootユーザーでMySqlにログイン。パスワードはインストール時に指定したモノ。
    mysql -u root -p
    
    ※Ubuntu20.04でtaskselを追加してそこからLAMP Serverで入れた場合はMySQLのインストール時にパスワード入力を要求されなかった。Ubuntuのadminで入るみたい。

    sudo mysql
    

    正確にはUbuntuのバージョンじゃなくてMySQLのバージョンに依存するみたい。

    上記の設定でパスワードを設定しましたが、これはこのままでは使用されません。というのもMySQL 5.7以降では、MySQLのrootユーザはデフォルトではそもそもパスワードによるログインができないようになっています。パスワードの代わりに、システムのrootユーザ(ここではOSがUbuntuなのでUbuntuのrootユーザ)情報でログインする必要があります。

    Ubuntu18.04にMySQLをインストールする手順

  2. データベース"mysql"を選択。
    use mysql;
    
  3. WordPress管理用ユーザーを作成。

    この例でのユーザーは"wpadmin"、パスワードは"password"。insert文でテーブルに対して直接作成することも可能。

    create user 'wpadmin'@'localhost' identified by 'password';
    
  4. WordPress用データベースを作成。
    create database wpdb;
    
  5. 管理用ユーザーに作成したデータベースの全ての権限を許可する。
    ※ubuntu16.04に入っているmysql 5.7.12では下の方じゃないと駄目かも。

    grant all on wpdb.* to wpadmin;
    or
    grant all on wpdb.* to wpadmin@localhost;
    
  6. 権限の反映。(この手順の場合は権限の反映は必要がない?)
    flush privileges;
    
  7. exit
    
  8. 管理用ユーザーで再びログインする。
  9. mysql -u wpadmin -p
    
  10. 権限のあるデータベースを確認する。
    show databases;
    

    showdatabases

  11. exit
    

※6.3.2 ユーザーアカウントの追加

"CREATE USER および GRANT の代わりとして、直接 INSERT ステートメントを発行してから、FLUSH PRIVILEGES を使用して付与テーブルを再ロードするようにサーバーに指示することで、同じアカウントを作成できます。"

"INSERT を使用してアカウントを作成する場合は、FLUSH PRIVILEGES を使用して、付与テーブルを再ロードするようにサーバーに指示する必要があります。そうしなければ、サーバーを再起動するまで変更が認識されません。CREATE USER では、FLUSH PRIVILEGES が必要ありません。 "



unzipのインストール

sudo aptitude install unzip


共有フォルダーの設定

  1. VBoxGuestAdditions.isoのセット。
    setGuestAdditionsCD

    ※以下のようなダイアログが表示された場合は<強制マウント解除>をクリック。
    vb003

  2. 仮想マシンの設定でVBoxGuestAdditions.isoがセットされていることを確認する。
    setGuestAdditionsCD02
  3. dkmsのインストール。
    sudo aptitude install dkms
    

    以下のようなメッセージが表示されたら、[y]
    dkmsmessage

  4. 再起動する。
    sudo shutdown -r now
    
  5. 起動したらログインする。
  6. CDイメージをマウントして、VBoxLinuxAdditions.runを実行し再起動する。
    sudo mount /dev/cdrom /media/cdrom
    sudo /media/cdrom/VBoxLinuxAdditions.run
    sudo shutdown -r now
    
  7. 起動したらログインする。
  8. 仮想マシンの設定で「共有フォルダー」の設定をする。この例のフォルダ名は"temp"。「フォルダーのパス」はホストOSの任意のフォルダを選択。
    sffoldersetting
  9. 共有用フォルダ(/usr/sf)を作り、起動スクリプトを開く。
    sudo mkdir /usr/sf
    sudo vim /etc/rc.local
    
  10. 以下の一文を追加して書き込み保存する。
    mount -t vboxsf temp /usr/sf
    

    rclocalmodify

  11. 再起動する。
    sudo shutdown -r now
    
  12. 起動したらログインする。
  13. ホストOS側で共有フォルダに何らかのファイルをコピーをして、自動マウント及び共有が上手く行っているか確認する。
    ls /usr/sf
    
    lsusrsf
    ※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の取得

  1. 公式サイトからWordPressをダウンロードする。
    sudo wget "https://ja.wordpress.org/latest-ja.zip"
    
  2. ダウンロードしたWordPressを「/var/www/」以下の任意のディレクトリ(この例では「/var/www/wpbl/」)に解凍。
    sudo unzip latest-ja.zip -d /var/www/wpbl/
    
  3. 「wordpress」ディレクトリ内の全てのファイル及びディレクトリを「/var/www/wpbl/」に移動して、、
    「wordpress」ディレクトリを削除する。

    sudo mv -f /var/www/wpbl/wordpress/* /var/www/wpbl/.
    sudo rm -Rf /var/www/wpbl/wordpress/
    
  4. 「/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/」に変更する。

  1. sudo vim /etc/apache2/sites-available/000-default.conf
    
  2. DocumentRootを「/var/www」に変更して保存する。
    DocumentRootvarwww
  3. apacheを再起動する。
    sudo service apache2 restart
    


※尚、apacheを再起動した際に出るAH00558というメッセージを消すには、以下のようにする。
AH00558

  1. fqdn.confを作成する。
    sudo vim /etc/apache2/conf-available/fqdn.conf
    
  2. 以下の内容を書き込み、保存する。
    ServerName $HOSTNAME
    
  3. 作成した設定ファイルを有効にする。
    sudo a2enconf fqdn
    
  4. apacheをリロードする。
    sudo service apache2 reload
    

結局のところ、FQDNの解決に失敗していることに起因するエラーなので、解決方法は他にも色々とある模様。
参考:
ubuntuにおけるapache2のAH00558エラーを解決する。



WordPressのインストール

  1. ゲストOSのipを調べる。
    ifconfig
    

    ifconfiglocaladdress

  2. ホストOSのブラウザで"http://ゲストOSのip/wpbl/index.php"にアクセスする。
  3. 「ようこそ」画面が表示されたら、<さあ、始めましょう!>をクリックする。
    wpinstall01
  4. 「データベース接続情報入力」画面が表示されたら、"データベース名"、"ユーザー名"、"パスワード"を入力し、<送信>をクリックする。
    wpinstall02
  5. 「部分完了」画面が表示されたら、<インストール実行>をクリックする。
    wpinstall03
  6. 「必要情報入力」画面が表示されたら、"サイトのタイトル"、"ユーザー名"、"パスワード"、"メールアドレス"を入力する。これはデータ移行後には使わなくなるので適当で良い。
     
    脆弱なパスワードを設定した場合は「パスワード確認」にチェックを入れる。
    <WordPressをインストール>をクリックする。
    wpinstall04
  7. 「成功しました!」画面が表示されたら、<ログイン>をクリックする。
    wpinstall05
  8. 「ログイン」画面が表示されたら、"ユーザー名"と"パスワード"を入力して<ログイン>をクリックする。
    wpinstall06
  9. インストールしたWordPressにログイン出来ることを確認する。
    wpinstall07


Duplicatorのインストールとデータのエクスポート

  1. 移行元のWordPressでDuplicatorプラグインを検索、インストールして有効化する。
    duplicatorinstall01

    duplicatorinstall02

    duplicatorinstall03

  2. Duplicatorを起動する。
    duplicatorinstall04
  3. 右上の<Create New>をクリックする。
    duplicatorinstall05
  4. 右下の<Next>をクリックする。(ここでエクスポートしないファイルの指定、ログイン名等の指定が出来る模様)
    duplicatorinstall06

    ※2016/05/05追記
    移行元のubuntu serverが16.04の場合(正確にはphpが7.0以降の場合)、以下のようなエラーが
    出る場合があります。この場合、不足しているパッケージを手作業でインストールする必要があります。
    ziparchiveenabled

    sudo aptitude install php7.0-zip
    sudo aptitude install php7.0-bz2
    sudo shutdown -r now (apache2の再起動だけでいい?)
    

    再起動後に再びブラウザからwordpressにログインし、項番2の手順から続きを行います。

    参考:
    (Solved) Duplicator Error (WordPress / PHP7.0)

  5. スキャン結果にWarn(警告)がある場合は"A warning status was detected,are you sure you want to continue?"にチェックを入れ、<Build>をクリックする。
    duplicatorinstall07
  6. <installer>及び<Archive>をクリックし、installer.phpとデータをダウンロードする。
    duplicatorinstall08

参考:
引っ越しも楽々? WordPressで構築したサイトを丸ごとコピーできるプラグイン「Duplicator」

尚、「All-in-One WP Migration」でもデータ移行は可能。
但し、無償版だと512MBを越すとエラーが出た(ような気がしたが、改めてやってみたら
630MBオーバーでもバックアップファイルが作成された模様)

また、移行先でも同じプラグインを追加して、そこからデータのインポートを行うので微妙に手間がかかる気がする。
エクスポートファイルはバックアップとして残るので、バックアップ目的ならば良いとは思う。

ただ、このバックアップファイルの存在を忘れて「Duplicator」でエクスポートしたり、
WordPressをまるごとバックアップしようとするとデータがとんでもない大きさに膨れ上がるので注意。

参考:
WordPressのお引越しに All-in-One WP Migration がめっちゃ便利すぎる件



データのインポート

  1. ホストOSの共有フォルダにinstaller.phpとデータを移動する。
    duplicatordataimport01
  2. ゲストOSで共有フォルダ内にファイルが見えることを確認する。
    cd /usr/sf
    ls 
    または
    ls /usr/sf
    

    duplicatordataimport02

  3. データとinstaller.phpを/var/www/wpblに移動する。
    sudo mv xxxxxxxxx.zip /var/www/wpbl
    sudo mv installer.php /var/www/wpbl
    

    duplicatordataimport03

  4. ホストOSのブラウザで"http://ゲストOSのIPアドレス/wpbl/installer.php"に移動する。
  5. "データベース名"、"データベース管理者ユーザー名"、"パスワード"を入力し、<Test Connection>をクリックする。
    duplicatordataimport04
  6. 「Server Connected」と「Database Found」が"Success"なら、「I have read all warnings & notices」にチェックを入れ、<Run Deployment>をクリックする。
    duplicatordataimport05
  7. 以下のエラー画面が表示されたら、wp-config.phpを削除する。(よくよく考えてみると前項の段階でwp-config.phpを削除しておけばいいのかもしれない)
    duplicatordataimport07

    sudo rm /var/www/wpbl/wp-config.php
    
  8. <Try Again>をクリックする。
    duplicatordataimport08
  9. (処理が実行される。)
    duplicatordataimport09
  10. 「File & Database」画面が表示されたら、をクリックする。 (ここで新しい管理者アカウントの情報を追加出来たりする)
    duplicatordataimport10
  11. 「Test」画面が表示されたら、各項目をチェックする。
     
    パーマリンク形式を変更している場合、index.phpからエントリへのリンクを辿っても404エラーになるはず。以降の手順で変更する必要がある。
    duplicatordataimport11


パーマリンク形式変更による404エラー対策

  1. rewrite.loadファイルの内容を確認する
    cat /etc/apache2/mods-available/rewrite.load
    

    と実行し、以下の内容が表示されることを確認する。

    LoadModule rewrite_module /usr/lib/apache2/modules/mod_rewrite.so
    
  2. rewrite.loadを有効化する。
    sudo a2enmod rewrite
    

    a2enmodはrewrite.loadのような特定のモジュールを有効化するスクリプトが書かれているファイルを、「/etc/apache2/mods-enabled」内にシンボリックリンクを作ることによって有効化する。a2dismodはその逆。

  3. apacheの設定ファイルを開く。
    sudo vim /etc/apache2/apache2.conf
    
  4. 任意の場所に以下の内容を追記して書き込み保存する。
    <Directory /var/www/wpbl>
         AllowOverride All
    </Directory>
    
  5. apacheを再起動する。
    sudo service apache2 restart
    
  6. ホスト側のブラウザで各エントリをクリックし、404エラーにならないことを確認する。

参考:
Ubuntu版Apache2でmod_rewriteを有効にする