1.1 Windows下PHP+MySQL+IIS安全实验平台的搭建
MySQL是流行的关系型数据库管理系统之一。关系型数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,从而提高了速度和灵活性。在 Web 应用方面,MySQL 是最好的RDBMS(Relational Database Management System,关系型数据库管理系统)应用软件之一。MySQL所使用的 SQL 语言是访问数据库时最常用的标准化语言。MySQL 软件采用双授权政策,分为社区版和商业版,体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,使 MySQL 成为大部分中小型网站的首选数据库软件。
目前,很多企业和个人都架设了属于自己的服务器。服务器市场分为多个体系,主要有Windows平台、Linux平台,其他平台以BSD为主。下面介绍一下各平台的优点和缺点。
· Windows 平台的优点是搭建比较容易,可维护性强,用户通过短时间培训就能很好地搭建自己需要的服务;缺点是安全漏洞比较多,服务器稳定性不高,如果由没有任何安全意识的管理员来维护,很容易被黑客入侵。
· Linux和BSD平台的优点是权限划分细致,服务器的稳定性众所周知是很高的,所以很多大型企业首选Linux和BSD平台;缺点是维护难度较高,不适合中小型企业(培训一个全能型的Linux和BSD系统管理员需要花费大量的金钱和时间)。
1.1.1 PHP的基本准备工作
1.选择配置php.ini文件
安装PHP之后,访问PHP的安装目录。在这里,可以看到两个php.ini文件,分别是php.ini-dist和php.ini-recommended。建议选择php.ini-recommended,因为这个文件经过了PHP官方的优化。将这个文件的名字改为“php.ini”,然后把它复制到Windows系统目录C:\windows下。
2.将libmysql.dll库文件复制到系统中
将libmysql.dll复制到系统目录中,目的是让PHP程序和MySQL数据库进行连接。如果使用的不是MySQL数据库,就不用复制这个文件了。在这里,把PHP安装目录下的libmysql.dll文件复制到C:\windows\system32目录下。
3.编辑php.ini文件
进入C:\windows目录,找到php.ini文件。编辑几个参数,让PHP能找到需要的组件。
(1)修改extension_dir参数
如图1-1所示,把“extension_dir="./"”修改成“extension_dir="D:/php/ext"”。在这里必须注意,要把路径修改成自己的配置环境,否则运行会失败。
图1-1 修改extension_dir参数
(2)加载需要使用的模块
根据实际情况加载需要使用的模块。在笔者的配置环境中,需要加载 mysql、gd、mcry 模块。如图1-2所示,需要完成的工作是把“;extension=php_openssl.dll”前面的分号去掉(需要使用哪个模块,就去掉哪个模块前面的分号)。
图1-2 加载需要使用的模块
说明
· “.php”可以和任意数据库进行连接,并且能够很好地无缝工作。最经典的数据库是MySQL,还有MSSQL、Oracle等。如果数据库环境不是MySQL,就必须修改对应的模块。MSSQL对应的模块是php_mssql.dll,Oracle对应的模块是php_oci8.dll。
· 加载GD模块的作用是提供对图形的支持,例如Discuz!的加水印功能。
· mysql模块是使用MySQL数据库时必须加载的模块。
· mcrypt模块是phpMyAdmin需要使用的模块。如果觉得手工管理MySQL很麻烦,可以使用phpMyAdmin(它是一款非常强大的MySQL管理工具)。
1.1.2 MySQL的基本准备工作
如果读者有安装和配置MySQL数据库的经验,可以跳过本节内容。
1.运行MySQL安装程序
基本的安装操作等略过不讲,在这里重点讲解一下如何配置MySQL服务器。如图1-3所示,在MySQL的欢迎界面上单击“Next”按钮。
图1-3 MySQL欢迎界面
2.选择安装类型
如图1-4所示,这是比较关键的一步——选择安装类型。“Detailed Configuration”的意思是手动精确配置,选中该项,我们就可以按照自己的需要配置服务器了(适合了解 MySQL 基本原理的网络管理员使用)。“Standard Configuration”是标准配置项,其作用是按照MySQL默认推荐的选项完成安装。因为我们只需要使用MySQL的标准功能,所以单击选中“Standard Configuration”单选按钮即可。
图1-4 选择安装类型
3.配置实例
在实例配置向导界面上也有两个选项,都比较容易理解。“Install As Windows Service”的意思是将MySQL作为Windows的系统服务安装,使MySQL能在开机时自动启动。“Include Bin Directory in Windows PATH”的意思是把 MySQL 的 bin 目录安装到环境目录中,其好处是任何打开的CMD.exe都可以执行MySQL程序。在这里,我们将两项全部勾选,并将“MySQL”作为服务的名称,如图1-5所示。
图1-5 配置实例
4.设置MySQL的密码
单击“Next”按钮,如图1-6所示,主要是基本的安全设置,例如设置root用户的密码。这里的配置原则是尽量复杂,并且一定不要使用root用户来安装PHP程序,例如Discuz!等。笔者建议建立一个专用的低权限用户来完成这些操作。
图1-6 设置MySQL密码和安全选项
在这里还有一个需要注意的地方:不要勾选“Enable root access from remote machines”复选框,因为勾选它表示允许root用户进行远程连接。在这种情况下,如果密码比较简单并开启了远程访问功能,一旦遭遇黑客的攻击,那么黑客获得的大部分权限都是系统权限——一定要注意!
5.安装MySQL
现在开始安装MySQL。如图1-7所示,如果所有的选项都被打勾,表示MySQL安装成功(会给出提示信息)。如果安装不成功,则需要重新安装。
图1-7 成功安装MySQL
MySQL服务器安装成功后,可以通过MySQL Workbench对实例进行管理。如图1-8所示,输入密码,经过验证,就可以在图形化界面上进行操作了。
图1-8 使用MySQL Workbench进行管理
1.1.3 让IIS支持PHP
1.新建网站
因为我们配置的是Windows下的网站,所以需要建立一个新的站点。单击“开始”→“所有程序”→“管理工具”→“Internet信息服务(IIS)管理器”选项,如果一切正常,会弹出如图1-9所示的界面。
如图1-10所示,右键单击“网站”文件夹,在弹出的快捷菜单中选择“新建”选项,然后选择“网站”选项,会弹出网站创建向导。单击“下一步”按钮,继续进行配置。
2.输入描述信息
如图1-11所示,输入网站的描述信息。在这里可以填写对应网站的名称,主要用于标识和区分。
图1-9 打开信息服务器管理器
图1-10 新建网站
图1-11 输入网站的描述信息
3.设置主机头
这里有一个重点需要说明,就是网站的主机头。其实,在这里可以配置虚拟主机,也就是在一台服务器上安装多个网站(填入对应的网址即可)。在“网站IP地址”下拉列表框中选择“(全部未分配)”选项(这样本机所有网卡的所有IP地址就都可以被访问了),保持“网站TCP端口”的默认设置(80端口),如图1-12所示。
图1-12 设置主机头
4.设置网站主目录
如图1-13所示,选择网站的主目录(对应于自己的网站目录就可以了),“允许匿名访问网站”复选框是必须勾选的。如果网站是基于Windows集成认证的,可以不勾选此项,但对其他大部分网站必须勾选此项。
图1-13 设置网站主目录
5.设置网站访问权限
单击“下一步”按钮,打开如图1-14所示的“网站访问权限”界面。在这里需要注意的是,必须勾选前两个复选框,即“读取”和“运行脚本(如ASP)”。单击“下一步”按钮,完成网站的配置。
图1-14 设置网站访问权限
说明
使用新建网站向导设置网站后,可以在IIS管理器中修改这些设置。
6.配置IIS支持PHP
网站配置完成后,就可以开始配置IIS对PHP的支持了。在开始配置前,最好让网站的运行暂停。
(1)配置网站
右键单击新建的“test”网站,在弹出的快捷菜单中选择“属性”选项,如图1-15所示,打开站点属性对话框,然后单击“主目录”标签。
图1-15 配置网站
(2)配置PHP扩展
单击“配置”按钮,在弹出的“应用程序配置”对话框中单击“添加”按钮,添加PHP的ISAPI支持。设置可执行文件为“D:\PHP\php5isapi.dll”(PHP目录下的php5isapi.dll),扩展名为“.php”(一定要注意“php”前面的“.”),限制动作为“GET,POST”,如图1-16所示。单击“确定”按钮,并在“应用程序扩展”对话框中查看PHP扩展是否加载成功。若成功,则单击“确定”按钮关闭对话框,回到站点属性对话框。
图1-16 配置PHP扩展
(3)设置默认文档
单击“文档”标签,如图1-17所示,勾选“启用默认内容文档”复选框,根据网站程序首页文件名添加对应的页面名称,一般为 index.php、default.php(网站中如果有静态页面,则可能包含index.htm、index.html)。添加完成,单击“确定”按钮,关闭站点属性对话框,回到IIS管理器界面。
图1-17 设置默认文档
(4)添加PHP
如图1-18所示,选择添加PHP。在这里,一定要勾选“设置扩展状态为允许”复选框,否则无法支持PHP。
图1-18 添加PHP
1.1.4 测试PHP环境
我们已经基本完成了网站的配置。启动test站点(因为我们在开始配置的时候将它关闭了),进入Web目录,新建一个index.php文件,其内容是“<?php phpinfo();?>”。然后,打开该站点,如图1-19所示,表示成功完成了IIS+MySQL+PHP的配置。
图1-19 测试PHP环境
说明
通过phpinfo()函数可以查看配置详情。