Wednesday, April 25, 2007

Ubuntu 6.10 Edgy 下 Apache+PHP+MySQL+GD+MagickWand 的安装与配置

Author: MDZ(梅拯拯) Date: 2007-04-25

以前我安装 Apache+PHP+MySQL 都是来源于 Linux 软件库,安装起来非常方便:

$ sudo apt-get install apache2 mysql-server-5.0 php5 php5-common

等等,就可以使用了,根本不需要配置什么东西。不过现在遇到了 MagickWand,想轻松点都不行了。算了,自己重新安装配置 Apache + PHP 吧。


首先按照 http://www.supsite.net 上的一篇“Linux 下安装最新 Apache2.0.52 + PHP5 + GD2 + MySQL 等”文章所指示的下载下列软件包:

1. httpd-2.0.59.tar.bz2 (httpd-2.2.4.tar.bz2 应该也可以吧,我不敢下,因为在 Windows 下它与 PHP5 配合有问题)
2. php-5.2.1.tar.bz2
3. MySQL (我懒得下载和编译了,它又是那么庞大~~)
4. freetype-2.3.4.tar.gz (FreeType2 字体支持)
5. gd-2.0.34.tar.bz2 (GD2 库,不支持 gif。我用不到 gif,有需要的朋友可以下载非官方的支持 gif 的 gd2 库)
6. jpegsrc.v6b.tar.gz (JPEG 图像支持)
7. libpng-1.2.16.tar.gz (PNG 图像支持)
8. libxml2-2.6.28.tar.gz (XML 支持)
9. zlib-1.2.3.tar.gz (Zlib 库,许多东东都用得到它)
10. ImageMagick-6.3.3-10.tar.bz2 (ImageMagick,MagickWand 需要)
11. MagickWandForPHP-1.0.4.tar.bz2 (MagickWand 本身)
12. ZendOptimizer-3.2.6-linux-glibc21-i386.tar.gz (PHP 加速器,可要可不要)

另外要保证 gcc、lex/flex、yacc/bison 安装好并正常运行,编译过程中用得到它们。Linux 下一般安装的是 flex 和 bison,因为它们是自由的。

==========================

第一步、安装 MySQL

MySQL 相对独立,没有像 Apache 和 PHP 关联度那么密切,所以先安装它,在 Ubuntu 下很简单:

$ sudo apt-get install mysql-server-5.0

[Update]
再加入下句,否则配置 PHP 的过程中会提示找不到该有的 MySQL 头文件:
$ sudo apt-get install libmysqlclient15-dev

[/Update]


就可以安装上去了。在终端中可以使用

$ mysql -u root

测试是否能进入 MySQL 的交互式终端:"mysql>",可以的话,说明已经安装好并运行了。
启动和停止 MySQL 服务器可以使用下面的命令:

$ sudo /etc/init.d/mysql start # 启动 mysql
$ sudo /etc/init.d/mysql stop # 停止 mysql
$ sudo /etc/init.d/mysql restart # 重启 mysql

注意,Ubuntu 的 apt 源中的 MySQL 安装不是常规的,它把文件拆放在不同的目录下面。/usr/lib/mysql 目录下存放着 MySQL 的模块文件,我们待会儿用得着。

