概要

系统

Windows Server 2003 r2 enterprise with sp2 x86(使用 VMware workstaion 搭建的虚拟机)

软件

1
2
3
4
5
httpd-2.4.23-win32
mysql-5.5.62-win32
php-5.4.9-nts-Win32-VC9-x86
phpMyAdmin-4.4.15.10-all-languages
vcredist_x86.exe(vc 10 运行库)

先前的搭建方式都是使用的 XAMPP 之类的集成环境,十分便捷。但考虑到各种因素,决定尝试一下手动搭建并配置一次。(由于其他版本的 Windows Server 还没有进行安装和配置,故本次选择了已经安装好的 Windows Server 2003 R2 来进行演示,其他版本也是大同小异)

:本篇所涉及的软件均来源于各自的官方网站,若需为安全性考虑,建议根据官方提供的哈希值对文件进行校验。校验方法在此篇不会提及,请自行搜索。

下载

下载 Apache httpd 应用程序及 fcgi 模块

访问 https://www.apachelounge.com/download/VC10/ 下载对应系统版本的程序包即可。

Apache_Lounge_http_2423_vc10_下载页_3

Apache_fcgi模块下载.png

下载 php 应用程序

直接访问 https://windows.php.net/downloads/releases/archives/ 配合 Ctrl + F 下载 php 5.4.9 nts 版。

nts 指 None-Thread Safe,即非线程安全,详见PHP安装包TS和NTS的区别PHP 运行模式

php_版本归档

Note:从 PHP 5.5.0 开始不再支持 Windows XP/2003。

下载 MySQL 应用程序

访问 https://downloads.mysql.com/archives/community/ 直接选择需要的版本进行下载,有安装包或压缩包两种选择(安装包的配置更便捷一点),本篇是后者。

MySQL_5-5_下载页

下载 phpMyAdmin 数据库管理工具

访问 https://www.phpmyadmin.net/files/ 配合 Ctrl + F 找到自己需要的版本,本篇根据 PHP 及 MySQL 版本的兼容性,选择了 4.4.15.10 版本。

phpMyAdmin_4-4_下载页

下载 VC 10 运行库

访问 https://www.microsoft.com/en-us/download/details.aspx?id=8328,直接点击下载安装即可。

微软_vc10_运行库

安装

上传文件至服务器

将先前的文件上传至服务器的磁盘中,考虑到系统磁盘重置的可能性,可以将程序部署在其他磁盘。本篇中所使用的系统只建立了 C 盘,故不演示。

Ser2003_文件夹放置展示

配置 Apache

进入 Apache 根目录下的 conf 文件夹,编辑 httpd.conf 配置文件。

Apache_修改配置文件_0

先是修改程序的默认路径,在编辑器中按下 Ctrl+H 打开 替换 窗口,填入默认的内容和想要修改的内容后点击 全部替换 即可。(Windows 自带的记事本也是一样)

Apache_修改配置文件_1

接下来修改 Servername,使用 Ctrl+F 输入 Servername 并查找。出现 #serverName www.example.com:80,将前边的 # 删除。(Windows 自带的记事本也是一样)

Apache_修改配置文件_2

再然后是 DocumentRoot,及随后一行的 Directory 。由于先前执行了全部替换的操作,这里的路径也已经被修改。

Apache_修改配置文件_3

最后是 Require all,这一步很关键。如果忘记设置,那么访问网站一直都会是 HTTP 403 状态。

Apache_修改配置文件_5

(本段的部分设置参考了网络上的配置方法)

配置项详解

ServerRoot 程序的根目录
ServerName 主机名称
DocumentRoot 站点的根目录
Require 是否允许请求

接下来使用管理员权限打开 cmd,进入 Apache 程序目录下的 bin 文件夹,输入

1
httpd.exe -k install -n "Apache-2.4"

(-n 后面跟着的是服务名称,可以不设置,默认为 Apache2.4。安装完后可以在 services.msc 中查看并设置。)

Apache_命令行进入bin目录

最后,使用 net start Apache-2.4 启动 Apache 服务,访问 IP 地址。

Apache_配置完成

启动服务 net start 服务名称

关闭服务 net stop 服务名称

最后,根据需求设置 ServerName,配合系统的 hosts 文件可以进行本地解析。附使用效果:

Apache_Hosts解析

附表(摘自网络):

Visual Studio (Vs) 版本 Visual C++ (Vc) 版本
Visual Studio 6 vc6
Visual Studio 2003 vc7
Visual Studio 2005 vc8
Visual Studio 2008 vc9
Visual Studio 2010 vc10
Visual Studio 2012 vc11
Visual Studio 2013 vc12
Visual Studio 2015 vc14
Visual Studio 2017 vc15
Visual Studio 2019 vc16

注:vc10 之后的版本不再支持 xp / 2003 等系统。

配置 FastCGI 模块

从下载的 mod_fcgid-2.3.9-win32-x86.zip 压缩文件中提取 mod_fcgid.so 并移动到 apache\modules 目录下。

Apache安装fcgi模块

打开 conf/httpd.conf 配置文件添加 FastCGI 模块,输入如下代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
LoadModule fcgid_module modules/mod_fcgid.so
<IfModule mod_fcgid.c>
AddHandler fcgid-script .fcgi .php
#php.ini的存放目录
FcgidInitialEnv PHPRC "C:/wamp/php"
# 设置PHP_FCGI_MAX_REQUESTS大于或等于FcgidMaxRequestsPerProcess,防止php-cgi进程在处理完所有请求前退出
FcgidInitialEnv PHP_FCGI_MAX_REQUESTS 1000
#php-cgi每个进程的最大请求数
FcgidMaxRequestsPerProcess 1000
#php-cgi最大的进程数
FcgidMaxProcesses 5
#最大执行时间
FcgidIOTimeout 120
FcgidIdleTimeout 120
#php-cgi的路径
FcgidWrapper "../wamp/php/php-cgi.exe" .php
AddType application/x-httpd-php .php
</IfModule>

