Windows下Apache相关安装指南

本文介绍了在Windows下安装Apache、PHP、mod_perl、mod_python、subversion的方法。

  • 所需安装文件
  • 安装 Apache 2.0.59
    • 安装后的说明
    • 修改默认配置
    • 常见错误及修正方法
    • 为什么不使用最新版的 Apache 2.2.3
  • 安装 php 5.1.6
    • PHP各个目录的作用
    • 添加 mysql 支持
  • 安装 ActivePerl 5.8.8
  • 安装 mod_perl 2.0.2
    • 测试CGI脚本的执行
    • 测试 mod_perl Apache Handler 的执行
  • 安装 python 2.3.5
    • 为什么不使用 python 2.4 或 python 2.5 版本
  • 安装 mod_python
  • 安装 subversion

所需安装文件

  • Apache 2.0.59:下载 Apache HTTP Server 2.0.59 Win32 Binary (MSI Installer)
  • php 5.1.6:下载 Windows Binaries - php 5.1.6 zip package
  • ActivePerl 5.8.8:下载 ActivePerl 5.8.8.817 Windows MSI
  • mod_perl 2.0.2:通过 ppm 安装,无须事先下载
  • Python 2.3.5:下载Python 2.3.5
  • mod_python:下载mod_python 3.2.10,注意要下载 mod_python-3.2.10.win32-py2.3-apache2.0.exe 文件。
  • subversion:下载 subversion 1.3.2,建议下载 zip 版 svn-win32-1.3.2.zip。

另外,为了在安装失败时查找原因,最好事先准备好 Dependency Walker 这个工具。该工具可以查看程序运行所必需的 .dll 文件。如果你已经安装了 Microsoft Visual C++ 6.0,那么其中已经包含了该工具,就不必再重新下载了。

安装 Apache 2.0.59

双击 apache_2.0.59-win32-x86-no_ssl.msi 文件开始安装。安装过程很简单,一路Next即可。途中要求输入服务器的域名、服务器名及管理员信箱,输入相应的正确信息。如果仅仅是安装在本地用于测试,则可按照下图所示输入。

安装成功之后打开浏览器,在地址栏中输入 http://localhost/。如果你能看到 Apache 的欢迎页面以及 Apache 的红羽毛的图标,则说明安装成功。否则请参考下面的说明查找失败原因。

安装后的说明

默认安装路径为 C:\Program Files\Apache Group\Apache2。安装程序会建立一个名为 Apache2 的系统服务并自动启动它,可以通过右键单击我的电脑->管理->服务确认其存在,如下图。

另外,安装结束后系统托盘中会多出一个 Apache 的控制图标(如下图),可以通过它来控制 Apache 的启动与停止。如果你想通过系统服务来控制 Apache 的话,可以从开始菜单->程序->启动中删除Monitor Apache Servers 项,下次启动计算机时就不会启动该图标。

Apache的安装目录结构如下图:

其中各个目录的含义如下。

  • bin - Apache的程序文件和库文件(.dll)。
  • cgi-bin - 网站的脚本的保存位置。
  • conf - 配置文件。
  • error - 各种错误页面。
  • htdocs - 网站的内容。
  • icons - Apache生成文件列表时使用的各种图标。
  • include - 程序开发时使用的头文件。
  • lib - 程序开发时使用的静态库文件。
  • logs - 服务器访问日志和错误日志。
  • manual - 使用手册。
  • modules - 扩展模块,其下有许多扩展名为 .so 的文件,实质上都是Windows .dll文件。
  • proxy - 使用Apache作代理时的缓存目录。

修改默认配置

默认情况下网站内容位于 Apache2/htdocs 下,而实际应用中很少讲网站内容和服务器程序放在一起。因此我们要做的第一步就是修改网站内容的位置。

我们假设网站的静态内容位于 D:\wwwroot\htdocs 下,而脚本程序位于 D:\wwwroot\cgi-bin 下。那么首先要建立这两个目录。