[Update]
MySQL 的手动安装(参考:http://www.itlearner.com/article/2006/3540.shtml):

1. 下载自带 glibc23 库的版本,如 mysql-standard-5.0.27-linux-i686-glibc23.tar.gz
2. 直接解压到 /usr/local/mysql
3. 使用以下命令建立“mysql”用户和组:
$ sudo groupadd mysql
$ sudo useradd mysql -g mysql
4. 进入 MySQL 目录:
$ cd /usr/local/mysql
5. 设置权限:
$ sudo chown -R root . # 设定root能访问/usr/local/mysql
$ sudo chown -R mysql data # 设定mysql用户能访问/usr/local/mysql/data ,里面存的是mysql的数据库文件
$ sudo chown -R mysql data/. # 设定mysql用户能访问/usr/local/mysql/data下的所有文件
$ sudo chown -R mysql data/mysql/. # 设定mysql用户能访问/usr/local/mysql/data/mysql下的所有文件
$ sudo chgrp -R mysql . # 设定mysql组能够访问/usr/local/mysql
6. 运行mysql:
$ sudo /usr/local/mysql/bin/mysqld_safe --user=mysql &

[/Update]


==========================

第二步、安装杂项软件和库文件

1. libxml
$ tar -zxvf libxml2-2.6.28.tar.gz
$ cd libxml2-2.6.28
$ sudo ./configure
$ sudo make
$ sudo make install

2. zlib
$ tar -zxvf zlib-1.2.3.tar.gz
$ cd zlib-1.2.3
$ sudo ./configure --prefix=/usr/local/zlib2
$ sudo make
$ sudo make install

3. jpeg
$ tar -zxvf jpegsrc.v6b.tar.gz
$ cd jpeg-6b
$ sudo ./configure --prefix=/usr/local/jpeg6
$ sudo make
建立相关目录,再安装:
$ sudo mkdir /usr/local/jpeg6
$ sudo mkdir /usr/local/jpeg6/include
$ sudo mkdir /usr/local/jpeg6/lib
$ sudo make install-lib
$ sudo make install

[Update]
如果还有错误提示,则再建立一下目录:
$ sudo /usr/local/jpeg6/bin
$ sudo /usr/local/jpeg6/man
$ sudo /usr/local/jpeg6/man1
[/Update]


4. libpng
$ tar -zxvf libpng-1.2.16.tar.gz
$ cd libpng-1.2.16
$ sudo ./configure --prefix=/usr/local/libpng2
$ sudo make
$ sudo make install

5. freetype
$ tar -zxvf freetype-2.3.4.tar.gz
$ cd freetype-2.3.4
$ sudo ./configure --prefix=/usr/local/freetype2
$ sudo make
$ sudo make install

6. gd-lib
$ tar -jxvf gd-2.0.34.tar.bz2
$ cd gd-2.0.34
$ sudo ./configure --prefix=/usr/local/gd2 --with-zlib=/usr/local/zlib2/ --with-png=/usr/local/libpng2/ --with-jpeg=/usr/local/jpeg6/ --with-freetype=/usr/local/freetype2
$ sudo make
$ sudo make install

==========================

第三步、安装 Apache

$ tar -jxvf httpd-2.0.59.tar.bz2
$ cd httpd-2.0.59
$ sudo ./configure --prefix=/usr/local/apache2 --enable-module=so
$ sudo make
$ sudo make install

==========================

第四步、第一次编译安装 PHP,释放出软件 phpize

$ tar -jxvf php-5.2.1.tar.bz2
$ cd php-5.2.1
$ sudo ./configure
$ sudo make

[Update]
$ sudo make install (之前落掉这一句了,抱歉)
$ sudo make clean (这句比较关键,不然再次编译后启动 Apache 时会说找不到 php5 模块)

[/Update]


==========================

第五步、安装 ImageMagick 和 MagickWand

1. 先安装 ImageMagick,参考文章“安装 ImageMagick 小记”:
$ tar -jxvf ImageMagick-6.3.3-10.tar.bz2
$ cd ImageMagick-6.3.3-10
$ sudo ./configure --enable-shared --enable-lzw --with-modules --prefix=/usr/local/ImageMagick
$ sudo make
$ sudo make install
其中 --enable-lzw 是打开 lzw 压缩开关

2. 安装 MagickWand for PHP
$ tar -jxvf MagickWandForPHP-1.0.4.tar.bz2
$ cp -r MagickWandForPHP-1.0.4 {PHP_SRC_DIR}/ext/magickwand
这里 {PHP_SRC_DIR} 指的是你存放 php 源代码的目录。

$ cd {PHP_SRC_DIR}/ext/magickwand/
$ phpize

==========================

第六步、重新编译安装 PHP,加入 magickwand 模块、联接 Apache、MySQL 等

$ cd {PHP_SRC_DIR}
$ rm -rf ./configure # 删除 configure 配置文件,也可以改名以防万一
$ ./buildconf --force # 重新生成 configure 配置文件,现在文件中已经有 magickwand 的“指标”了

重新配置 php:
$ sudo ./configure \
--prefix=/usr/local/php \ # 安装路径
--with-apxs2=/usr/local/apache2/bin/apxs \ # 指定 Apache
--with-jpeg-dir=/usr/local/jpeg6/ \ # JPEG 支持
--with-png-dir=/usr/local/libpng2/ \ # PNG 支持
--with-gd=/usr/local/gd2/ \ # GD 库支持
--with-freetype-dir=/usr/local/freetype2/ \ # FreeType2 字体支持
--enable-trace-vars \
--with-zlib-dir=/usr/local/zlib2/ \ # Zlib 库支持
--with-mysql=/usr/lib/mysql \ # MySQL 支持
--with-magickwand=/usr/local/ImageMagick # MagickWand 支持

编译和安装:
$ sudo make
$ sudo make install

拷贝配置文件:
$ sudo cp php.ini-dist /usr/local/php/lib/php.ini

==========================

第七步、配置服务器,使它能够解析运行 PHP 文件

$ sudo zile /usr/local/apache2/conf/httpd.conf # 我比较喜欢 zile 编辑器,可以选用其它的。

按照以下提示的修改:

1. 在
#AddType application/x-tar .tgz
下面加一行
AddType application/x-httpd-php .php

2. 如果看见
# LoadModule php5_module modules/libphp5.so
则去掉 “#” 号。如果没 “#” 号,那再好不过了。

3. 找到
DirectoryIndex index.html index.html.var
行,在后面添加 “index.php”,表示服务器按次序把上面的列表作为默认页

4. 找到
# don't use Group #-1 on these systems!
把它下面的用户名和组改为
User apache
Group apache


5. 找到
# ServerName
把 “#”去掉,后面的 IP 改成自己的 IP

6. 找到
DocumentRoot "/usr/local/apache2/htdocs"
把路径改为自己存放网页文件的路径

保存 httpd.conf 文件。

启动或停止 apache 可以参考下列命令:
$ sudo /usr/local/apache2/bin/apachectl start # 运行 apache
$ sudo /usr/local/apache2/bin/apachectl stop # 停止 apache
$ sudo /usr/local/apache2/bin/apachectl restart # 重启 apache

[Update]
如果运行上述的命令出现“httpd: bad user name apache”错误的话,表示系统中无 “apache”组和 “apache”用户名。用下列语句添加:
$ groupadd apache (添加“apache”组)
$ useradd apache -g apache (添加“apache”组下的用户“apache”)

[/Update]


==========================

现在启动 Apache 和 MySQL 服务器应该可以解析运行 PHP 和让 PHP 联接 MySQL 数据库了。并且拥有了使用 GD2 和 MagickWand 的权利!

最后,可以使用 ZendOptimizer 加速 PHP 速度,安装有提示的,不说了!

Enjoy PHPing!

No comments: