Windows 2003最终版本IIS+MySQL+PHP安装配置

2023-04-22 分类 [软件技巧]

前言

这件事情本身是受人所托修复一台机关单位的老Windows 2003服务器,重装系统然后重新搭建PHP+MySQL环境。遥想当年Windows 2003+IIS+MySQL/MS SQL Server+PHP组合可是国内建站最多的选择,但现在Windows 2003早已退役。作为对初中生活的怀念,借着修复机器的机会重新安装一下Windows 2003上的WIMP套件,探究最后一版可用于生产的版本组合,也许会对后人有益吧。
目前文章中使用的所有软件都还可以从各自官网下载到,作为备份这里也上传了一套到网盘上:https://url07.ctfile.com/d/1077207-55666874-ccdafe?p=4435(访问密码: 4435)

二、安装配置PHP-FastCGI

PHP从5.5开始不再兼容Windows NT 5.x[1],虽然有一些尝试[2]让5.5之后的5.6甚至7系列在Windows 2003上复活,但毕竟修改了官方实现,这与本文想达到的“生产服务器”稳定性要求不符,因此文章中会采用PHP 5.4系列最后一个发行版本5.4.45进行安装和配置。
由于PHP-FPM基于fork()进行开发[1],所以在Windows上并不能使用PHP-FPM。但IIS提供了FastCGI for IIS,这里会先安装PHP 5.4,然后配置FastCGI for IIS和WinCache组件。WinCache是微软推出的PHP加速器,只需要作为PHP扩展加载即可加速PHP应用,无需修改代码。
1、解压缩php-5.4.45-nts-Win32-VC9-x86.zipC:\Inetpub\PHP54,复制php.ini-productionphp.ini,之后再修改配置。 解压缩php-5.4.45 解压缩php-5.4.45 复制php.ini-production到php.ini 2、安装FastCGI 1.5 for IIS 安装FastCGI 3、打开CMD,配置FastCGI

cd %windir%\system32\inetsrv
cscript fcgiconfig.js -add -section:"PHP" -extension:php -path:"C:\Inetpub\PHP54\php-cgi.exe"

配置FastCGI 4、安装WinCache 1.3.7.12到C:\Inetpub\PHP54\ext 安装WinCache协议 解压缩到指定位置 这里使用的是wincache-1.3.7.12-dev-5.4-nts-vc9-x86.exe而不是不含dev的“正式版”。不含dev的版本后缀有wpiwincachewpi),需要Web Platform Installer支持,直接安装会提示一些环境变量的错误。实际上dev版本和wpi版本没有什么不同[4],单独使用WinCache只需要dev版本解压即可。 5、安装之后需要在php.ini中对WinCache进行配置:
首先配置PHP扩展文件夹路径,打开第721行的注释 配置PHP扩展文件夹路径 然后在合适的位置加上WinCache的配置,这里直接放在了所有扩展列表的最后

extension=php_wincache.dll ; 打开WinCache
wincache.fcenabled=1       ; 打开文件Cache
wincache.ocenabled=1       ; 打开OpCache

配置WinCache 打开CMD,验证WinCache是否正常启用

cd C:\Inetpub\PHP54
php -i

验证WinCache加载 6、至此所有PHP-FastCGI相关的软件已经安装完毕了,下面简单介绍一下php.ini中的常用配置。