之后打开 httpd.conf 文件,找到这一行:

DocumentRoot "C:/Program Files/Apache Group/Apache2/htdocs"

将其修改成:

DocumentRoot "D:/wwwroot/htdocs"

然后找到这样的内容(各行之间可能夹杂着注释):


    Options Indexes FollowSymLinks
    AllowOverride None
    Order allow,deny
    Allow from all

这一段是定义网站主目录的权限。我们应当修改主目录的位置。另外,Indexes 权限表示当某个目录下不存在 index.html 文件时,显示该目录的文件列表。实际应用中这会造成安全漏洞,应当将其删除。修改之后的内容如下:


    Options FollowSymLinks
    AllowOverride None
    Order allow,deny
    Allow from all

然后找到这一行:

ScriptAlias /cgi-bin/ "C:/Program Files/Apache Group/Apache2/cgi-bin/"

将其修改为:

ScriptAlias /cgi-bin/ "D:/wwwroot/cgi-bin/"

再找到这样的内容:


    AllowOverride None
    Options None
    Order allow,deny
    Allow from all

将其修改为:


    AllowOverride None
    Options None
    Order allow,deny
    Allow from all

这样配置文件修改完毕。在系统服务中选择 Apache2 服务单击“重新启动服务”按钮,或者在系统托盘的Apache图标中选择Restart,或者通过命令行输入以下命令来重新启动 Apache。

C:\> net stop apache2
C:\> net start apache2

如果配置文件修改无误,则应当正常重新启动。之后打开浏览器输入 http://localhost/,你应当看到一条“Forbidden”的错误信息。然后建立 D:\wwwroot\htdocs\index.html 文件,内容随意。再次用浏览器打开 http://localhost/,应当能看到建立的 index.html 文件的内容。

为了以后安装其他模块,我们应当修改系统变量 PATH 以便其他模块能够找到 Apache 的程序库。在控制面板->系统->高级->环境变量对话框中,编辑系统变量中的 Path,在其最前面添加以下内容:

C:\Program Files\Apache Group\Apache2\bin;

修改之后,继续安装下面的模块之前,建议重新启动计算机以避免不必要的错误。

常见错误及修正方法

为什么不使用最新版的 Apache 2.2.3

Apache 2.0.x 版本的 Windows 版使用 Visual C++ 6.0 编译,而 Apache 2.2.x 版本的 Windows版使用 Visual Studio .NET 编译。由于编译器不同,导致使用的程序库也不同,因此 Apache 2.0.x 和 Apache 2.2.x 不能兼容。目前,许多 Apache 的功能扩展模块仅能工作于 Apache 2.0.x 下,包括 php、subversion 等。要想使用这些功能,就必须要安装 Apache 2.0.x 版。

当然,这仅限于 Windows 版。其他操作系统上的 Apache 不受此限。

安装 php 5.1.6

php的安装相对较简单。为了管理方便,我们将 php 与 Apache 放在一起。

首先将 php-5.1.6-Win32.zip 解压到 C:\Program Files\Apache Group\Apache2\php5 目录下。

php5中的 Apache2 模块为 php5apache2.dll(注意不是 php5apache.dll,那个是 Apache 1.3.x 的模块)。修改 Apache2/conf 目录下的 httpd.conf 以加载 php5 模块。查找 LoadModule,然后在其附近添加以下内容以加载php5模块,并设置 php.ini 的位置。

LoadModule php5_module php5/php5apache2.dll
PHPIniDir php5

然后查找AddType,在其附近添加以下内容,以增加 php 的类型。

AddType application/x-httpd-php .php

再查找DirectoryIndex命令,将其修改为以下内容,增加目录的默认文档 index.php。

DirectoryIndex index.html index.html.var index.htm index.php

然后进入 php5 目录,复制 php.ini-dist 文件为 php.ini。然后修改 php.ini,查找 extension_dir,该变量指定了 php 功能模块的位置。将其修改为以下的内容。

