LinuxでPHP+MySQLを動かそう
概要

LinuxでのPHP導入編です。MySQLも入れちゃいます。Win編とくらべて、かなりいい加減で簡単になるかもしれませんがご容赦ください。間違いがあったらごめんなさい

ここではApacheがすでにDSOサポートでインストゥールされてるものとします。DSOに関してはこちら

MySQLのインストール

MySQLから入れます。まずはMySQL用のユーザーとグループを追加します。/usr/local/var/にデータを保存します

# /usr/sbin/groupadd mysql
# /usr/sbin/useradd -g mysql -d /usr/local/var mysql

■MySQLの現時点のバージョンは3.23.40でした
http://www.mysql.com/downloads/

(Recommended)と書いてあるバージョンがいいでしょう。RPMがいい人はRPMでいれましょう。各OSのバイナリーがありますが、ソースをDLする事にします。

# wget http://www.mysql.com/Downloads/MySQL-3.23/mysql-3.23.40.tar.gz
# tar xvzf mysql-3.23.40.tar.gz
# cd mysql-3.23.40
# ./configure --with-charset=ujis \
-with-extra-charsets=all --with-mysqld-user=mysql
# make
# make install

デフォルト文字列はEUCという設定です。次にデータベースを初期化して属性を変更します。

# /usr/local/bin/scripts/mysql_install_db --user=mysql
# chown -R mysql /usr/local/var
# chgrp -R mysql /usr/local/var

次に起動スクリプトを登録します。ソースのsupport-files/mysql.serverがそれです。

# chmod +x support-fies/mysql.server 
# cp support-fies/mysql.server /etc/rc.d/init.d/mysql

たまに動かす人はmysql startで起動できます。stopで停止します。
マシン起動時に立ち上げるにはrc2.dにリンクしておきます。

# cd /etc/rc.d/rc2.d/
# ln -s ../init.d/mysql S90mysql

/etc/my.cnfに設定を書くと起動時のオプションを変えられます。さっきのsupport-filesディレクトリに規模向けファイルがあるのでコピーします。

# cd /usr/local/src/mysql-3.23.40/support-files/
# cp my-small.cnf /etc/my.cnf

小せっていを選びました。起動確認はmysqlshowとでも入力すればmysqlとtestというデータベースが表示されます。
プロセス確認したら、次にrootのパスワードを設定します。MySQL用の管理パスです。

$ mysqladmin -u root password 'パスワード'

これでインストールは完了です。次はユーザーの追加です。

ユーザーの追加

mysqlコマンドを使って一般ユーザーを作成してみます。rootでアクセスする方は読み飛ばしてかまいません。

/*いらんかも
mysqlコマンドを使うには、LD_LIBRARY_PATHを設定しておく必要があります。

:~/.login
export LD_LIBRARY_PATH=/usr/local/lib/mysql/
か
:/etc/ld.so.conf
/usr/local/lib/mysql/
追加して
# ldconfig

とします。RPMからの場合は /usr/lib/mysql です。
*/


そしたらルートでログインしてみます。

$ mysql -u root -p
EnterPassword:

mysql>
mysql> CREATE DATABASE php;
Query OK, 1 row affected (0.00 sec)

mysql> grant INSERT,SELECT,DELETE,UPDATE,CREATE,DROP
-> on php.* to php@localhost IDENTIFIED BY 'pass';
Query OK, 0 rows affected (0.00 sec)

mysql> exit;

phpというデータベースを作成して、phpというユーザーにINSERTとかの権限を与えます。mysqlコマンドはセミコロンを最後に入れないとコマンドを実行しません。この場合

・データベース名--php
・ユーザー名--php
・パスワード--pass

というDBが作成されました。phpで使用する場合上の3つの情報があればMySQLにアクセスできます。

PHPのインストール

■PHPの現時点のバージョンは4.0.6でした。
http://www.php.net/downloads.phpからソースをDLします
常に最新版を確認してください。

# wget http://www.php.net/distributions/php-4.0.6.tar.gz
# tar xvzf php-4.0.6.tar.gz
# cd php-4.0.6
# ./configure --with-apxs=/var/lib/httpd/bin/apxs \
--enable-mbstring --enable-mbstr-enc-trans
# make
〜いろいろ出る〜
# make install
# vi /var/lib/httpd/conf/httpd.conf
〜httpd.confに次の行を追加(コメントアウト)します〜
AddType application/x-httpd-php .php .php3
〜Apache を再起動します〜
# /var/lib/httpd/bin/apachectl restart