upload_max_filesize = 512M ; 在Windows 2003时代应该不会有超过512M的文件上传吧
extension=php_curl.dll     ; 一些扩展
extension=php_gd2.dll
extension=php_mbstring.dll
extension=php_mysql.dll
extension=php_openssl.dll
extension=php_pdo_mysql.dll
error_log = syslog         ; 写入日志到Windows事件查看器
date.timezone = PRC        ; 设置时区
  1. 到这里就可以先写个phpinfo(),试一试PHP-FastCGI是否已经在IIS中生效了
    C:\Inetpub\wwwroot中新建i.php,写入
    <?php phpinfo();
    

    写入i.php 打开浏览器,输入http://localhost/i.php,看到phpinfo()正常输出就说明前面的配置都是成功的 测试phpinfo()

  2. 然后将i.php中的phpinfo()故意改为phpinf(),然后可以看到网页提示HTTP500 网页显示IIS默认报错 但Windows的事件查看器记录下了错误日志 事件查看器中记录详细PHP错误日志

    三、安装配置MySQL

    Oracle官方声明的最后一个Windows 2003兼容MySQL发行版是5.6.7[5]。虽然后面的安装包已经不可以在Windows 2003上运行,但经过测试后续的二进制发行包都可以正常运行,直到5.6.46版本升级了OpenSSL到1.1.1c,引入了对bcrypt.dll这一NT6才有的dll,才无法在NT5上使用。这也导致Windows 2003上的最后一个MySQL版本为5.6.45,它所使用的OpenSSL为5.6.44版本更新的1.0.2r。这里选择了MySQL 5.6.45的二进制压缩包,直接解压缩运行,通过mysqld安装为Windows服务,也是可以满足生产环境要求的。 mysqld缺少bcrypt.dll报错 1、 MySQL 5.6需要VC9运行时,这里首先安装它 安装VC9运行时 2、解压缩mysql-5.6.51-win32.zipC:\,复制my-default.inimy.ini 解压缩MySQL5.6 解压缩MySQL5.6 复制my-default.ini到my.ini 3、在my.ini中写入基本配置
    mysqld部分修改:

    [mysqld]
    basedir = C:\mysql-5.6.51-win32
    datadir = C:\mysql-5.6.51-win32\data
    port = 3306
    character_set_server = utf8
    

    添加clientmysql部分:

    [client]
    port=3306
    default-character-set=utf8
    [mysql]
    default-character-set=utf8
    

    配置my.ini 4、打开CMD,安装MySQL服务,再尝试启动

    cd C:\mysql-5.6.45\bin
    mysqld -install
    net start mysql
    

    安装MySQL服务 5、在同一个CMD中开启MySQL客户端,进行初始化配置

    mysql -uroot
    mysql> use mysql;
    mysql> update user set password=password('123456') where user='root';
    mysql> flush privileges;
    

    初始化MySQL 退出重试一下,已经不能直接登录了,需要使用-p参数密码登录 验证MySQL密码登录 至此,WIMP的安装部分已经全部完成了。

    四、应用测试

    作为互联网上使用最多的CMS,WordPress作为测试项目应该是当之无愧的。最后一个支持PHP5.4的WordPress版本是5.1[6],这点Wordpress官方倒是非常明确的指出了,5.2版本的WordPress对5.6以下的PHP版本存在JSON相关API的不兼容性。这里我们就来试着配置安装一下WordPress 5.1。
    1、为了便于使用,先对IIS进行配置,添加index.php到默认内容文档的列表中 添加index.php为默认文档 2、在MySQL中创建wordpress库作为WordPress使用的数据库

    cd C:\mysql-5.6.45\bin
    mysql -uroot -p
    mysql> create database wordpress;
    

    创建WordPress数据库 3、下载WordPress 5.1,解压到C:\Inetpub\wwwroot解压缩WordPress 解压缩WordPress 4、这里为了安装语言包和自动写入配置文件,会修改wordpress目录的权限,临时授权NETWORK SERVICE用户完全控制该目录。在生产环境中这种做法是十分危险的,文件和文件夹权限应按照WordPress官方文档[7]设置 修改wordpress目录权限 5、在浏览器中打开http://localhost/wordpress,会进入到语言选择界面,点击Continue自动下载语言包 WordPress的语言选择页面 6、进入欢迎界面,下一步 WordPress欢迎界面 7、填入服务器配置,为了简单起见,这里直接使用了root账户和之前创建的wordpress数据库 填入WordPress服务器配置 8、检查通过,开始安装 开始安装WordPress 9、安装部分结束了,填一些站点信息 填写WordPress站点信息 完成!可以访问网站了。可以看到在IE6上WordPress的默认主题已经成为纯文本了。 WordPress安装完成 IE6下的WordPress首页 在现代浏览器上看一看成果,终于正常了 Microsoft Edge下的WordPress首页 再来看一眼Windows事件,可以看到WordPress报了一些错误,PHP已经正常传递到了Windows的EventLogger,除了有一点乱码 Windows事件查看器记录的WordPress错误 顺便登陆一下wp-admin,有6个更新可用 登录WordPress管理界面 果然提示不可更新,PHP版本需要5.6.20,从5.1之后的5.2至6.2都没有改变对PHP版本的要求 WordPress已无法更新 本文到此为止。

[1] https://www.apachelounge.com/viewtopic.php?p=23273
[2] https://github.com/source-power/php7-for-windows2003
[3] https://bugs.php.net/bug.php?id=62447
[4] https://social.msdn.microsoft.com/Forums/en-US/24ddc016-67b2-46ed-b438-9a711204206d/
[5] https://downloads.mysql.com/docs/mysql-5.6-relnotes-en.pdf
[6] https://make.wordpress.org/core/handbook/references/php-compatibility-and-wordpress-versions/
[7] https://wordpress.org/documentation/article/changing-file-permissions/