extension_dir = "./php5/ext"

注意,这个路径是从 Apache2 下开始算起,而不是从 Apache2/php5 下开始。

查找 session.save_path,这个变量指定session的保存位置。将其前面的分号去掉,然后修改该行为以下内容:

session.save_path = "C:\Program Files\Apache Group\Apache2\tmp"

然后在 Apache2 目录下建立 tmp 目录,作为session的保存目录。

最后重新启动 Apache 服务器(方法参考 Apache 安装一节)。为测试 php 是否安装成功,在文档目录 D:\wwwroot\htdocs 下建立 phpinfo.php 文件,内容如下:

然后打开浏览器,访问 http://localhost/phpinfo.php 。如果能看到 php 的信息页,即表明php安装成功。

PHP各个目录的作用

  • dev - 开发用 php 静态库。
  • ext - php扩展模块。
  • extras - 相关文件。
  • PEAR - 访问php模块网站 PEAR 的必要文件。

另外,php目录下的部分文件功能如下。

  • php.exe - php的命令行解释程序,也可用作 CGI 解释器。
  • php5apache2.dll - Apache 2.0的PHP模块。
  • php5apache.dll - Apache 1.3的PHP模块。
  • php5isapi.dll - Microsoft IIS的PHP模块。
  • php5nsapi.dll - Netscape Server的PHP模块。
  • php5ts.dll - PHP及其扩展模所需的库文件。

添加 mysql 支持

php4之前的版本自带mysql,而在php5中,mysql不再默认支持。为了使php5支持mysql,我们需要稍稍修改一下设置。

打开 php5/php.ini 文件,查找下面这一行,并将其前面的注释符号分号 ; 去掉。

extension=php_mysql.dll

但是这样还不能使用mysql功能,因为 php_mysql.dll 需要 php5 目录下的 php5ts.dll 和 libmysql.dll (可以使用 Dependency Walker 打开 php_mysql.dll 查看),但是这两个 DLL 文件既不与 php_mysql.dll 位于同一目录下,也没有和可执行文件Apache.exe 位于同一目录下,因此 php_mysql.dll 找不到这两个DLL,不能启动。解决方法就是将 php5ts.dll 和 libmysql.dll 复制到 Apache2/bin 下,然后重新启动 Apache2。

使用浏览器打开前面的 phpinfo.php 页面,可以看到页面输出的中部有 mysql 模块的配置,说明 mysql 模块已经正常安装。

安装 ActivePerl 5.8.8

ActivePerl是Perl的一个Win32移植版。安装方法很简单,运行 ActivePerl-5.8.8.817-MSWin32-x86-257965.msi ,即出现安装界面,一路 Next 即可。默认情况下安装到 C:\Perl 下。注意在选择功能时务必选择 PPM 3.0,该程序能够很方便地安装各种Perl模块。

下一步需要在系统环境变量中增加 Perl 所在的位置。如果你在安装Perl时选择了 Add Perl to the PATH enviroment variable,则可以省略这一步。否则打开控制面板->系统->高级->环境变量,修改系统变量中的 Path,在其最前面增加以下内容:

C:\Perl\bin;

修改环境变量后,在安装 mod_perl 之前,最好能重新启动计算机。

安装 mod_perl 2.0.2

mod_perl是Apache的Perl扩展模块。它模拟了一个Perl的CGI执行环境,以便在Apache中执行Perl脚本。但是mod_perl要比真正的Perl CGI的性能高上百倍。

Apache 2.0.x 系列对应的 mod_perl 第二版,mod_perl目前最新版本是 2.0.2。可以使用Perl包管理工具 ppm 进行安装。

首先启动命令行提示符(开始->运行->输入cmd,OK),然后输入 ppm,即可启动 ppm。如果启动失败,看看是否在安装 ActivePerl 的时候忘记添加 Path 环境变量了。下面以 ppm> 开头的行为输入的命令,其他行为输出结果。 # 符号后面为注释。

