Debian (Ubuntu 12) で Dotdeb から最新のPHP , MySQL をインストールする
ご利用のブラウザは、JavaScript が無効 となっていませんか?
このサイトでは、コンテンツの一部が非表示 、あるいは、コメント、お問い合わせの投稿ができない 、検索ができない ことがあります。
DebianにもRedHat系と同じようにバイナリパッケージを提供するためのリポジトリがあります。
ただ、CentOSなどと同じように一般的に最新パッケージとは異なり、古いバージョンが提供されているのが常です。
そのため、最新版のPHPをインストールしたい場合は、
最新のバイナリパッケージをどこからか調達するか
自前でバイナリパッケージを作成(ビルド)するか
ということになります。RedHat系では、いろんな有志のリポジトリが提供されていて、そのリポジトリから必要な最新パッケージを取り込むことができます。
Debianの場合も、RedHat系ほどではないですが、いろんな有志のリポジトリが提供されています。
Dotdeb は、Debianのための有名なLAMP関連の最新パッケージを提供しているリポジトリになります。
今回は、この Dotdeb を利用して最新のPHPをインストールしてみましょう。
Dotdeb は、
強力で、安定した最新のLAMPサーバーを Debian のために提供するための パッケージを含むリポジトリです。
PHP 5.4 and 5.3,
useful PHP extensions : APC, imagick, Pinba, xcache, Xdebug, XHprof…
MySQL 5.5 and 5.1,
Percona toolkit,
Nginx ,
Passenger ,
Redis …
Dotdeb がサポートしているのは、:
Debian 6.0 “Squeeze“ (64bit版(amd64) 32bit版(i386))
です。
パッケージスクリプトは、GitHub上で管理されています。
(※ GitHub(ギットハブ)はソフトウェア開発プロジェクトのための共有ウェブサービス。)
Dotdebのパッケージは、Ubuntuでも動作すると思いますが、サポートの対象ではありません。
( http://www.dotdeb.org/about/ の訳)
Ubuntu 10 では、
インストールできません 。
以下のように依存関係でバージョン不一致が発生し、インストールできません。
...
php5-cli: Depends: libncurses5 (>= 5.7+20100313 ) but 5.7+20090803-2ubuntu3 is installed.
Depends: libssl0.9.8 (>= 0.9.8m-1 ) but 0.9.8k-7ubuntu8.14 is installed.
libapache2-mod-php5: Depends: libssl0.9.8 (>= 0.9.8m-1 ) but 0.9.8k-7ubuntu8.14 is installed.
...
Ubuntu 12 では、
Debian 6 と同じ方法で
インストールできます 。
Dotdeb から最新のPHPをインストールする
Dotdeb から最新のPHPをインストールするために、以下に簡単な手順を解説しておきます。
RedHat系と同じように、Dotdeb リポジトリの登録からとなります。(もちろんリポジトリの登録の仕方は、RedHat系とは違います。)
Dotdebのサイトをパッケージダウンロード先として登録する
いわゆるリポジトリの登録です。/etc/apt/sources.list の末尾に以下を追記します。
...
deb http://packages.dotdeb.org squeeze all
deb-src http://packages.dotdeb.org squeeze all
sources.list の書式
バイナリパッケージの書式: deb URL Distribution [component1] [component2]…
ソースパッケージの書式: deb-src URL Distribution [component1] [component2]…
現在(2012.5)では、PHP5.4系がリリースされています。
そのため、Dotdebでは、PHP5.3系とPHP5.4系を区別するためにディストリビューション情報を区別するようにしています。(先の設定では、最新のPHP5.3系がインストールされます。)
PHP5.4系をインストールしたい場合は、
...
deb http://packages.dotdeb.org squeeze-php54 all
deb-src http://packages.dotdeb.org squeeze-php54 all
のように設定します。
Dotdebのサイトから、パッケージの公開鍵をダウンロードし、apt-keyで追加する
Debian / Ubuntu では、ダウンロードするパッケージが安全か否かを判断するための公開キーを追加する必要があります。
$ wget http:// www. dotdeb. org/ dotdeb. gpg
...
$ apt-key add dotdeb. gpg
OK
apt-get でキャッシュならびシステムの更新を行う
ダウンロード先の登録などを行った場合は、キャッシュ情報など更新のために apt-get でアップデートを行います。
$ apt-get update
...
Reading package lists... Done
apt-get で最新のPHPをインストールする
最後にPHPのインストールです。
$ apt-get - y install php5- cli php5- mysql php5- common php5 php5- cgi php5- fpm php5- gd
...
Reading package lists... Done
上記は、概ね必要なパッケージを一緒にインストールしています。
個人的には、XML関連とSNMP、TIDY、APC を追加してインストールしました。
$ apt-get - y install php5- cli php5- mysql php5- common php5 php5- cgi php5- fpm php5- gd php5- snmp php5- xmlrpc php5- tidy php5- apc
...
一応、インストールを終えたら、バージョンを確認してみましょう。
$ php - v
PHP 5.3.11-1~dotdeb.0 with Suhosin-Patch (cli) (built: Apr 30 2012 07:42:25)
Copyright (c) 1997-2012 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2012 Zend Technologies
with Suhosin v0.9.33, Copyright (c) 2007-2012, by SektionEins GmbH
現在では、Debian本家のリポジトリが、PHP 5.3.7 に対して 一応、Dotdebが PHP 5.3.11 を提供していますから、上記のように出力されれば、
ちゃんと Dotdeb から最新パッケージをインストールできたことを確認できたことになるでしょう。
Dotdeb から最新のMySQLをインストールする
Dotdeb から最新のMySQLをインストールするために、以下に簡単な手順を解説しておきます。
先のDotdeb リポジトリの登録は、ここでは行ったものとして、それ以降を簡単に解説してみます。
apt-get で最新のMySQLをインストールする
$ apt-get - y install mysql- server- 5. 5 mysql- client- 5. 5 mysql- common
....
以下のように途中でTUIの画面でパスワードの設定を促されます。ここで設定したパスワードは、データベース管理者(root)のパスワードですので、忘れないようにしましょう。
lqqqqqqqqqqqqqqqqqqqu mysql-server-5.5 を設定しています tqqqqqqqqqqqqqqqqqqqk
x 強制ではありませんが、MySQL を管理する "root" ユーザのパスワードを設定す x
x ることを強くお勧めします。 x
x x
x この値を空のままにしておいた場合は、パスワードは変更されません。 x
x x
x MySQL の "root" ユーザに対する新しいパスワード: x
x x
x _________________________________________________________________________ x
x x
x <了解> x
x x
mqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqj
一応、インストールを終えたら、バージョンを確認してみましょう。
$ mysql -- version
mysql Ver 14.14 Distrib 5.5.23, for debian-linux-gnu (x86_64) using readline 6.1
現在では、Debian本家のリポジトリが、MySQL 5.1.49 に対して 一応、Dotdebが MySQL 5.1.61 , 5.5.23 を提供していますから、上記のように出力されれば、
ちゃんと Dotdeb から最新パッケージをインストールできたことを確認できたことになるでしょう。
mysqlサーバーの管理者でmysqlへログインする
$ mysql - uroot - pxxxxxx
...
mysql> use mysql;
mysql>
mysql> のプロンプトが表示されてばOKです。
以降の説明は、mysql> のプロンプトから、mysqlのsql分を発行して、mysqlサーバーの設定を行っていきます。
そのため、必ず最後に; の文字列を入力することをお忘れなく。
mysqlサーバーの管理者パスワードを設定する
mysql> set password for root@localhost= password( 'hogehoge');
上記では、hogehoge がパスワードになります。
不要なmysqlのデフォルトユーザを削除する
mysql> select user, host from mysql. user;
+------+-----------------+
| user | host |
+------+-----------------+
| root | 127.0.0.1 |
| | localhost |
| root | localhost |
| | host.hoge.com |
| root | host.hoge.com |
+------+-----------------+
5 rows in set (0.00 sec)
mysql> delete from mysql. user where user= '';
最初のselect user … で、現在登録されているユーザをすべて表示しています。
この中で、user の欄に空白があるものがありますから、この空白のユーザは、まず、削除しておきます。
delete from mysql.user … で、実際に削除しています。
※特に空白のユーザ名がない場合は、この操作は不要です。
mysqlのユーザを追加する
mysql> insert into user set user= "hoge", password= password( "hogehoge"), host= "localhost";
hoge@localhost で、hogehoge でログインできるようになります。
また、他のホストからのアクセスを許可したい場合は、ここで指定している host=”localhost” の localhost を変更し、上記のイメージでSQLを発行します。
例)
host2.exmapl.com というホストから許可したい場合は、以下のようにすれば良いです。
mysql> insert into user set user= "hoge", password= password( "hogehoge"), host= "host2. exmapl. com";
また、このホスト名は、IPアドレスを指定することもできます。
例えば、ローカルLAN内の”192.158.1.128″からのアクセスを許可したい場合は、以下のようにすれば良いです。
mysql> insert into user set user= "hoge", password= password( "hogehoge"), host= "192. 158. 1. 128";
データベースを追加する
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| test |
+--------------------+
3 rows in set (0.00 sec)
mysql> drop database test;
mysql> CREATE DATABASE hogedb;
最初にshow databases; で、現在登録されているデータベースを確認します。
この中で、test があれば、それは、デフォルトで設定されているテスト用のデータベースなので、ここでは、次のdrop database test; で削除しています。
最後にCREATE DATABASE hogedb; で、hogedb というデータベースを作成しています。
mysqlの新規ユーザが新規データベースを操作できるようにする
mysql> grant all on hogedb.* to hoge;
...
mysql> grant all on hogedb.* to hoge@192. 158. 1. 128;
...
上記の設定で、hogedb へのフルアクセスをhoge@localhost が行えるようになります。
以下のようなエラーが発生したら、
mysql> grant all on hogedb.* to hoge@192. 158. 1. 128;
ERROR 1133 (42000): Can't find any matching row in the user table
ほとんどの場合、データが更新されていないので、そんなデータありません・・・みたいなエラーなので、
mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.04 sec)
mysql> grant all on hogedb.* to hoge@192. 158. 1. 128;
Query OK, 0 rows affected (0.00 sec)
のように
FLUSH PRIVILEGES を実行してあげてデータを更新してあげるとうまくいくことがほとんどです。お試しを。
最後に今まで編集したmysqlの情報を更新する
mysql> flush privileges;
この作業で、現在動作中のサーバーの情報も更新されます。
PHPとMySQLの動作確認を行ってみる
最後にPHPとMySQLの動作確認を行ってみます。
前準備:テスト用のテーブルを作成します。
以下のようなSQLファイル( ここでは、test.sql として) を作成し、テスト用のテーブルを作成してみます。
DROP TABLE IF EXISTS `hoge_ test` ;
CREATE TABLE `hoge_ test` (
`id` int ( 10 ) unsigned NOT NULL ,
`name` text ,
PRIMARY KEY ( `id` )
) DEFAULT CHARSET = utf8;
LOCK TABLES `hoge_ test` WRITE ;
INSERT INTO `hoge_ test` VALUES ( 0 , 'test0' ) ;
INSERT INTO `hoge_ test` VALUES ( 1 , 'test1' ) ;
INSERT INTO `hoge_ test` VALUES ( 2 , 'test2' ) ;
INSERT INTO `hoge_ test` VALUES ( 3 , 'test3' ) ;
INSERT INTO `hoge_ test` VALUES ( 4 , 'test4' ) ;
INSERT INTO `hoge_ test` VALUES ( 5 , 'test5' ) ;
UNLOCK TABLES ;
ファイルを作成したら、mysql コマンドで テスト用のテーブルを作成します。
$ mysql - uhoge - phogehoge - Dhogedb < test. sql
これで、特にエラーが発生しなかったらOKです。
前準備:PHPでテスト用のテーブルを読み込みます。
以下のようなphpファイル( ここでは、test.php として) を作成し、テスト用のテーブルを読み込んでみます。
<?php
$dbserv = 'localhost' ; // データベースサーバー
$dbname = 'hogedb' ; // データベース名
$dbuser = 'hoge' ; // ユーザ
$dbpass = 'hogehoge' ; // パスワード
$link = mysql_connect ( $dbserv , $dbuser , $dbpass ) ;
if ( ! $link ) {
die ( '接続できませんでした: ' . mysql_error ( ) ) ;
}
echo "接続に成功しました\n " ;
$selected = mysql_select_db ( $dbname , $link ) ;
if ( ! $selected ) {
die ( 'データベースの選択に失敗しました:' . mysql_error ( ) ) ;
}
echo "データベースの選択に成功しました\n " ;
$result = mysql_query ( 'SELECT id, name from hoge_test' ) ;
echo "テーブル出力を開始します\n " ;
$row_count = 1 ;
while ( $row = mysql_fetch_assoc ( $result ) ) {
echo "-- $row_count 行目 --\n " ;
print_r ( $row [ 'id' ] ) ;
echo "\t " ;
print_r ( $row [ 'name' ] ) ;
echo "\n " ;
$row_count ++;
}
echo "接続を終了します\n " ;
mysql_close ( $link ) ;
?>
phpファイルを作成したら、実行してみましょう。
$ php test. php
接続に成功しました
データベースの選択に成功しました
テーブル出力を開始します
-- 1 行目 --
0 test0
-- 2 行目 --
1 test1
-- 3 行目 --
2 test2
-- 4 行目 --
3 test3
-- 5 行目 --
4 test4
-- 6 行目 --
5 test5
接続を終了します
参考までに、PDOを使ったMySQLへのアクセスは、以下のような感じになります。
これを実行しても同様の結果を得るはずです。
<?php
$dbserv = 'localhost' ; // データベースサーバー
$dbname = 'hogedb' ; // データベース名
$dbuser = 'hoge' ; // ユーザ
$dbpass = 'hogehoge' ; // パスワード
try {
$pdo = new PDO(
"mysql:host=$dbserv ; dbname=$dbname " ,
$dbuser ,
$dbpass
) ;
echo "接続に成功しました\n " ;
$stmt = $pdo -> query ( 'SELECT id, name from hoge_test' ) ;
echo "テーブル出力を開始します\n " ;
$row_count = 1 ;
while ( $row = $stmt -> fetch ( PDO:: FETCH_ASSOC ) ) {
echo "-- $row_count 行目 --\n " ;
print_r ( $row [ 'id' ] ) ;
echo "\t " ;
print_r ( $row [ 'name' ] ) ;
echo "\n " ;
$row_count ++;
}
} catch ( PDOException $e ) {
echo "失敗しました\n " ;
var_dump ( $e -> getMessage ( ) ) ;
}
$pdo = null ;
?>
ここまでできてしまうと、
Nginx にリバースプロキシのキャッシュ削除モジュール nginx cache purge を組み込んで使ってみる(Debian/Ubuntu編) で nginx をインストールしてしまえば、LAMPインストール完了です。
Wordpressまで動作させることができるようになります。
Debianで Nginx + PHP + MySQL の組み合わせは、なかなか強力です。一度お試しあれ。
Debianは、やっぱり軽い?感じがしますね。
実際のUnixBenchでは、RedHat系より良い結果が出ますから、やっぱりそれなりに軽いんだろうと思います。
Ubuntu Serverに比べれば、Debianの方が断然使いやすいと思うのですが、一般的には Ubuntu Server もかなりの人気?のようでもあります。
いずれにしてもDebianもdpkg, apt-get (RedHat系の rpm, yum に相当) で随分と楽にパッケージ管理ができるようになりましたね。
無料サーバーOSとして、CentOS以外の選択肢として十分に有りだと思います。
まずは、CentOSユーザなら、dpkg, apt-get でパッケージ管理を使ってみると良いかもしれませんね。
ご利用のブラウザは、広告ブロック(AdBlockなど) が適用 となっていませんか?
このサイトでは、コンテンツの一部が非表示 、あるいは、コメント、お問い合わせの投稿ができない 、検索ができない ことがあります。
関連記事 :
2013年4月19日, 11:32 PM
これでできるはず。
http://matsu.teraren.com/blog/2013/04/19/debian-squeeze-php54-mysql/
2013年4月20日, 1:05 AM
もっとかんたんに さん。
コメントありがとうございます。
おっしゃるとおりできます。
ただ、このサイトは、初心者から幅広く参考にできるように基礎的なことも記載しています。
基礎的なことが、ちゃんと理解できていれば、応用は、おっしゃるとおりできます。
上級者の方には、ちょっとまどろっこしいかもしれませんが、一応、サイトの趣旨なのでご了解ください。