php4.3.8 + MySQL3.23.53の導入
sorry Japanese only
最終更新日 2004/08/21
page size = Mbyte

自宅サーバーで blogでも動かしてみようか?
って事で blogのフリーソフトを物色していたら、P_BLOGと言うのが非常に良さそうでした。日本語のページもあるようです => P_BLOG Project

これを導入するためには PHPと MySQLが必須とのことで、まずはこれの導入をしてみました。

まずは Downloadしてきます。
PHP4.3.8.tar.gz
MySQL-3.23.53-0vl2.src.rpm

PHPは、PHP5.0.1.tar.gzという最新バージョンもありましたが、導入記事が検索にて多く引っかかる PHP4の方を選びました。

ちなみに PHPとは、CGIとか SSIは httpd serverの方へ負荷がかかるけど、PHPはクライアント側に負荷をかけ serverに優しい言語。
MySQLは、フリーの Databaseエンジン
って事でしょうか。違うか。
PHPは .html内にそのまま命令を記述できるのが良い。って事のようです?

最初に書いておきます。参考にさせていただいたサイト(敬称略、順不同です)
Vine Linux 2.6r4でPHP4(ソース・インストール)
☆TooFactory別館☆--PHP4.3.4インストール--
Apache2(with mod_deflate) + PHP4のインストール
Vine Linux いじり
LinuxにMySQLをインストールする手順 (rpm編)
[alm-ore] php インストール失敗
どうもありがとうございました。

それでは install開始です。PHP,MySQL共にソースより installします

組み込む順番を間違えると、errorが出ると思います。
apache2 => MySQL => PHP4 の順番で組み込んでいきましょう。

apache2の再コンパイル

PHP4を modules/libphp4.soと DSOで組み込むため、mod_soを有効にして apache2コンパイルし直します。
まずは apache2のソースを Downloadします。=> httpd-2.0.50.tar.gz

Downloadしたファイルを解凍します。
実行したディレクトリーの下に httpd-2.0.50ディレクトリーが作成され、そこへ解凍されます。
[root]# gzip -d httpd-2.0.50.tar.gz
[root]# tar xvf httpd-2.0.50.tar
configureの実行
[root]# configure --enable-info --enable-logio --enable-log-config --enable-so
私は他にも色々組み込んでいますが、PHP+MySQLの場合には、最後の --enable-soだけを指定して configure実行すれば良いと思います。
configure実行結果はこちら => apache-configure.txt

次は makeを実行します。別段、問題無く終わると思います。
[root]# make
makeの実行結果はこちら => apache-make.txt

無事 makeが終了したら make install実行前に、現在動いている apacheを停止します。
[root]# httpd -k stop

make installを実行します。
[root]# make install
まあこれも問題無く終了するでしょう。
make installの実行結果はこちら => apache-make-install.txt
(実行結果は apache2.0.51の結果です)

実際コンパイルされて組み込まれたかを確認します。
[root]# httpd -l
Compiled in modules:
  core.c
  mod_access.c
  mod_auth.c
  mod_include.c
  mod_log_config.c
  mod_logio.c
  mod_env.c
  mod_setenvif.c
  prefork.c
  http_core.c
  mod_mime.c
  mod_status.c
  mod_autoindex.c
  mod_asis.c
  mod_info.c
  mod_cgi.c
  mod_negotiation.c
  mod_dir.c
  mod_imap.c
  mod_actions.c
  mod_userdir.c
  mod_alias.c
  mod_so.c
[root]#
色々と組み込まれております。本当に必要なんでしょうか・・
注目するのは、最後の mod_so.cです。

で、apache2は再起動もせずここで作業中断。
次は MySQLの installに進みます。

MySQL3の install

ring-serverより getしてきた MySQL-3.23.53-0vl2.src.rpmは、VinePlus2.6用なので Vine2.6用に作り直します。(って言い方で良いんだと思います。)
[root]# ls -l
-rw-r--r--    1 root     root     10876811 Aug 21 16:39 MySQL-3.23.53-0vl2.src.rpm
[root]# rpm --rebuild MySQL-3.23.53-0vl2.src.rpm 
MySQL-3.23.53-0vl2.src.rpm をインストール中
実行中(%prep): /bin/sh -e /var/tmp/rpm-tmp.27217
+ umask 022
+ cd /root/rpm/BUILD
+ cd /root/rpm/BUILD
+ rm -rf mysql-3.23.53
+ tar -xvvf -
+ /bin/gzip -dc /root/rpm/SOURCES/mysql-3.23.53.tar.gz
drwxrwxrwx 503/100           0 2002-10-10 19:27:36 mysql-3.23.53/
以下省略
アスロン 1GHzにて 15分かかりました。
実行結果の全てはこちら => MySQL-rebuild.txt 1Mbyteあります。

