Vine Linux 3.0でLAMP構築
Vine linux 3.0ではaptというパッケージ管理システムが導入されている。この便利なシステムを使ってGUI上からインストールでるので、使ってみた。なお、GUIはsynapticというツールで実現されている。使ってみると(よくわからないうちに)何でもすんなりインストールできて、少々怖いくらいである。(笑)今回はApache,MySQL,PHPが動くところまで。
Vine3.0のインストール
なんにも考えずにそのまま雑誌付録のCD-ROMを起動してすんなり3.0インストール完了。以前のことを思うとあっけないくらい。というのも、インストールツールが洗練されてきたのと、ドライバなどの情報が完備されてきたおかげでしょう。開発者のみなさまにただただ感謝。 サーバータイプでインストールすれば、この状態ですでにapacheは動いているので、ためしに、Mozillaを立ち上げてhttp://localhost/としてみると、すんなり「もしもこれをお読みになって・・」が表示される。
synapticによるパッケージのインストール
まず、vine plusなどのCD-ROMがない場合は直接ネットから落としてくるので、ネットに繋がっていることが第一条件。パッケージ管理はすべてやってくれるので、完全にお任せできる。。と思う。
phpのインストール
phpは標準のサーバータイプではインストールされないようなので、さっそくsynapticでインストールしてみる。GNOMEの
[アプリケーション]ー[システムツール]ー[synapticパッケージマネージャ]
を起動。 まず、webサーバーのバージョンを確認。入ってるのはapache 1.3.3らしい。 今度は、phpで検索をかけると、phpのバージョンごとにいくつものパッケージが登録されているので、この中かからphp4関係のものを落としてくる(というか、落としてきても自分ではインストールしないんだから、落としてくるのではなく、インストールする、だよね)。
php
とあるのが、php4らしいので、これを指定すると、namazuやらkakasiやら日本語全文検索関係のパッケージが依存関係にあるというので、これもついでにアップグレード。たぶん本質的には関係ないと思われる。さきほどapacheのバージョンを確認したので、
php-apache 4.3.9-0vl1(apache1用のphp4モジュール)
を指定。さらに以下のものもインストール。中にはいらないものもあるかもしれないが、適当にみつくろって。。。って、おでん屋じゃないから。
php-devel php-domxml php-imap php-mode php-mysql php-odbc
でまとめてインストール。「適用」というボタンを押せばオーケイらしい。とりあえず、再起動しておく。あ、インストール時にわざとはずしたemacs関係がインストールされてしまった、おまけにインストールすべきディレクトリがないと怒られた、、。こういうこともある。
phpの動作確認
次に移る前に、いろいろ動作確認したい。まず、る。GNOMEの
[アプリケーション]ー[システムツール]ー[サービスの管理]
を起動してみて、webサーバーなどがきちんと起動する設定になっているか確認。標準ではwebサーバーは起動しているが、proftpd(FTPサーバー)は起動しない設定なので、これにチェックを入れて起動するようにする。これで、ユーザーディレクトリにテスト用のファイルを送り込むことができる。/home/userまではインストール時に勝手に作ってくれるので、(インストール時に一般userを指定した場合のみ)この下に、ディレクトリを展開する。今回は、
/home/user/public_html /home/user/public_html/php/ /home/user/public_html/phpMyAdmin
のディレクトリを作っておく。ちなみに/home/user/public_html/phpMyAdmin?は、後にphpMyAdmin?を使うためのディレクトリ。 そして、ftpで、テスト用のファイルを/home/user/public_html/php/に送り込んでおく。ファイルの内容はなんでもいいが、次のファイルが便利。以下の内容をテキストファイルで作って送り込む。ファイル名はtest.phpでもいい。
<? phpinfo(); ?>
これは、phpの状態を表示する関数。とりあえず、phpに関する情報がいろいろ表示されればきちんと動いていることになる。次に、
<html> <body> <form method="post" action="<?php echo $_SERVER["REQUEST_URI"] ?>"> <p>テスト文字列 <input type=text name=iTest size=60 value="ソリューション表示"> <input type=submit value=" テスト "> </p> <?php if ($_SERVER['REQUEST_METHOD'] == 'POST') echo "<hr><p>入力した文字列は「" . htmlspecialchars($_POST['iTest']) . "」ですよね?</p>"; ?> </form> </body> </html>
を、試してみる。これは日本語表示がきちんとできているか確認できる。文字化けしなければ、日本語のmb関係がきちんと動いていることになる。 両方ともサーバーに送っておいて、リモートからチェックを入れる。パーミッションはとりあえず次のように設定する。パーミッションの設定は、GNOMEデスクトップ上のuserのホームから目的のファイルをたどって、右クリックからプロパティを選ぶ。(まるでウインドウズだ)以下はとりあえず動けばいいという非常に甘いパーミッションなので外部に公開されているサーバーで直接確かめようとは思わないでほしい。ローカルネット上で遊ぶのならいいかな。
/home/user/ 755 または 745 /home/user/public_html/ 755 または 745 /home/user/public_html/php/ 755 または 745 /home/user/public_html/php/test.php 644
これで準備完了。リモートからウエブブラウザで確認してみる。
http://*.*.*.*/~user/php/test.php
なお、*.*.*.*というのはローカルネット上のIPで、普通にインストールした場合は、ネット上にあるDHCPサーバーからIPアドレスをもらっているはずなので、これを先に確かめておくとよい。 とりあえず、ターミナルを全く使わず、GUIのみでここまでできる。phpなんぞは、mb関係の指定もなにもなしで日本語がきちんと動く。これは「凄い」ことだと思う。
MySQLのインストール
phpと同様にGNOMEの
[アプリケーション]ー[システムツール]ー[synapticパッケージマネージャ]
を起動。mysqlで検索をかけ、以下のものもインストール。
MySQL-Max (バージョンは4.0.21) MySQL-bench MySQL-client MySQL-devel MySQL-embedded MySQL-server
でまとめてインストール。 ここからはターミナルを使うことになる。
MySQL最初の設定
- 設定の流れは次の通り
1)Linux userを作る。ユーザー名はmysql 2)MySQLが動いているかどうか確認 3)デフォルトで用意されているMySQLの匿名ユーザーを消す(セキュリティの関係) 4)デフォルトではMySQLのrootユーザーにパスワードが設定されていないので設定する 5)MySQLの一般ユーザーを設定。ユーザー名はmysqlとする。もちろんパスワードも設定 6)練習用にデータベースを一つ作ってみる
はじめは、MySQLを扱うユーザー、mysqlと適当なパスワードを作っておく。 まず、ターミナルから#mysql show
と打ってみる。これがすんなりDatabaseが表示され、mysqlとtestと2つのデータテーブルが見れればきちんと動いている。え、そんなに簡単にデータベースに入れちゃっていいの?と思うのも最もなこと。+-----------+ | Databases | +-----------+ | mysql | | test | +-----------+
それもそのはず。インストールした段階で、MySQLには次のようなユーザーが勝手に設定されている。[root@localhost root]# mysql Welcome to the MySQL monitor. Commands end with ; or ?g. Your MySQL connection id is 2 to server version: 4.0.17 Type 'help;' or '?h' for help. Type '?c' to clear the buffer. mysql> select User,Host from mysql.user; +------+-----------------------+ | User | Host | +------+-----------------------+ | | localhost | | root | localhost | | | localhost.localdomain | | root | localhost.localdomain | +------+-----------------------+ 4 rows in set (0.36 sec)
ユーザーとホストの組合せで4組、このうち空欄は匿名ユーザーで、ログインしかできないが(というかログインできてしまう)、rootユーザーはスーパーユーザーであり、なんでもできてしまう。これでは困るので、とりあえず、使うあてのない匿名ユーザーは削除する。これから、スーパーユーザーのほうから始末する。 まず、rootにパスワードを設定する。このパスワードは、Linuxのユーザーのrootとはまったく違うMySQLのみのユーザーとパスである。 Linuxで作ったMySQLを扱うためのユーザー、mysqlになる。root# su - mysql Password:
で、mysqlでMySQLにログインし、rootのパスワードを設定する。[mysql@localhost mysql]$ mysql -u root Welcome to the MySQL monitor. Commands end with ; or ?g. Your MySQL connection id is 3 to server version: 4.0.17 Type 'help;' or '?h' for help. Type '?c' to clear the buffer. mysql> set password for root=password('********'); Query OK, 0 rows affected (0.34 sec) mysql> flush privileges; Query OK, 0 rows affected (0.20 sec) mysql> exit Bye
これで設定できた。 次に匿名ユーザーを削除する。rootユーザーで再びMySQLに接続。
[mysql@localhost mysql]$ mysql -u root -p Enter password:******** Welcome to the MySQL monitor. Commands end with ; or ?g. Your MySQL connection id is 5 to server version: 4.0.21-Max Type 'help;' or '?h' for help. Type '?c' to clear the buffer. mysql> use mysql; Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A Database changed mysql> delete from user where user=''; Query OK, 2 rows affected (0.31 sec) mysql> flush privileges; Query OK, 0 rows affected (0.04 sec) mysql> exit Bye [mysql@localhost mysql]$
作業の結果を確かめてみる。
[mysql@localhost mysql]$ mysql ERROR 1045: Access denied for user: 'root@localhost' (Using password: NO)
こんどは、匿名ユーザーでは入れてくれない。
[mysql@localhost mysql]$ mysql -u root -p Enter password: Welcome to the MySQL monitor. Commands end with ; or ?g. Your MySQL connection id is 8 to server version: 4.0.21-Max Type 'help;' or '?h' for help. Type '?c' to clear the buffer. mysql> select User,Host from mysql.user; +------+-----------------------+ | User | Host | +------+-----------------------+ | root | localhost | | root | localhost.localdomain | +------+-----------------------+ 2 rows in set (0.14 sec)
匿名ユーザーが消えた。次に、MySQLの一般ユーザーを作る。通常の作業はその一般ユーザーで行う。 ユーザー名はやっぱりmysqlにしよう。(ああ、ややこしい。でもいろいろ名前を付けるよりは便利。) まずは、rootユーザーでログイン。mysqlというデータベースユーザーを作る。
[mysql@localhost mysql]$ mysql -u root -p Enter password: Welcome to the MySQL monitor. Commands end with ; or ?g. Your MySQL connection id is 9 to server version: 4.0.17 Type 'help;' or '?h' for help. Type '?c' to clear the buffer. mysql> grant all on *.* to mysql identified by '********'; Query OK, 0 rows affected (0.39 sec) mysql> flush privileges; Query OK, 0 rows affected (0.14 sec)
ついでに練習用のデータベースも作っておく。データベース名はtestdb。
mysql> create database testdb; Query OK, 1 row affected (0.19 sec) mysql> exit Bye
とりあえず、ここまででMySQLが使える。
phpMyAdminを使う
MySQLを使うときの手放せないGUIツール、phpMyAdminを使ってみる。これは、phpで記述されたツールなんで、apaheとphpが動けば、インストールは、ダウンロードしてきて適当なディレクトリに置くだけ。 入手先はhttp://phpmyadmin.sourceforge.net/。 ここから、最新の安定バージョンphpMyAdmin?-2.6.0-pl3.tar.gzをとってくる。GNOMEのデスクトップ環境ならダブルクリックで解凍してくれるので、出てきたものを公開したいディレクトリに置いておく。どうしてもターミナルが使いたいのなら、次のようにする。
user$ tar zxfv phpMyAdmin-2.6.0-pl3.tar.gz
設定が一ヶ所だけ。config.inc.phpというファイルをエディタで開いて、
$cfg['Servers'][$i]['auth_type'] = 'config'; // Authentication method (config, http or cookie based)? $cfg['Servers'][$i]['user'] = 'user'; // MySQL user
という部分を2ヶ所書き換える。下のようにする。
$cfg['Servers'][$i]['auth_type'] = 'http'; // Authentication method (config, http or cookie based)? $cfg['Servers'][$i]['user'] = ''; // MySQL user
これは、phpMyAdminに入るときの認証タイプをhttp認証に、またユーザー指定をなくした。これで、パスワードとユーザー名さえ入力すれば使えるようになる。もちろん、MySQLのユーザーである。