在Windows Server实例上部署PHP应用时,为保障网站性能与安全,可利用IIS的FastCGI模块集成PHP(NTS版本),并为网站配置独立的应用程序池与目录权限。
方案架构
通过IIS的FastCGI模块与PHP解释器集成,实现对PHP网页的解析和服务。外部请求由云服务器ECS的安全组过滤后,由IIS处理程序映射,将.php请求转发给FastCGI进程池中的php-cgi.exe处理,最终将执行结果返回给客户端。
核心组件说明
用户的浏览器通过公网向ECS实例80端口发起HTTP请求。
IIS接收到HTTP请求。如果请求的是
.php文件,IIS的处理程序映射规则会通过FastCGI协议将其转发给PHP的CGI执行程序(php-cgi.exe)。FastCGI模块管理一个
php-cgi.exe进程池,接收请求并执行相应的PHP脚本。PHP解释器执行业务逻辑,并将生成的HTML内容或其他数据返回给IIS。
IIS将最终的执行结果作为HTTP响应返回给客户端。
实施步骤
以下步骤以Windows Server 2022为例。
步骤一:安装IIS及CGI模块
登录ECS实例。
访问ECS控制台-实例。在页面左侧顶部,选择目标资源所在的资源组和地域。
进入目标实例详情页,单击远程连接,选择通过Workbench远程连接。选择连接方式为终端连接,输入账号和密码,登录图形化终端页面。
在任务栏的搜索框中输入服务器管理器并打开。
选择添加角色和功能,在向导中单击下一步直至进入服务器角色页面,勾选Web 服务器 (IIS)。
在弹出的对话框中,单击添加功能。然后单击下一步直至进入角色服务页面。
在角色服务列表中,展开,勾选CGI。单击下一步,然后单击安装。
等待安装完成后,单击关闭。
步骤二:安装PHP运行环境
下载并安装PHP需要的Microsoft Visual C++ Redistributable运行库。
访问PHP官网的下载页面。选择VS17 x64 Non Thread Safe版本的Zip压缩包进行下载。
IIS的FastCGI采用多进程模型,每个进程独立运行,不存在多线程共享资源的情况。NTS版本去除了线程安全检查,在IIS环境下性能更高且更稳定。
将下载的压缩包解压到路径简单且无空格的目录,例如
C:\php。此路径将作为PHP的安装根目录。
步骤三:配置PHP与IIS集成
通过FastCGI协议调用PHP解释器,使IIS能够识别.php文件请求,并将这些请求交由PHP解释器处理。
在任务栏的搜索框中输入Internet Information Services并打开。
在左侧连接窗格中,单击服务器主机名,进入服务器功能视图。
双击打开处理程序映射,在右侧操作窗格中,单击添加模块映射。
在弹出的对话框中,配置以下参数:
请求路径:
*.php模块:
FastCgiModule可执行文件:
C:\php\php-cgi.exe在文件选择对话框中,将文件类型从
.dll切换为.exe以找到php-cgi.exe。名称:
PHP via FastCGI
单击确定。在弹出的确认对话框中,单击是,创建对应的FastCGI应用程序。
步骤四:创建并配置网站
创建一个新的网站,并为其配置独立的应用程序池和目录权限。
创建目录并配置权限
为遵循最小权限原则,IIS不会自动为新目录授予权限。需要手动为
IIS_IUSRS组授予读取权限,否则访问网站时将返回403或500错误。在任务栏的搜索框中输入文件资源管理器并打开。
创建网站根目录,例如
C:\myphp。右键单击网站根目录,选择。
在输入对象名称来选择框中,输入
IIS_IUSRS,单击检查名称并确定。选中新添加的
IIS_IUSRS组,为其授予读取和执行、列出文件夹内容和读取权限。单击确定保存权限设置。
修改IIS示例网站端口
新建的网站需要使用80端口,而IIS示例网站(Default Web Site)已占用该端口。
在任务栏的搜索框中输入Internet Information Services并打开。
在左侧连接窗格中,展开服务器主机名,单击网站。
选中Default Web Site,在右侧操作窗格中,单击绑定。
选中目标端口记录单击编辑,修改为其他端口(如8080),单击确定,单击关闭。
添加网站
在左侧连接窗格中,右键单击网站节点,选择添加网站。
配置网站信息:
网站名称:例如
MyPHP。物理路径:指向网站文件的根目录,例如
C:\myphp。端口:
80。
单击确定。
步骤五:配置安全组并验证
通过创建测试网页,验证环境是否配置成功。
配置安全组规则
为使网站能被公网访问,需在实例的安全组中放行Web服务端口。
前往ECS控制台-实例单击目标实例ID,进入实例详情页。
在实例详情页,单击安全组页签,然后单击目标安全组ID进入其详情页。
在入方向规则列表中,单击添加规则,配置以下参数后保存。
授权策略:允许
协议:自定义 TCP
访问来源:
0.0.0.0/0访问目的(本实例):
80/80
创建测试页面
在网站的根目录下(例如
C:\myphp),创建一个名为index.php的文件,并填入以下内容:<?php phpinfo(); ?>访问测试页面
打开浏览器,访问
http://<实例公网IP地址>/index.php,如果页面成功显示PHP的详细信息,则表示环境已成功搭建。