A.1.2 源代码安装

现在,让我们在UNIX环境下安装Apache、PHP和MySQL。首先,必须确定到底需要安装哪一个模块。由于本书中介绍的一些例子在Web事务中都使用了安全服务器,因此我们将安装一个支持SSL(加密套接字)的服务器。

作为本书的用途,我们的PHP配置将或多或少地使用默认设置,但是也还是会包括启用PHP中gd2库的设置。

gd2只是PHP众多可供使用的库当中的一个。我们将包括它的安装步骤,这样可以知道在PHP中需要哪些额外的库来支持这些特性。大多数UNIX程序的编译都会使用相似的步骤。

通常,在安装了新库后,必须重新编译PHP,因此,如果事先知道所需要的内容,可以在机器上安装所有必需的,然后再开始编译PHP模块。

在这里,我们的安装将在SuSE Linux服务器上进行,但是这些安装操作是非常规范的,适用于其他UNIX服务器。

首先,我们必须搜集安装所需的文件。我们需要如下所示的程序:

■Apache(http://httpd.apache.org/):Web服务器。

■OpenSSL(http://www.openssl.org/):实现了加密套接字的开放源代码工具包。

■Mod_SSL(http://www.modssl.org/):提供了OpenSSL的Apache模块接口。

■MySQL(http://www.mysql.com/):关系型数据库。

■PHP(http://www.php.net/):服务器端的脚本语言。

■ftp://ftp.uu.net/graphics/jpeg/:PDFlib和gd所需的JPEG库。

http://www.libpng.org/pub/png/libpng.html:gb所需的PNG库。

http://www.zlib.net/:PNG库所需的zlib库。

http://www.libtiff.org/:PDFlib所需的TIFF库。

■ftp://ftp.cac.washington.edu/imap/:IMAP C客户端,用于IMAP。

如果希望使用mail()函数,必须安装一个MTA(邮件传输代理)。在这里,我们不介绍它。

我们假设已经拥有这台服务器的root用户访问权限,而且已经在系统中安装了如下所示的工具:

■gzip或gunzip

■gcc和GNU make文件

当准备开始安装过程时,应该首先将所有tar文件下载到一个临时目录。请确认将它们保存在一个有足够空间的位置。在我们的例子中,使用了/usr/src作为临时目录。应该以root用户下载它们,这样可以避免文件权限问题。

1.安装MySQL

在本节中,我们将介绍如何完成MySQL的二进制代码安装。这个安装过程把不同的文件自动放置在不同的目录中。我们为其他部分所选择的目录包括:

■/usr/local/apache

■/usr/local/ssl

在安装这些软件前,通过修改路径前缀,可以将这些应用程序安装在不同的目录下。

下面,就让我们开始吧。使用su命令,成为root用户。


$su root


输入root用户的密码。进入到保存源文件的目录,例如:


cd/usr/src


目前,MySQL建议人们下载MySQL的二进制代码,而不是通过编译它来进行安装。具体使用哪个版本将由所期望的功能确定。虽然MySQL的预发行版本通常也是非常稳定的,但是建议如果选择在产品站点上不使用它们。如果正在了解或调试机器,可以选择使用这些版本之一。

我们必须下载如下所示的RPM包:


MySQL-server-VERSION.i386.rpm

MySQL-Max-VERSION.i386.rpm

MySQL-client-VERSION.i386.rpm


(VERSION是版本号的占位符。对于所选择的版本,请确认选择了匹配的RPM包)。如果想在同一台机器上运行MySQL客户端和服务器,并且将MySQL编译成能够支持其他程序,例如PHP,需要以上所有RPM包。

使用如下命令安装以上所有RPM包:


rpm-i MySQL-server-VERSION.i386.rpm

rpm-i MySQL-Max-VERSION.i386.rpm

rpm-I MySQL-client-VERSION.i386.rpm


现在,MySQL服务器应该已经安装并运行起来。

接下来,可以为root用户设置密码。请确认,使用所选择的新密码替换了如下所示命令行中的"new-password";否则,"new-password"将成为root用户密码:


mysqladmin-u root password'new-password'


安装MySQL时,它将自动创建两个数据库。一个是mysql表,该表控制了服务器投入使用后的用户、主机和DB权限。另一个为测试数据库。可以通过如下所示的命令检查数据库:


mysql-u root-p

Enter password:

mysql>show databases;

+——————————+

|Database|

+——————————+

|mysql|

|test|

+——————————+

2 rows in set(0.00 sec)


输入quit或\q来退出MySQL客户端。

MySQL的默认配置允许任何用户在不提供用户名称或密码的前提下访问系统。显然,这并不是我们所希望的。

最后,完成MySQL配置所需的操作是删除匿名用户。打开一个命令提示符,输入如下所示的命令就可以完成该操作:


mysql-u root-p

mysql>use mysql

mysql>delete from user where User='';

mysql>quit


还需要执行如下命令:


mysqladmin-u root-p reload


该命令可以使这些修改生效。

还应该启用MySQL服务器的二进制登录,因为在计划使用复制功能时将需要该特性。要启用二进制登录,首先需要停止服务器的运行:


mysqladmin-u root-p shutdown


创建一个/etc/my.cnf文件并且使其作为MySQL的选项文件。这时候,只需要一个选项,但是在这里可以设置几个选项。请查阅MySQL手册,了解完整的选项列表。

打开该文件并输入:


[mysqld]

log-bin


保存该文件并退出。运行mysqld_safe命令重新启动该服务器。

2.安装PHP

仍然需要以root身份进行安装,如果不是,请重新进入root身份。

在安装PHP之前,必须对Apache进行预配置,这样它就可以知道所有软件包都在哪里(当介绍如何设置Apache服务器时,我们还要详细介绍这一点)。回到保存了源代码的目录:


cd/usr/src

gunzip-c httpd-2.2.9.tar.gz|tar xvf-

cd httpd-2.2.9

./configure—prefix=/usr/local/apache2


好了,现在可以开始设置PHP了。对源文件进行解压缩操作,进入其目录:


cd/usr/src

gunzip-c php-5.2.6.tar.gz|tar xvf-

cd php-5.2.6


这里需要再次提到的是,PHP的configure命令具有许多选项。使用./configure—help|less可以确定所希望添加的内容。在这个例子中,我们希望添加对MySQL、Apache、PDFLib和gd的支持。

请注意,如下所示的内容只是一个命令。我们可以将所有选项放在一行,或者就像我们现在这样,使用延续字符,反斜杠(\)允许我们在多行中输入一条命令,这样可以提高命令的可读性。


./configure—prefix=/your/path/to/php

—with-mysqli=/your/path/to/mysql_config\

—with-apxs2=/usr/local/apache2/bin/apxs\

—with-jpeg-dir=/path/to/jpeglib\

—with-tiff-dir=/path/to.tiffdir\

—with-zlib-dir=/path/to/zlib\

—with-imap=/path/to/imapcclient\

—with-gd


接下来,执行make命令并安装二进制代码:


make

make install


将一个INI文件复制到lib目录:


cp php.ini-dist/usr/local/lib/php.ini


或者


cp php.ini-recommended/usr/local/lib/php.ini


在以上命令中,两个版本的php.ini文件具有不同的选项集。第一个php.ini-dist是为开发用户的机器而准备的。例如,它将display_errors,选项设置为On。这个设置将使得开发过程变得更加简单,但是对于一台产品机器,这个设置却是不合适的。当我们推荐使用本书中给出的默认设置时,使用了这个版本的php.ini文件。第二个版本,php.ini-recommended是适用于产品机器的。

可以编辑这个php.ini文件来设置PHP的选项。可以选择任何想要的选项,但是除了一部分以外,其他的对我们来说都是没有意义的。如果希望通过脚本发送电子邮件,需要设置sendmail_path选项。

现在,可以设置OpenSSL。在创建临时证书和CSR文件时,我们将使用这个库。—prefix选项表示主要的安装目录。


gunzip-c openssl-0.9.8h.tar.gz|tar xvf-

cd openssl-0.9.8h

./config—prefix=/usr/local/ssl


使用如下命令执行make,测试并安装OpenSSL:


make

make test

make install


接下来,我们需要为其编译而对Apache进行配置。配置选项"——enable-so"将启用动态共享对象(DSO),而配置选项"——enable-ssl"将启用mod_ssl模块。这里强烈建议ISP或安装维护人员使用DSO最大化软件的灵活性。请注意,Apache并不是在所有平台都支持DSO。


cd../httpd-2.2.9

SSL_BASE=../openssl-0.9.8h\

./configure\

—prefix=/usr/local/apache2\

—enable-so

—enable-ssl


最后,你可以调用make文件生成Apache二进制及其证书并安装它们:


make


如果顺利完成了以上所有操作,将看到类似于如下消息:


+——————————————————————————————————-+

|Before you install the package you now should prepare the SSL|

|certificate system by running the'make certificate'command.|

|For different situations the following variants are provided:|

||

|%make certificate TYPE=dummy(dummy self-signed Snake Oil cert)|

|%make certificate TYPE=test(test cert signed by Snake Oil CA)|

|%make certificate TYPE=custom(custom cert signed by own CA)|

|%make certificate TYPE=existing(existing cert)|

|CRT=/path/to/your.crt[KEY=/path/to/your.key]|

||

|Use TYPE=dummy when you're a vendor package maintainer,|

|the TYPE=test when you're an admin but want to do tests only,|

|the TYPE=custom when you're an admin willing to run a real server|

|and TYPE=existing when you're an admin who upgrades a server.|

|(The default is TYPE=test)|

||

|Additionally add ALGO=RSA(default)or ALGO=DSA to select|

|the signature algorithm used for the generated certificate.|

||

|Use'make certificate VIEW=1'to display the generated data.|

||

|Thanks for using Apache&mod_ssl.Ralf S.Engelschall|

|rse@engelschall.com|

|www.engelschall.com|

+——————————————————————————————————-+


现在,可以创建一个自定义的证书。这个选项将提示给出证书位置、公司名称和其他信息。对于联系信息,可以使用真实数据。对于操作过程中的其他问题,可以使用默认的回答。


make certificate TYPE=custom


现在,可以安装Apache:


make install


如果所有操作都正确的话,将看到类似于如下消息:


+————————————————————————————+

|You now have successfully built and installed the|

|Apache 2.2 HTTP server.To verify that Apache actually|

|works correctly you now should first check the|

|(initially created or preserved)configuration files|

||

|/usr/local/apache2/conf/httpd.conf

||

|and then you should be able to immediately fire up|

|Apache the first time by running:|

||

|/usr/local/apache2/bin/apachectl start

||

||

|Thanks for using Apache.The Apache Group|

|http://www.apache.org/|

+————————————————————————————+


现在,可以查看Apache和PHP是否已经工作。但是,我们必须编辑httpd.conf文件,将PHP类型添加到配置文件中。