如何在Windows平台上部署Laravel项目?
Laravel 框架需要启用三个功能:PHP Web、队列和任务调度。官方文档仅包含 Linux 设置说明。虽然Linux纯CLI看起来更先进,但Windows也是一种解决方案。
PHP Web
参考 使用IIS在Windows上部署PHP项目,完成环境配置。
Laravel 项目 public
目录已包含用于 IIS 部署的 web.config
文件。内容是URL重写规则:
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name="Imported Rule 1" stopProcessing="true">
<match url="^(.*)/$" ignoreCase="false" />
<conditions>
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" ignoreCase="false" negate="true" />
</conditions>
<action type="Redirect" redirectType="Permanent" url="/{R:1}" />
</rule>
<rule name="Imported Rule 2" stopProcessing="true">
<match url="^" ignoreCase="false" />
<conditions>
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" ignoreCase="false" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsFile" ignoreCase="false" negate="true" />
</conditions>
<action type="Rewrite" url="index.php" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>
复制代码
添加IIS站点时,站点的物理路径必须指向public
目录。一般来说,其他站点配置都是从根配置文件继承的,比如与FastCGI相关的配置。同时使用多个站点需要将域名与站点绑定,否则只有一个站点可以使用80端口。
域名之间的控制
您可以在MDN的文档中获取更多有关域名之间域名的信息- HTTP 访问控制 (CORS)。通过添加特殊响应标头来管理 Web 浏览器中的跨域限制。 IIS 可以在HTTP 响应头
中设置相应的响应头。
HTTP 响应标头
可以在 IIS 管理器中设置为全局设置或每个位置。如果针对站点进行配置,则会修改站点物理路径下的 web.config
文件。配置
后,您将看到 web.config
节点添加到 rewrite
节点之后。
<httpProtocol>
<customHeaders>
<add name="Access-Control-Allow-Origin" value="example.com" />
</customHeaders>
</httpProtocol>
复制代码
其他组装项目类似。推荐的方式是将更改后的web.config
文件签入版本控制系统进行控制。
请注意,此处的设置适用于所有 URL。如果要针对特定的 URL 路径,需要手动添加以下内容 节点:
<location path="api">
<system.webServer>
<httpProtocol>
<customHeaders>
<add name="Access-Control-Allow-Origin" value="example.com" />
</customHeaders>
</httpProtocol>
</system.webServer>
</location>
复制代码
如果需要更详细的 CORS 控制,则需要安装 IIS CORS 模块,请参见IIS CORS模块配置参考|用于配置的 Microsoft 文档。
当然,在PHP代码中控制更加灵活。
客户端缓存
Web客户端缓存主要对应 这里,客户端缓存控制主要是针对静态资源,动态资源可以通过代码来控制。默认情况下,HTTP客户端,包括APP开发中使用的浏览器和HTTP请求库,都是按照HTTP协议约定进行缓存的。 默认情况下,静态资源请求的 IIS 响应头包含 如果稍后站点操作完成,相关节点也会添加到项目中 您可以获取更多关于 如果您需要在 Windows 上部署 PHP Web 项目,那么 SQL Server 一定是一个非常常见的原因。 PHP 访问 SQL Server 数据库需要安装两个数据库驱动: 影响因素是上述两个驱动的版本。 SQL Server 版本、PHP 版本和 Windows 版本。详细的对应关系可以参见官方文档 系统要求 Microsoft Drivers for PHP for SQL Server - SQL Server | Microsoft Drivers for PHP for SQL Server微软文档。 以 Laravel 5.7 为例 总结:生产环境至少只能选择Windows2 Server作为开发环境。 安装适用于 SQL Server 5.3 的 Microsoft PHP 驱动程序和适用于 SQL Server 17+ 的 Microsoft ODBC 驱动程序。配置PHP插件后,您可以从SQL Server 2008 R2到SQL Server 2017访问数据库。 队列在官方文档中的实现是 将下载的 其他需要考虑的事情是 任务调度和队列的区别在于执行周期不同。官方文档中实现任务调度的方法是使用 打开计划任务程序并创建任务。根据日程 操作时,在配置程序中填写整个PHP.exe路径。 检查设置 作者:TomCzHenCache-Control
、ETag
Eag♷❀♷
标头控制,来自 HTTP 缓存 在 MDN 中查看文档请参阅developer.mozilla.org/zh-CN/docs/… 了解详细信息。
Etag
和 Last-Modified
。您可以通过 设置通用标头
选项 Cache-Control❀ 设置
HTTP 响应标头。响应头如下:
触发选择HTTP/1.1 200 OK
Cache-Control: max-age=86400
Content-Type: application/javascript
Content-Encoding: gzip
Last-Modified: Fri, 11 Jan 2019 15:06:10 GMT
Accept-Ranges: bytes
ETag: "05d6b2fbfa9d41:0"
Vary: Accept-Encoding
Date: Sat, 12 Jan 2019 17:26:08 GMT
Content-Length: 112411
复制代码
web.config
public 如果:则需要按目录引导,手动将以下内容添加到
操作参数 节点:
<location path="favicon.ico">
<system.webServer>
<staticContent>
<clientCache cacheControlCustom="public" cacheControlMode="UseMaxAge" cacheControlMaxAge="365.00:00:00" />
</staticContent>
</system.webServer>
</location>
复制代码
官方文档缓存的信息。 |微软文档。
SQL Server
php> = 7.1.3
要求: Queue
Supervisor
。您还可以在 Linux 上使用 systemd。在Windows中使用相同的想法,将队列作为系统服务运行需要使用NSSM——Non-Sucking Service Manager。 nssm.exe
路径添加到系统路径变量中后,在命令行上使用nssm install
。Path
建议填写完整的php.exe
路径,启动目录
,填写项目启动目录。参数 artisan 队列:work sqs --sleep=3 --tries=3
。 登录
该服务以用户身份运行,包括访问权限、环境变量和身份验证。一般情况下,保留本地系统帐户
。如果使用指定用户,则如果用户的密码无效或已更改,服务将不会启动。 任务调度
crontab
命令通过Windows计划任务每分钟调用一个任务条目。可以达到同样的目的。 ,
一次
,但时间要根据经过的时间进行调整。 任务重复间隔
设置为 1 分钟,持续时间
为无持续时间
。 从
开始,定义为Laravel项目路径,参数填充为artisan Schedule:run
。 如果已过了预定的开始时间,请立即启动任务
,删除 如果请求后任务仍在运行,请强制停止、
最后选择
不要开始新的事件
。
链接:https://juejin.im/post/5c3b062a518825255007f0ce
来源:掘金。商业转载请联系作者获得许可。非商业转载请注明出处。
版权声明
本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。
发表评论:
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。