# 添加repository。repository为存放Perl模块的网站。
ppm> repos add "uwinnipeg Perl 5.8 repository" http://theoryx5.uwinnipeg.ca/cgi-bin/ppmserver?urn:/PPMServer58
Repositories:
[1] ActiveState Package Repository
[2] uwinnipeg Perl 5.8 repository

# 搜索 mod_perl 模块
ppm> search mod_perl
Searching in Active Repositories
  1. Apache-mod_perl_guide        [1.31] Apache-mod_perl_guide
  2. mod_perl                    [2.0.2] Embed a Perl interpreter in the Apache/2.0 HTTP server
  3. mod_perl-1            [1.29_01-dev] Embed a Perl interpreter in the Apache/1.3.27 HTTP server
  4. mod_perl-2.2            [2.0.3-dev] Embed a Perl interpreter in the Apache/2.2 HTTP server
  5. mod_perl-eapi-1       [1.29_01-dev] Embed a Perl interpreter in the Apache/1.3.27 HTTP server (with EAPI support)

# 搜索结果中第2项为我们要安装的 mod_perl 2.0.2,使用install命令进行安装
ppm> install 2
Package 2:
====================
Install 'mod_perl' version 2.0.2 in ActivePerl 5.8.8.817.
====================
Downloaded 948125 bytes.
......

# 安装途中会询问 Apache 的模块安装位置,输入 C:\Program Files\Apache Group\Apache2\modules
Fetching http://theoryx5.uwinnipeg.ca/ppms/x86/mod_perl.so ...  done!
Where should mod_perl.so be placed? [D:/Apache2/modules] C:\Program Files\Apache Group\Apache2\modules   # 输入路径
......
Successfully installed mod_perl version 2.0.2 in ActivePerl 5.8.8.817.
# 退出 ppm
ppm> exit

安装完毕之后,我们可以在 Apache2/modules 目录下发现刚刚安装的 mod_perl.so 文件。下面我们要将此文件加载到 Apache 中。

打开 Apache2/conf 目录下的 httpd.conf文件,查找 LoadModule,在其附近添加以下内容:

#LoadFile "C:/Perl/bin/perl58.dll"    # 如果你没有在环境变量path中添加 C:\Perl\bin 则需要这一行
LoadModule perl_module modules/mod_perl.so

# 添加mod_perl配置内容,并利用其处理 cgi-bin 下的脚本文件

    SetHandler perl-script
    PerlResponseHandler ModPerl::Registry
    PerlOptions +ParseHeaders
    Options +ExecCGI
    AllowOverride None
    Order allow,deny
    Allow from all

修改完成之后重新启动 Apache,mod_perl 即安装成功。你可以在系统服务中看到 Apache2 服务的描述中多了 mod_perl/2.0.2 Perl/v5.8.8 的字样。

测试CGI脚本的执行

上面我们已经设置 cgi-bin 目录下的所有程序都使用 mod_perl 进行处理。这里我们执行一个脚本以确认其是否正常。

在 D:/wwwroot/cgi-bin 目录下建立 hello.cgi 文件,内容如下。 (实际上,该文件可以是任意扩展名,我们在Apache配置中用 Directory 指令指定 cgi-bin 目录,因此 cgi-bin 下所有的文件都将被 mod_perl 处理。)

# hello.cgi
print "Contennt-Type: text/html\n\n";
print "Hello, world! This is a CGI.";

保存之后在浏览器中输入 http://localhost/cgi-bin/hello.cgi ,如能得到下面的结果则说明 mod_perl 工作正常。

Hello, world! This is a CGI.

如果显示 Internal Server Error,可参考 logs/httpd-error.log 文件中的错误信息。

测试 mod_perl Apache Handler 的执行