次は出来上がった MySQLのバイナリをインストールします。
-rebuildで実行したユーザーのホームディレクトリー下、rpm/RPMS/i386に実体ファイルがあるので、そこへ cdしてから実行します。
[root]# pwd
/root/rpm/RPMS/i386
[root]# ls -l
合計 12314
-rw-r--r--    1 root     root      7277191 Aug 21 17:16 MySQL-3.23.53-0vl2.i386.rpm
-rw-r--r--    1 root     root      1427512 Aug 21 17:16 MySQL-Max-3.23.53-0vl2.i386.rpm
-rw-r--r--    1 root     root       717585 Aug 21 17:16 MySQL-bench-3.23.53-0vl2.i386.rpm
-rw-r--r--    1 root     root      2150158 Aug 21 17:16 MySQL-client-3.23.53-0vl2.i386.rpm
-rw-r--r--    1 root     root       731848 Aug 21 17:16 MySQL-devel-3.23.53-0vl2.i386.rpm
-rw-r--r--    1 root     root       246291 Aug 21 17:16 MySQL-shared-3.23.53-0vl2.i386.rpm
[root]# rpm -Uvh MySQL-*.rpm
MySQL                       ##################################################
Preparing db table
Preparing host table
Preparing user table
Preparing func table
Preparing tables_priv table
Preparing columns_priv table
Installing all prepared tables
040821 17:21:53  /usr/sbin/mysqld: Shutdown Complete


PLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL root USER !
This is done with:
/usr/bin/mysqladmin -u root  password 'new-password'
/usr/bin/mysqladmin -u root -h vine1  password 'new-password'
See the manual for more instructions.

Please report any problems with the /usr/bin/mysqlbug script!

The latest information about MySQL is available on the web at
http://www.mysql.com
Support MySQL by buying support/licenses at https://order.mysql.com

Starting mysqld daemon with databases from /var/lib/mysql
MySQL-Max                   ##################################################
040821 17:21:55  mysqld ended

Giving mysqld a couple of seconds to restart
Starting mysqld-max daemon with databases from /var/lib/mysql
MySQL-bench                 ##################################################
MySQL-client                ##################################################
MySQL-devel                 ##################################################
MySQL-shared                ##################################################
[root]# 
6個全部を installしなくとも良い。って話なんですが、ではどれが必要なのか?は分からないので全部を installしました。
次は MySQLの passwdの設定。及び不要な userの削除を行います。

[root]# /usr/bin/mysqladmin -u root password 'hogehoge'
[root]# mysql -u root -p
Enter password: hogehoge      <== 先ほど設定したパスワードでログイン
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2 to server version: 3.23.53-Max

Connection id: 2  (Can be used with mysqladmin kill)

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql> select host,user,password from mysql.user;
+-----------+------+------------------+
| host      | user | password         |
+-----------+------+------------------+
| localhost | root | hogehogeの hash?|
| vine1     | root |                  |
| localhost |      |                  |    <== 下 2個の user名未設定の
| vine1     |      |                  |    <== userは不要なので削除する
+-----------+------+------------------+
4 rows in set (0.00 sec)

mysql> delete from mysql.user where user="";
Query OK, 2 rows affected (0.00 sec)

mysql> select host,user,password from mysql.user;
+-----------+------+------------------+
| host      | user | password         |
+-----------+------+------------------+
| localhost | root | hogehogeの hash?|
| vine1     | root |                  |
+-----------+------+------------------+
2 rows in set (0.00 sec)

mysql> exit
Bye
[root]# 

deamonで自動実行になっているかを確認して MySQLの installは終了です。
[root]# chkconfig --list
mysql           0:off   1:off   2:on    3:on    4:on    5:on    6:off

PHP4の install

Downloadした PHP-4.3.8.tar.gzを解凍します。

[root]# gzip -d PHP-4.3.8.tar.gz
[root]# tar xvf PHP-4.3.8.tar
以下略
PHP-4.3.8ディレクトリーが出来上がるので cdする。

ここで、普通だったら ./configureすれば良いだけですが PHPはオプション指定をしないと configureが正常終了しません。
それと私の場合、phpの configureコマンド初期設定と MySqlの installのやり方が異なっていたのか、実際に動かした時 apacheの error.logに以下のような errorが出るようになってしまいました。
File 'NONEXISTENT/charsets/?.conf' not found (Errcode: 2)
Character set '#12' is not a compiled character set and is not specified in the 'NONEXISTENT/charsets/Index' file

2個ほどリンクを作成してから configureし回避することが出来るようになりました。
[root]# cd /usr/local
[root]# mkdir mysql
[root]# cd mysql
[root]# ln -s /usr/include/mysql/ include
[root]# ln -s /usr/lib/mysql/ lib

