ドットインストールのレッスン内容に沿って構築したロカール開発環境をアップデートする方法

dotinstall

ドットインストールのレッスンが、勢力的に追加されている。

PHPで実装する「もっと読む」 (全8回)

上記レッスンは、PHPとjQueryのAjax、TwitterのAPIを使う興味深い内容だ。
早速、実践しようと思ったが、PHP5.2以上が必要らしい。

ローカル開発環境の構築をレッスン通りに進めた場合、PHPのバージョンは5.1.6になる。このままでは、上記レッスンで使用する関数が使えない。

そこで、PHPとMySQLのアップデートを行ったので、その手順を備忘録として書いておく。MySQLのアップデートは、PHPのアップデートをするために必要になる。

※手順はrootユーザーで実行することを前提に書いている。


PHPのバージョンを確認

[root@localhost ~]# php -v
PHP 5.1.6 (cli) (built: Nov 29 2010 16:47:37)
Copyright (c) 1997-2006 The PHP Group
Zend Engine v2.1.0, Copyright (c) 1998-2006 Zend Technologies


PHP関連パッケージのインストール状況を確認

[root@localhost ~]# yum list installed php*
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: ftp.yz.yamagata-u.ac.jp
 * extras: ftp.yz.yamagata-u.ac.jp
 * updates: ftp.yz.yamagata-u.ac.jp
Installed Packages
php.i386                            5.1.6-27.el5_5.3                   installed
php-cli.i386                        5.1.6-27.el5_5.3                   installed
php-common.i386                     5.1.6-27.el5_5.3                   installed
php-devel.i386                      5.1.6-27.el5_5.3                   installed
php-gd.i386                         5.1.6-27.el5_5.3                   installed
php-mbstring.i386                   5.1.6-27.el5_5.3                   installed
php-mysql.i386                      5.1.6-27.el5_5.3                   installed
php-pdo.i386                        5.1.6-27.el5_5.3                   installed
php-pear.noarch                     1:1.4.9-6.el5                      installed


EPELリポジトリのインストール

[root@localhost ~]# rpm --import http://download.fedora.redhat.com/pub/epel/RPM-GPG-KEY-EPEL
[root@localhost ~]# rpm -ivh http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-4.noarch.rpm
取得中
準備中...                ########################################### [100%]
   1:epel-release           ########################################### [100%]


Remiリポジトリのインストール

[root@localhost ~]# rpm --import http://rpms.famillecollet.com/RPM-GPG-KEY-remi
[root@localhost ~]# rpm -ivh http://rpms.famillecollet.com/enterprise/5/remi/i386/remi-release-5-8.el5.remi.noarch.rpm
http://rpms.famillecollet.com/enterprise/5/remi/i386/remi-release-5-8.el5.remi.noarch.rpm を取得中
準備中...                ########################################### [100%]
   1:remi-release           ########################################### [100%]


yum-prioritiesのインストール

[root@localhost ~]# yum -y install yum-priorities

~省略~

Installed:
  yum-priorities.noarch 0:1.1.16-16.el5.centos

Complete!


CentOS-Base.repoの修正

[root@localhost ~]# vi /etc/yum.repos.d/CentOS-Base.repo
~省略~
[base]
name=CentOS-$releasever - Base
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basea        rch&repo=os
#baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5
priority=1
#released updates
[updates]
name=CentOS-$releasever - Updates
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basea        rch&repo=updates
#baseurl=http://mirror.centos.org/centos/$releasever/updates/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5
priority=1
#additional packages that may be useful
[extras]
name=CentOS-$releasever - Extras
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basea        rch&repo=extras
#baseurl=http://mirror.centos.org/centos/$releasever/extras/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5
priority=1
~省略~

上記を追記して上書き保存。


remi.repoの修正

[root@localhost ~]# vi /etc/yum.repos.d/remi.repo
[remi]
priority=1
~省略~

上記を追記して上書き保存。


MySQLのアップデート

[root@localhost ~]# yum -y --enablerepo=remi update mysql
Loaded plugins: fastestmirror, priorities
Loading mirror speeds from cached hostfile
 * base: ftp.yz.yamagata-u.ac.jp
 * epel: ftp.kddilabs.jp
 * extras: ftp.yz.yamagata-u.ac.jp
 * remi: remi-mirror.dedipower.com
 * updates: ftp.yz.yamagata-u.ac.jp
remi                                                     | 2.5 kB     00:00
321 packages excluded due to repository priority protections
Setting up Update Process
Resolving Dependencies
--> Running transaction check

~省略~

Dependency Installed:
  libedit.i386 0:2.11-2.20080712cvs.el5    mysql-libs.i386 0:5.5.20-1.el5.remi
  mysqlclient15.i386 0:5.0.67-1.el5.remi   t1lib.i386 0:5.1.1-7.el5

Updated:
  mysql.i386 0:5.5.20-1.el5.remi

