如何在局域网Windows IIS服务器上部署多个Laravel应用
内网IIS托管多PHP应用部署步骤
前置准备
- 优先使用Windows Server 2016/2019/2022系统,小规模使用也可选择Win10/11专业版,不要用家庭版,会缺失IIS相关组件
- 下载**非线程安全版(NTS)**PHP压缩包,IIS通过FastCGI运行PHP必须搭配NTS版本,不要下错线程安全版(TS)
- 所有PHP应用源码分别放在独立的非系统盘文件夹下,例如
D:\WebSites\oa、D:\WebSites\erp,避免系统故障丢失数据,提前给存放站点的文件夹添加IUSR、IIS_IUSRS组的读取、执行权限
第一步:安装IIS及必需组件
服务器系统打开「服务器管理器-添加角色和功能」,桌面系统打开「启用或关闭Windows功能」,勾选以下组件:
- Web服务器(IIS)-万维网服务-应用程序开发功能,必须勾选
CGI,可选勾选静态内容、默认文档、目录浏览等常规功能 - 安装完成后访问
http://localhost,出现IIS默认欢迎页即为基础安装成功
第二步:全局配置PHP环境
- 将PHP压缩包解压到无中文、无空格的路径下,例如
C:\PHP74 - 把PHP目录下的
php.ini-development复制重命名为php.ini,打开修改核心配置:- 取消
extension_dir前面的分号,值改为ext目录的绝对路径,例如extension_dir = "C:\PHP74\ext" - 取消应用需要的扩展前面的分号,常用的包括
gd、curl、pdo_mysql、mbstring、fileinfo等 - 修改时区配置为
date.timezone = Asia/Shanghai
- 取消
- 打开IIS管理器,点击服务器根节点,进入「处理程序映射」,右侧点击「添加模块映射」:
- 请求路径填
*.php - 模块选择
FastCgiModule - 可执行文件选择PHP目录下的
php-cgi.exe - 名称自定义为
PHP_FastCGI即可
- 请求路径填
- 回到服务器根节点进入「FastCGI设置」,双击刚才添加的PHP条目,把「实例最大请求数」改为
10000,添加环境变量PHP_FCGI_MAX_REQUESTS,值设为10000,减少PHP进程频繁重启的概率
第三步:配置多个独立PHP站点
内网场景推荐用端口号区分站点,配置最简单无需额外DNS支持,如果需要域名访问可搭配内网DNS或者hosts文件实现:
- 左侧「网站」节点右键选择「添加网站」
- 站点名称自定义,物理路径选择对应应用的源码文件夹
- 绑定配置:类型选http,IP地址选择服务器的固定内网IP(必须给服务器设置静态内网IP,不要用自动获取),端口自定义未被占用的数值,比如第一个站用8001、第二个用8002,主机名留空即可
- 选中新增的站点,进入「默认文档」,添加应用的入口文件例如
index.php,移动到列表最顶部 - 站点配置完成后在根目录新建
phpinfo.php文件,内容写入<?php phpinfo(); ?>,访问http://服务器内网IP:对应端口/phpinfo.php,出现PHP信息页即为站点配置正常
第四步:内网访问配置
- 放开Windows防火墙对应站点端口的入站规则,也可直接给IIS相关程序设置防火墙白名单
- 同网段内网用户直接通过
http://服务器固定内网IP:站点端口即可访问对应应用 - 如果需要域名访问,在内网DNS添加A记录指向服务器内网IP,在IIS对应站点的绑定配置里填写对应主机名,端口用默认80即可,用户直接输入域名就能访问无需加端口
常见问题排查
- 访问报500错误:优先检查站点文件夹权限是否正确,再查看PHP错误日志定位具体配置问题
- 其他电脑无法访问:检查服务器防火墙端口是否放开,确认客户端和服务器在同一网段,没有内网访问策略限制
- 应用无法连接内网数据库:检查PHP是否开启对应数据库扩展,数据库权限是否放开服务器的内网IP访问
内容的提问来源于stack exchange,提问作者ChrisM
相关产品推荐
相关产品推荐