こんな感じです。configureは--helpを付けるか、マニュアルのインストールの章を参照するか、他のサーバを参考にしてみるのがいいと思います。各自環境に合わせてください。--with-mysqlはデフォルトでONです。mbstringは後々使うかもしれないのでつけておきます。
拡張子php3も動くように.php3を追加しておきます

PHPの動作確認は <?phpinfo();?> と書いたテキストファイル test.php を用意して、ホームディレクトリ置きます。

こんな画面が出ればPHPが動いてます。やったね!

phpMyAdminのインストール

phpMyAdminとは、ブラウザ上からMySQLのデータベース操作、データ表示、修正などなんでも出来るスグレモツールです。ぜひ入れましょう。PHPで書かれており日本語版もあります。

■phpMyAdminのダウンロード
http://www.phpmyadmin.net/

ローカルで展開してください。「config.inc.php」を開き

$cfg['PmaAbsoluteUri'] = 'http://mydomain.com/phpMyadmin/';
//phpMyAdminのURL指定
$cfg['blowfish_secret'] = 'letscook';
//クッキー名接頭辞を指定
$cfg['Servers'][$i]['auth_type'] = 'cookie';
//ログインタイプを指定
//config - ファイル設定。config.inc.phpのuser,passwordの所に書く
//http - BASIC認証によるログイン
//cookie - クッキーを使用したログイン画面(これにしてます


設定したらFTPを繋げて、ホームディレクトリにphpMyAdminとかいう名前のディレクトリを作って丸々アップロードしてください。アクセスしてベーシック認証の画面が出たらOKです。rootとパスまたは一般ユーザ名とパスを入れればログイン出来ます。ソースが出る場合は、Apacheの設定で.php3を追加するか、全部.phpに変更してください。

操作の仕方は特に説明しませんがテーブルを作成する場合は、左からユーザー名クリックして、右のフォームにSQL文(CREATE TABLE・・・)を貼り付けるか*.sqlを参照して「実行」をクリックすると新規テーブルが出来ます。

追記:日本語ドキュメント

サンプル動かしてみよ

実際にPHPでMySQLのサンプルを動かしてみましょう。とりあえずカウンタとかどうですか?ダメ? こちらで好きなのを探してください

今回はルートでアクセスし、初期設定のtestというDB(データベース)を使います。まずはテーブルの作成です。

CREATE TABLE count_tbl (
count int(10)
);

こんなSQL文です。テーブル名count_tblで10桁の数値型です。DBでは最初にデータの数や型を決める必要があります。

これを先ほどのphpMyAdminに貼り付けて実行するか、シェルからmysqlコマンドとして実行してください。テーブル一覧に表示されたら成功です。次にphpのソースです。

<?
mysql_connect("localhost","root","パス") or die(mysql_error());
mysql_select_db("DB名");

$result = mysql_query("SELECT * FROM count_tbl");
$r = mysql_fetch_array($result);
$count = $r[count];

if($count==""){
  mysql_query("INSERT INTO count_tbl(count) VALUES (1)");
  $count=1;
}else{
  $count++;
  mysql_query("UPDATE count_tbl SET count=$count");
}
echo $count;
?>

解説します
mysql_connect("localhost","root","パス") or die(mysql_error());
mysql_select_db("test");

最初にmysqlに接続します。ホスト、ユーザー、パスです。次の行でDBを指定します。

$result = mysql_query("SELECT * FROM count_tbl");
$r = mysql_fetch_array($result);
$count = $r[count];

SELECT〜はテーブルから全てのデータを取り出します。
2行目はその一列目のデータの配列を取り出します。
3行目はそこからcountという項目を取り出します。

if($count==""){
mysql_query("INSERT INTO count_tbl VALUES ('1')");
$count=1;

最初は取り出しても値がないのでINSERT〜で1を代入します。

$count++;
mysql_query("UPDATE count_tbl SET count=$count");

カウントアップします。
2行目はcount_tblのcountという項目をカウントアップした値に更新します

echo $count;
カウンタを表示します

どうでしょう?うまくいきましたか?



<<Back


LastModified