Apache + PHP + MySQL 的安装与配置

/****************************************************************************
* File:        $HOME/Projects/LinuXP/HowTo_LAMP
* Title:       LAMP - Linux 下 Apache + MySQL + PHP 的安装与配置
* Author:      Cure <angeleyes@eyou.com>
* Date:        03-05-20 21:24
* --------------------------------------------------------------------------
* Description:
*                LAMP 以及 phpMyadmin 的安装与配置
* --------------------------------------------------------------------------
* Change Logs:
*        03.07.18 12:58 Cure        添加 "软件版本"
*      03.07.18 02:08 Cure     整理毕
****************************************************************************/

                LAMP - Linux 下 Apache + MySQL + PHP 的安装与配置


目标读者:

        有兴趣体验 LAMP 却在安装配置中遇到难题的朋友

软件版本:
        Linux:                Redhat 9.0
        Apache:         Apache 1.3.27
        MySQL:                MySQL 4.0.12
        PHP:                PHP 4.3.2rc3

(注意: 现在 MySQL 的最新稳定版本为 4.0.13, PHP 为 4.3.2, 安装起来应该
没有区别. 至于这些软件的老版本, 理论上应该差别不大. 如果有任何问题, 请
查阅官方文档)

本文分六部分:

        . MySQL 的安装
        . Apache 的安装
        . PHP 的安装

        . 配置 Apache 以支持 PHP
        . 配置 PHP 以连接 MySQL

        . phpMyadmin 的中文问题


1. 安装 mysql:

phpMyAdmin 暂时不支持 mysql version >= 4.1.0, 所以直接下稳定的 4.0.12
的各个 rpm 包 (Server, Max, Client 等) 安装.

如果之前安装过别的版本不成功, 或者不想要原来的版本了, 在 rpm -e 之后,
记得删除 /var/lib/mysql 整个目录, 并且以 root 删去 mysql 用户组和用户
否则会导致旧版本的 mysql 权限设置影响新装的 mysql. (吃过亏)

mysql_install_db 会在安装 Server 之后自动运行, 所以, 不必自己动手初始
化数据库.

然后记得用 mysqladmin -u root password 'new_password' 为 root 用户添加
密码!

启动 mysql: shell>mysqld_safe --user=mysql
关闭 mysql: shell>mysqladmin -u root -p shutdown
        (然后会提示输入密码, 正确则数据库会关闭)

2. 安装 apache

拷自 php 官方网站: http://www.php.net/manual/en/install.apache.php

        1.  gunzip apache_xxx.tar.gz
        2.  tar -xvf apache_xxx.tar
        3.  gunzip php-xxx.tar.gz
        4.  tar -xvf php-xxx.tar
        5.  cd apache_xxx
        6.  ./configure --prefix=/www --enable-module=so
        7.  make
        8.  make install

1/2 步可以直接: tar zvxf apache_xxx.tar.gz 解决


3. 安装 php

php 4.3.1 在 make 的时候会出如下错误:

ext/mysql/libmysql/my_tempnam.lo(.text+0x4c): In function `my_tempnam':
/Data/php-4.3.0/ext/mysql/libmysql/my_tempnam.c:103: the use of
`tempnam' is
dangerous, better use `mkstemp'
ext/mysql/libmysql/my_lib.lo(.text+0x3d1): In function `my_dir':
/Data/php-4.3.0/ext/mysql/libmysql/my_lib.c:169: undefined reference to
`errno'
ext/mysql/libmysql/my_lib.lo(.text+0x5ef): In function `my_stat':
/Data/php-4.3.0/ext/mysql/libmysql/my_lib.c:588: undefined reference to
`errno'
ext/mysql/libmysql/my_malloc.lo(.text+0xde): In function `my_malloc':
/Data/php-4.3.0/ext/mysql/libmysql/my_malloc.c:24: undefined reference
to
`errno'
ext/mysql/libmysql/my_realloc.lo(.text+0xd5): In function `my_realloc':
/Data/php-4.3.0/ext/mysql/libmysql/my_realloc.c:44: undefined reference
to
`errno'
ext/mysql/libmysql/my_delete.lo(.text+0x86): In function `my_delete':
/Data/php-4.3.0/ext/mysql/libmysql/my_delete.c:16: undefined reference
to
`errno'
ext/mysql/libmysql/my_tempnam.lo(.text+0x89):/Data/php-4.3.0/ext/mysql/l
ibmy
sql/my_tempnam.c:108: more undefined references to `errno' follow
collect2: ld returned 1 exit status
make: *** [sapi/cli/php] Error 1

详细参看:

        http://bugs.php.net/bug.php?id=23283
以及:

        http://bugs.php.net/bug.php?id=23330

下载最新的 4.3.2rc3 则已解决该问题.


具体安装:

还是来自官方网站 -

        10. ./configure --with-mysql --with-apxs=/www/bin/apxs
        11. make
        12. make install

在 configure 的时候, 记得制定 php.ini 的安装目录! 否则装完我也不知道
默认的跑哪里去了, 要改配置就很麻烦. 另外, mysql 已经默认就是支持的了
所以, 可以不必显式说明, 因此, 可以写成:

        shell>./configure --prefix=/usr/local/PHP \
                --with-apxs=/usr/local/Apache/bin/apxs \
                --with-config-file-path=/usr/local/lib

然后 make, make install.

接着把 php 安装包目录下的 php.ini-recommended (这个好) 拷成为
/usr/local/lib/php.ini .这样就把 php 和 apache 以 DSO 方式装一起了.
(DSO: http://httpd.apache.org/docs/dso.html)

4. 配置 Apache:

"14. Edit your httpd.conf or srm.conf file and check that these lines are
    present and not commented out:

   AddType application/x-httpd-php .php

   LoadModule php4_module         libexec/libphp4.so
"

LoadModule 这句默认就有了. 所以不用加.

设置自己的 DocumentRoot 和访问控制.

5. 配置 php 对 mysql 的连接:

做完刚才这些步骤之后, php 默认通过 /tmp/mysql.sock 连接 mysql, 而实际上
现在这个文件是不存在的, 所以会报无法连接的错误, 应该在 php.ini 中找到

        mysql.default_socket =

改成 mysql client 真正用以连接的 sock :

        mysql.default_socket = /var/lib/mysql/mysql.sock

重启 apache 搞定.

6. phpMyAdmin 的语言用简体中文时, e 文都显示成全角的 (linux 下用
phoenix 0.5)
那是因为字体设置问题, 简体中文语言包中没有为 e 文指定字体, 所以都用了
simsun 的全角 e 文, 打开

        vi /path/to/phpMyAdmin/lang/chinese_gb.inc.php

修改:

$left_font_family = 'simsun, 宋体';
$right_font_family = 'simsun';

成为:

$left_font_family = 'verdana, arial, helvetica, geneva, sans-serif,
simsun, 宋体';
$right_font_family = 'verdana, arial, helvetica, geneva, sans-serif,
simsun';

ok 了.