Apache_配置PHP_1

接下来,再重新配置一下网站根目录,根据自己的需求改写,也可以不更改。
图中标识出的 Indexes 决定了当找不到首页文件时是否允许直接显示根目录下的文件,若是处于安全考虑,不想让其显示,删除即可。(禁止目录索引并不只有这一种办法,本文末尾提供了一些可供参考的文章,详见)
ExecCGI 则是设置为以 CGI 模式运行。

Apache_配置PHP_2

设置首页文件为 index.php index.htm index.html,也可以添加其他的文件名。

1
2
3
<IfModule dir_module>
DirectoryIndex index.php index.htm index.html
</IfModule>

Apache_配置PHP_3

配置 PHP

进入 PHP 程序根目录,视情况选择 php.ini-development or php.ini-production,将其重命名为 php.ini(本篇选择的是php.ini-production)。
并用编辑器打开,Ctrl + F 查找 extension_dir 删除前面的 “;” 以取消注释,修改 “ext” 为 php/ext 的绝对目录,如 C:/wamp/php/ext

PHP_配置_1

接着,根据下图开启所需要的模块,图中的左侧有黄色底色标记。将前面的 “;” 删除即可。

PHP_配置_2

设置默认编码

PHP_配置_设置默认编码

将 PHP 添加到系统的环境变量中,下次可以在命令提示符里进行部分设置。(注意!不要省略最前端的 “;”号,除非前面已经有了一个)

1
;C:/wamp/php;C:/wamp/php/ext

PHP_系统环境变量.png

添加虚拟主机

这一步可以留在最后做。

1
2
3
4
5
6
7
8
<VirtualHost *:80>
ServerAdmin [email protected]
DocumentRoot "C:/wamp/www/future.com"
ServerName future.com
ServerAlias www.future.com
ErrorLog "logs/future.com-error.log"
CustomLog "logs/future.com-access.log" common
</VirtualHost>

Apache_配置vhost.png

配置 MySQL

1
2
3
C:\> mysqld --initialize-insecure // 初始化
C:\> mysqld -install // 安装服务
C:\> net start mysql // 启动服务

复制 my-small.ini 文件,重命名为 my.ini。打开并找到 [mysqld] 新增两行内容:

1
2
basedir=C:\wamp\mysql // MySQL 安装目录
datadir=C:\wamp\mysql\data // 数据库存储目录

MySQL_安装服务

如果服务启动失败,提示找不到文件之类的。有可能是路径问题,修复则使用 “注册表编辑器”。按下 Windows + R,输入 regedit

并依次展开 我的电脑\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MySQL,修改 ImagePath 的值为 MySQL 的正确安装目录。如:

1
"C:\wamp\mysql\bin\mysqld" MySQL

MySQL_修复路径

设置数据库密码

方法一:

1
2
3
4
C:\> mysql -u root -p
mysql> use mysql; // 设置数据库
mysql> update user set password=password('yourpassword') where user='root'; //设置密码
mysql> flush privileges; // 刷新权限

方法二:

1
C:\> mysqladmin -u root -p password yourpassword

添加环境变量

在 Path 的末尾输入 ;C:\wamp\mysql\bin

MySQL_添加环境变量

测试

数据库连接

在网站根目录下创建 index.php 文件,输入如下代码:

1
2
3
4
5
6
7
8
9
10
11
<?php
$dbhost = 'localhost'; // mysql服务器主机地址
$dbuser = 'root'; // mysql用户名
$dbpass = '2020'; // mysql用户名密码
$conn = mysqli_connect($dbhost, $dbuser, $dbpass);
if(! $conn ) {
die('Could not connect: ' . mysqli_error());
}
echo '数据库连接成功!';
mysqli_close($conn);
?>

摘自 (runoob.com

数据库连接

卸载

Apache

1
C:\wamp\apache\bin> httpd.exe -k uninstall -n "Apache-2.4"

MySQL

1
2
C:\> net stop mysql // 停止服务
C:\> mysqld -remove mysql // 卸载

之后删除环境变量及数据文件夹。

附录

遇到的问题

  1. 将文件路径 C:/wamp/... 写为 C:\wamp\...
  2. Apache-2.4 服务无法启动。 - 发生服务特定错误: 1。
  3. 页面文字乱码。

解决方法

问题二出现的原因往往很可能是因为问题一,将 / 写成了 \,建议在复制语句到配置文件后仔细检查一下。
如果出现了本篇没有涉及到的问题,可以试着用时间查看器配合 Apache 的错误日志来排错。

事件查看器:
事件查看器排错

Apache 错误日志:
Apache_错误日志排错

默认的页面编码可以在 php.ini 中设置,也可以使用 header() 来单独设置页面的编码方式。

1
header("Content-type: text/html; charset=utf-8");

又或者,插入 HTML 中的 <META> 标签。

1
<meta charset="utf-8">

参考文章

Apache2.4 的安装与配置

Require all denied

Windows下Apache以FastCGI模式运行PHP

Apache 基线核查

禁止apache显示目录索引的常见方法(apache禁止列目录)

MySQL 5.7 解压版 安装教程