Dependency Updated:
  mysql-server.i386 0:5.5.20-1.el5.remi    php.i386 0:5.3.9-1.el5.remi
  php-cli.i386 0:5.3.9-1.el5.remi          php-common.i386 0:5.3.9-1.el5.remi
  php-devel.i386 0:5.3.9-1.el5.remi        php-gd.i386 0:5.3.9-1.el5.remi
  php-mbstring.i386 0:5.3.9-1.el5.remi     php-mysql.i386 0:5.3.9-1.el5.remi
  php-pdo.i386 0:5.3.9-1.el5.remi

Complete!

MySQLのアップデートを実行することで、PHPもアップデートされる。


PHPのバージョンを確認

[root@localhost ~]# php -v
PHP 5.3.9 (cli) (built: Jan 10 2012 22:05:12)
Copyright (c) 1997-2012 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2012 Zend Technologies


MySQLのバージョンを確認

[root@localhost ~]# mysql --version
mysql  Ver 14.14 Distrib 5.5.20, for Linux (i686) using readline 5.1


php.iniの用意

[root@localhost ~]# mv /etc/php.ini /etc/php.ini.old
[root@localhost ~]# cp /usr/share/doc/php-common-5.3.9/php.ini-development /etc/php.ini

php.ini-developmentは、開発環境の推奨設定になっている(らしい)
この作業を行わなくてもレッスンを実践することはできるが、デフォルトのphp.iniではコードにエラーがあっても、エラーが出力されない設定になっている。


レッスン内でもよく見る画像のようなエラーが出力されないということ。
php.ini-developmentを使えば、出力されるようになる。
※php.iniを修正する方法もあるが、ここでは割愛。

php.iniの修正

[root@localhost ~]# vi /etc/php.ini
~省略~ 
[Date]
; Defines the default timezone used by the date functions
; http://php.net/date.timezone
date.timezone = "Asia/Tokyo"
~省略~ 

セミコロンを削除し、”Asia/Tokyo”を追記して上書き保存。
php.ini-developmentを使った場合は、上記設定が必要。
詳細はマニュアルを参照。

httpdの再起動

[root@localhost ~]# service httpd restart
httpd を停止中:                                            [  OK  ]
httpd を起動中:                                            [  OK  ]

php.iniの設定を反映させるために、再起動する。

my.cnfの用意

[root@localhost ~]# mv /etc/my.cnf /etc/my.cnf.old
[root@localhost ~]# cp /usr/share/doc/mysql-server-5.5.20/my-medium.cnf /etc/my.cnf

デフォルトのmy.cnfをバックアップして、雛形をmy.cnfとしてコピーする。
雛形ファイルは複数あり、環境にあわせて選択する。


my.cnfの設定

[root@localhost ~]# vi /etc/my.cnf
~省略~
[mysqld]
character-set-server=utf8
skip-character-set-client-handshake
~省略~
[mysql]
default-character-set=utf8
~省略~

上記を追記して、上書き保存。

<2012/01/23追記>
skip-character-set-client-handshakeを追記。
文字化け対策として、設定しておいた方が良さそうだ。
もしくは、PHPでmysql_set_charsetを使う。


mysqldの再起動

[root@localhost ~]# service mysqld restart
mysqld を停止中:                                           [  OK  ]
mysqld を起動中:                                           [  OK  ]

my.cnfの設定を反映させるために、再起動する。

文字コードの確認

mysql> show variables like 'char%';
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | utf8                       |
| character_set_connection | utf8                       |
| character_set_database   | utf8                       |
| character_set_filesystem | binary                     |
| character_set_results    | utf8                       |
| character_set_server     | utf8                       |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)

mysqlにログインしてUTF-8になっているか確認する。
※mysqlへのログイン方法はレッスンを参照

mysql> show variables like 'char%';
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | utf8                       |
| character_set_connection | utf8                       |
| character_set_database   | latin1                     |
| character_set_filesystem | binary                     |
| character_set_results    | utf8                       |
| character_set_server     | latin1                     |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+

my.cnfの修正をする前はこうなっている。
このままでは日本語が文字化けする。


はまりポイント

my.cnfを修正してmysqldを再起動させても、バージョンアップ前に作成したデータベースのcharacter_set_databaseはUTF-8にならないため、文字化けしてしまう。

DB(データベース)を削除して作りなおせば、UTF-8で作成される。
バックアップ→DB削除→DB作成→復元の手順で、文字化けはしなくなる。
※バックアップ、DB削除、DB作成、復元の方法は、レッスンを参照。

setで設定することもできるが、mysqldを再起動させると設定が戻ってしまう。

おわりに

上記は、CentOS5.7で実践した時のメモである。
同じCentOSでも6の場合は作業内容が変わるので注意!

個人的にやっておいた方がいいと思っている手順であり、バージョンアップするだけなら必要ない手順も含んでいる。

関連記事:
ドットインストールのレッスン内容に沿ったローカル開発環境をWindowsで構築する方法
ドットインストールでプログラミングを学んでミニゲームを作ってみた

Comments (0)

› No comments yet.

コメントを残す

Allowed Tags - You may use these HTML tags and attributes in your comment.

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <img localsrc="" alt="">

Pingbacks (0)

› No pingbacks yet.