こんにちは。
BIG1等を当てたいサラリーマンです。
こちらのエントリーで構築したローカル開発環境の、PHPとMySQLをバージョンアップします。
追記——
先日、気づいたのですがphpインストールのコマンドに間違いありました。
php5.6系を再インストールしていて気付きました。
以下で訂正しました。
yumでインストールした古いバージョンを削除した後に、新たにPHP5.6とMySQL5.5をインストールします。
インストールはEPELとRemiのレポジトリーを追加して行います。
もくじ
レポジトリーを追加
Remiのリポジトリを追加するには、EPELのリポジトリが必要です。
EPELレポジトリーを追加する
sudo rpm -Uvh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
epel.repoの編集
viでepel.repoを編集します。
sudo vi /etc/yum.repos.d/epel.repo
EPELのリポジトリは明示的に使用するようにします。
[epel] (省略) enabled=0
Remiレポジトリーを追加する
sudo rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
PHP
インストール済みパッケージを確認
yum list installed | grep php
削除
sudo yum remove -y php*
インストール
sudo yum --enablerepo=remi-php56 install -y php php-cli php-common php-devel php-mbstring php-mysqlnd php-pdo php-mysql
オプションが足りませんでした。
訂正しました。
sudo yum --enablerepo=remi --enablerepo=remi-php56 install -y php php-cli php-common php-devel php-mbstring php-mysqlnd php-pdo php-mysql
ここで以下のエラーが発生しました。
Loading mirror speeds from cached hostfile
エラー: Cannot retrieve metalink for repository: epel. Please verify its path and try again
最後に紹介している参考ページをヒントに、yumのアップデートを行ったら解決しました。
sudo yum update -y
無事インストールできました。
php-gdインストール
今のところ、画像処理(GD)を使うことは無いのですが、参考にしたページに、php-gdをインストールするには先にgd-lastをインストールする必要があるとの情報がありました。
GDってなに?という方はこちら
PHP: GD – Manual
後で困らないように検証もかねてインストールすることにしました。
sudo yum --enablerepo=remi-php56 install php-gd
sudo yum --enablerepo=remi --enablerepo=remi-php56 install php-gd
問題なくインストール出来まいた。
依存パッケージとしてgd-lastもインストールされていました。
php.iniの編集
こちらエントリーの内容で編集します。
mbstringは、少しわりました。
5.6で非推奨になった項目以外を以下の様に編集しました。
mbstring.language = Japanese mbstring.encoding_translation = Off mbstring.detect_order = UTF-8,SJIS,EUC-JP,JIS,ASCII mbstring.substitute_character = none mbstring.func_overload = 0 ;mbstring.strict_detection = On ;mbstring.http_output_conv_mimetype=
MySQL
バックアップ
パッケージを削除してもデータバースは削除されませんが、念のためデータベースのバックアップを圧縮して作成します。
mysqldump -u root -p wordpress | gzip > dump.sql.gz
ちなみにリストアは以下のコマンドで行います。
zcat dump.sql.gz | mysql -u user -p
インストール済みパッケージを確認
yum list installed | grep mysql
php-mysqlndのパッケージが検出されました。
削除は、mysql-にワイルドカードで行います。
削除
sudo yum remove -y mysql-*
依存パッケージを含めて全て削除されました。
インストール
sudo yum --enablerepo=remi install -y mysql-server
my.cnfの編集
こちらエントリーの内容で編集します。
default-storage-engine=InnoDBは、バージョン5.5以上なので不要です。
mysql_upgrade実行
MySQLのバージョンアップ後は、mysql_upgradeを実行する必要があります。
確認するとmysql.userテーブルのフィールドが追加されていました。
mysql_upgrade はすべてのデータベースのすべてのテーブルに対して、MySQL サーバーの現在のバージョンとの非互換性を調べます。また、mysql_upgrade は、システムテーブルをアップグレードして、追加された可能性のある新しい権限または機能を利用できるようにします。
4.4.7 mysql_upgrade — MySQL テーブルのチェックとアップグレード
コマンドを実行すると以下のエラーが発生しました。
Could not create the upgrade info file '/var/lib/mysql/mysql_upgrade_info' in the MySQL Servers datadir, errno: 13
sudo付きで実行したら、正常にアップグレードが完了しました。
sudo mysql_upgrade -u root -p
/var/lib/mysql/mysql_upgrade_infoは、バージョンナンバーが1行あるだけのファイルでした。
mysql_upgradeしたバージョンナンバーをアーカイブするファイルだと思われます。
パーミッションは、644でファイルオーナはrootでした。
予想ですがvagarntユーザでは、権限がないので書き込みが出来なかったのだと思われます。
外部ホストからの接続を許可する
権限は再設定が必要のようです。
grant all privileges on *.* to root@"%" identified by 'root' with grant option;
まとめ
パッケージ管理にはyumを利用するのが一般的です。レポジトリーを追加することにより使いたいバージョンをインストールする事ができました。
他には、パッケージをソースからインストールする方法もありますので、別の機会にまとめたいと思います。