Wordpress関係の更新で苦労した

ローカル環境にWindows Server 2008PHPとApachとMysqlにWodpressを入れて運用していたけど各種プログラムに更新の必要性がでてきたので頑張った苦労話。

phpのバージョンアップ

フォルダごとファイルを差し替えて、INIを修正するだけ

  • 現状:5.6.18
  • 最新:5.6.19

http://windows.php.net/download/
VC11 x64 Thread Safe (2016-Mar-03 05:51:47)
古いフォルダをphp_5.6.18
展開してC:\php

php.ini

修正
extension_dir = "c:\php\ext"
date.timezone ="Asia/Tokyo"

有効化
extension=php_curl.dll
extension=php_mbstring.dll
extension=php_mysql.dll
extension=php_mysqli.dll
extension=php_openssl.dll

MySQL

バックアップしてからの、削除&インストール、復元ってな流れ

  • 現状:5.1.63
  • 最新:5.7.11
バックアップ

個別とか考えるの面倒だから、全部バックアップしちゃう

C:\Users\Administrator>mysqldump -u root -p --all-databases > c:\dump20160312.sql
古すぎて一発でいかない

5.1>5.5>最新と段階を踏む

5.1をアンインストール

net stop mysql
c:\Program Files\MySQL\MySQL Server 5.1\bin>mysqld --remove
Service successfully removed.

5/5をインストールして確認

mysql -u root -p select version()
5.5.48

net stop mysql
c:\Program Files\MySQL\MySQL Server 5.1\bin>mysqld --remove
Service successfully removed.

。。。うまく動かないので5.1、5.5をコントロールパネルからアンインストール
5.7インストール、環境変数を修正

データをインポート

c:\>mysql -u root -p --default-character-set=utf8 < dump20160312.sql

wordpressが開かない

IEだと500エラーになる。
Chromeだと「データベース接続確立エラー」

データベースに接続できないので、データベース周りの設定を眺める。
あとコマンドでMySQLにも接続してみると、IDとパスワードが違うので修正したら繋がった。
こんな修正方法で良かったのかな・・・?

C:\Apache24\htdocs\wordpress\wp-config.php

/** MySQL データベースのユーザー名 */
//define('DB_USER', 'wp_user');
define('DB_USER', 'root');

/** MySQL データベースのパスワード */
//define('DB_PASSWORD', 'wp_pass');
define('DB_PASSWORD', 'root_password');

/** MySQL のホスト名 */
define('DB_HOST', 'localhost');

/** データベースのテーブルを作成する際のデータベースのキャラクターセット */
define('DB_CHARSET', 'utf8');

/** データベースの照合順序 (ほとんどの場合変更する必要はありません) */
define('DB_COLLATE', '');

ここにきて、大ミスが発覚
http://blog.livedoor.jp/ese_admin/archives/52027714.html

mysqldump -u root -x --all-databases > hogehoge.dump
mysqldump -u root -x --allow-keywords mysql > hogehogeuser.dump
上の1行でデータベース全体のバックアップをします。
下の1行でユーザー情報をバックアップします。

リストアは以下のとおり。

mysql -u root -p < hogehoge.dump
mysql -u root -p mysql < hogehogeuser.dump

下はやっていないよ。。。

ぐちゃぐちゃやって、データベースにアクセスできなくなったのでMySQLインストーラーからアンインストールして再起動、インストーラーから入れている途中でユーザー(wp_user)を追加してみた。
ログインも出来たので、まっさらなデータベースをリストアしてあげると動いた。
うごいたけど、一度だけ。もう動かない。
サービスのMySQL57も開始されない。モニターから再起動も出来ない。


おそらく同じ原因MYSQL、再インストールに注意!「COULD NOT START THE SERVICE MYSQL」

MySQLの再インストール

  • MySQL Installerから全てアンインストール&OS再起動
  • C:\Program Files\MySQLを_MySQLとリネーム
  • 「システム環境変数」の[path]にMySQLをインストールしたパスを削除
  • C:\ProgramData\MySQLを削除
  • C:\Windows\System32\Tasks\MySQLを削除
  • OS再起動
  • MySQL Installerから入れる
  • Connector/ODCB、C++、JがErrorになるがNextでなんとか完了
  • MySQL Installerの「MySQL Server」の「Reconfigure」
    • type and Networking(規定)
    • Accounts and Roles
      • Rootのパスワード設定
      • Add Userで「wp_user」「localhost」「DB Admin」「wp_pass」
    • Windows Service Name : MySQL

データをインポート

c:\>mysql -u root -p --default-character-set=utf8 < dump20160312.sql

C:\Apache24\htdocs\wordpress\wp-config.phpの「wp_user」でログインできているようです。

結論:WindowsMySQLのアップデートを行うなら、おなじような環境を構築してからテストしておくのが吉だとおもう。
アップデートで失敗したら、MySQLの痕跡のすべて消してから最新版を入れる。あとから問題が発生するほうが面倒だよ。