それでは configureを実行しますが、オプションが長いので \マークで区切って入力していきます。
[root]# configure \
>--with-apxs2=/usr/local/apache2/bin/apxs \
>--enable-zend-multibyte \
>--with-mysql=/usr/local/mysql \
>--enable-track-vars \
>--enable-mbstring \
>--enable-mbregex \
>--with-png-dir=/usr/local/lib \
>--with-jpeg-dir=/usr/local/lib \
>--with-zlib-dir=/usr/local/lib
>--with-zlib \
>--with-gd

上から説明すると
--with-apxs2=/usr/local/apache2/bin/apxsapache2 Extension Toolの指定(と思います。既に apxsは存在してました)
--enable-zend-multibyteShift_JISを使えるようにする
--with-mysql=/usr/local/mysqlMySQLを /usr/local/binディレクトリーに指定
--enable-track-varsフォームからの入力とCookieからの入力が簡単な記述で受け取れるようになる
--enable-mbstring2バイト文字を有効にする。必須。
--enable-mbregexマルチバイト正規表現を有効にする。必須。
--with-png-dir=/usr/local/libPNG画像作成用ライブラリの指定
--with-jpeg-dir=/usr/local/libJPEG画像作成用ライブラリの指定
--with-zlib-dir=/usr/local/libzlibの場所を指定
--with-zlibzlibを有効にする
--with-gdグラフィックライブラリーを有効にする

上記 configureの実行結果はこちら ==> PHP-configure.txt

configureが正常終了したら makeを実行します。
[root]# make

makeの実行結果はこちら ==> PHP-make.txt

なんか最後に tempnam is dangerous なんて出てますがどうすれば良いのでしょうか。
で、googleしてみたら、debugメッセージだから気にすること無いよ?って、どこかの BBSに書き込まれていました。

それと makeで以下のような errorが出てしまうときは、make cleanしてから makeをやりましょう。
ext/ctype/ctype.lo: file not recognized: File truncated
collect2: ld returned 1 exit status
make: *** [libphp4.la] エラー 1

[root]# make clean
find . -name \*.lo | xargs rm -f
find . -name \*.o | xargs rm -f
find . -name \*.la | xargs rm -f
find . -name \*.a | xargs rm -f
find . -name \*.so | xargs rm -f
find . -name .libs -a -type d|xargs rm -rf
rm -f libphp4.la sapi/cli/php libphp4.la modules/* libs/*

次は PHPを installします。
[root]# make install
Installing PHP SAPI module:       apache2handler
/usr/local/apache2/build/instdso.sh SH_LIBTOOL='/usr/local/apache2/build/libtool' libphp4.la /usr/local/apache2/modules
/usr/local/apache2/build/libtool --mode=install cp libphp4.la /usr/local/apache2/modules/
cp .libs/libphp4.so /usr/local/apache2/modules/libphp4.so
cp .libs/libphp4.lai /usr/local/apache2/modules/libphp4.la
libtool: install: warning: remember to run `libtool --finish /tmp/php-4.3.8/libs'
chmod 755 /usr/local/apache2/modules/libphp4.so
[activating module `php4' in /usr/local/apache2/conf/httpd.conf]
Installing PHP CLI binary:        /usr/local/bin/
Installing PHP CLI man page:      /usr/local/man/man1/
Installing PEAR environment:      /usr/local/lib/php/
[PEAR] Archive_Tar    - already installed: 1.1
[PEAR] Console_Getopt - already installed: 1.2
[PEAR] PEAR           - already installed: 1.3.2
Wrote PEAR system config file at: /usr/local/etc/pear.conf
You may want to add: /usr/local/lib/php to your php.ini include_path
[PEAR] DB             - already installed: 1.6.2
[PEAR] HTTP           - already installed: 1.2.2
[PEAR] Mail           - already installed: 1.1.3
[PEAR] Net_SMTP       - already installed: 1.2.3
[PEAR] Net_Socket     - already installed: 1.0.1
[PEAR] XML_Parser     - already installed: 1.0.1
[PEAR] XML_RPC        - already installed: 1.1.0
Installing build environment:     /usr/local/lib/php/build/
Installing header files:          /usr/local/include/php/
Installing helper programs:       /usr/local/bin/
  program: phpize
  program: php-config
  program: phpextdist
[root]# 
make installを実行すると apache2の httpd.confに以下の行が追加されます。

LoadModule php4_module        modules/libphp4.so

次は php.iniファイルをコピーします
元ネタは、ソースを展開したディレクトリーにある php.ini-distです
[root]# cp php.ini-dist /etc/php.ini
変更内容は、まるっきりこちらのページの方と同じです。

それでは apache2を restartしてみましょう。

[root]# httpd -k restart
で、PHPが apache2上で動いているかの確認は、こんなファイルを .phpの拡張子にて作成します。
<?php phpinfo() ?>

これの実行結果は、チト公開できません。
凄い内部情報が表示されてます・・

と言うことで PHPと MySQLの installは終了です。

21327
戻る