mod_perl 的另一种执行方法就是编写 Apache Handler。Apache Handler 是一个Perl模块,在 Apache 启动时读入并常驻内存,用来处理Web请求。

在 D:/wwwroot 下建立 lib 目录,用于保存 Perl 模块。我们将建立 HelloWorld::Hello 模块,内容为显示 “Hello, world”。为建立这个模块,我们需要进行以下的工作。

  • 建立模块本身
  • 将模块的位置放到 @INC 变量中以便 mod_perl 能找到我们建立的模块
  • 修改 httpd.conf,设置使用该模块的位置

在 lib 下建立 HelloWorld 目录,并在 HelloWorld 目录下建立 Hello.pm 文件,其内容如下。

package HelloWorld::Hello;

use strict;
use warnings;
use Apache2::RequestRec ();
use Apache2::RequestIO ();
use Apache2::Const -compile => qw(OK);

sub handler {
    my $r = shift;
    $r->content_type('text/plain');
    print "Hello, world! This is an Apache Handler.\n";
    return Apache2::Const::OK;
}
1;

书写Perl模块时注意不要忘记最后的 1; ,如果没有的话 mod_perl 会出错。(该文件的完整路径为 D:\wwwroot\lib\HelloWorld\Hello.pm,不要弄错了。)

然后我们需要将 HelloWorld::Hello 模块的位置告诉 mod_perl。在 D:\wwwroot\lib 下建立 startup.pl 文件,内容如下:

use lib qw(D:/wwwroot/lib);
1;

然后修改 httpd.conf,加入下面的设置。

PerlRequire "D:/wwwroot/lib/startup.pl"

现在这个模块已经可以使用了。我们只需告诉 Apache 在什么情况下使用该模块。修改 httpd.conf,加入下面的设置。


    SetHandler perl-script
    PerlResponseHandler HelloWorld::Hello

最后重新启动 Apache。在浏览器中打开 http://localhost/hello,应当能看到下面的文字:

Hello, world! This is an Apache Handler.

安装 python 2.3.5

双击 Python-2.3.5.exe 进行安装。默认的安装目录为 C:\Python23。

为什么不使用 python 2.4 或 python 2.5 版本

安装 mod_python

双击 mod_python-3.2.10.win32-py2.3-apache2.0.exe 进行安装。安装程序会检测 Python 和 Apache 的安装路径,并将 mod_python.so 安装至 Apache2/modules 目录下。

打开 Apache2/conf/httpd.conf,查找 LoadModule,并在其附近添加以下内容。

LoadModule python_module modules/mod_python.so

最后重新启动 Apache2。

安装 subversion

subversion是一个优秀的版本控制系统,它能够完整地记录软件开发过程中源代码的变动,并可以随时将源代码恢复到以前的任意版本。subversion的服务器可以单独使用,也可以作为 Apache 的模块,通过 WebDAV 协议使用。

在 subversion 的下载页面上,你会看到关于 Windows 版的说明,简单来讲就是 subversion 没有 Python 2.4 binding,也就是说,使用 Python 2.4 不能对 subversion 进行编程,这也是我们不使用 Python 2.4 的一个原因。

将 svn-win32-1.3.2.zip 解压到 C:\svn 下。由于 svn 的 Apache2 模块需要 C:\svn\bin 下的 intl3_svn.dll 和 libdb43.dll 文件,所以要在环境变量 Path 中增加下面的内容,并重新启动计算机。

C:\svn\bin;

将 C:\svn\bin 下的 mod_dav_svn.so 文件复制到 Apache2/modules 目录下。

打开 Apache2/conf/httpd.conf 文件,然后查找下面这一行,去掉其前面的注释符号 # 。

LoadModule dav_module modules/mod_dav.so

查找 LoadModule,并在其附近添加以下内容。

LoadModule dav_svn_module modules/mod_dav_svn.so

最后重新启动 Apache2。

你可能感兴趣的:(Windows下Apache相关安装指南)