Windows 2003最终版本IIS+MySQL+PHP安装配置
前言
这件事情本身是受人所托修复一台机关单位的老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.zip
到C:\Inetpub\PHP54
,复制php.ini-production
到php.ini
,之后再修改配置。
2、安装FastCGI 1.5 for IIS
3、打开CMD,配置FastCGI
cd %windir%\system32\inetsrv
cscript fcgiconfig.js -add -section:"PHP" -extension:php -path:"C:\Inetpub\PHP54\php-cgi.exe"
4、安装WinCache 1.3.7.12到C:\Inetpub\PHP54\ext
这里使用的是wincache-1.3.7.12-dev-5.4-nts-vc9-x86.exe
而不是不含dev
的“正式版”。不含dev
的版本后缀有wpi
(wincachewpi
),需要Web Platform Installer支持,直接安装会提示一些环境变量的错误。实际上dev
版本和wpi
版本没有什么不同[4],单独使用WinCache只需要dev
版本解压即可。
5、安装之后需要在php.ini
中对WinCache进行配置:
首先配置PHP扩展文件夹路径,打开第721行的注释
然后在合适的位置加上WinCache的配置,这里直接放在了所有扩展列表的最后
extension=php_wincache.dll ; 打开WinCache
wincache.fcenabled=1 ; 打开文件Cache
wincache.ocenabled=1 ; 打开OpCache
打开CMD,验证WinCache是否正常启用
cd C:\Inetpub\PHP54
php -i
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 ; 设置时区
- 到这里就可以先写个
phpinfo()
,试一试PHP-FastCGI是否已经在IIS中生效了
在C:\Inetpub\wwwroot
中新建i.php
,写入<?php phpinfo();
打开浏览器,输入
http://localhost/i.php
,看到phpinfo()
正常输出就说明前面的配置都是成功的 - 然后将
i.php
中的phpinfo()
故意改为phpinf()
,然后可以看到网页提示HTTP500 但Windows的事件查看器记录下了错误日志三、安装配置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服务,也是可以满足生产环境要求的。 1、 MySQL 5.6需要VC9运行时,这里首先安装它 2、解压缩mysql-5.6.51-win32.zip
到C:\
,复制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
添加
client
和mysql
部分:[client] port=3306 default-character-set=utf8 [mysql] default-character-set=utf8
4、打开CMD,安装MySQL服务,再尝试启动
cd C:\mysql-5.6.45\bin mysqld -install net start mysql
5、在同一个CMD中开启MySQL客户端,进行初始化配置
mysql -uroot mysql> use mysql; mysql> update user set password=password('123456') where user='root'; mysql> flush privileges;
退出重试一下,已经不能直接登录了,需要使用
-p
参数密码登录 至此,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
到默认内容文档的列表中 2、在MySQL中创建wordpress
库作为WordPress使用的数据库cd C:\mysql-5.6.45\bin mysql -uroot -p mysql> create database wordpress;
3、下载WordPress 5.1,解压到
C:\Inetpub\wwwroot
中 4、这里为了安装语言包和自动写入配置文件,会修改wordpress
目录的权限,临时授权NETWORK SERVICE
用户完全控制该目录。在生产环境中这种做法是十分危险的,文件和文件夹权限应按照WordPress官方文档[7]设置 5、在浏览器中打开http://localhost/wordpress,会进入到语言选择界面,点击Continue
自动下载语言包 6、进入欢迎界面,下一步 7、填入服务器配置,为了简单起见,这里直接使用了root
账户和之前创建的wordpress
数据库 8、检查通过,开始安装 9、安装部分结束了,填一些站点信息 完成!可以访问网站了。可以看到在IE6上WordPress的默认主题已经成为纯文本了。 在现代浏览器上看一看成果,终于正常了 再来看一眼Windows事件,可以看到WordPress报了一些错误,PHP已经正常传递到了Windows的EventLogger,除了有一点乱码 顺便登陆一下wp-admin
,有6个更新可用 果然提示不可更新,PHP版本需要5.6.20,从5.1之后的5.2至6.2都没有改变对PHP版本的要求 本文到此为止。
[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/