卓越飞翔博客卓越飞翔博客

卓越飞翔 - 您值得收藏的技术分享站
技术文章17275本站已运行3326

使用Laravel Forge部署PHP Web应用程序

开发人员喜欢实现自动化 - 对于开发和生产之间的每个流程,他们都渴望有一个脚本来简化他们的工作流程。部署也是如此。

推送最终构建和部署应用程序的过程应该像按立即部署按钮一样简单,但这并不是大多数时候发生的情况。我们最终投入了时间和资源来配置服务器、设置环境、移动我们认为与生产构建无关的文件等等。

我们中的一些人更喜欢使用 FTP 手动将文件发送到服务器或将代码推送到 GitHub 存储库,而其他人则更喜欢使用部署工具来简化该过程。 Laravel Forge 就是这样一个让 PHP 部署变得轻而易举的工具。

不要让 Laravel 品牌名称误导您。除了 Laravel 之外,您还可以使用该服务托管 WordPress、Symphony、Statamic 或任何其他 Web 项目,只要它是 PHP 即可。就我个人而言,我喜欢 Laravel Forge,因为它简单且易于上手。

在本教程中,我将引导您完成将 Laravel Forge 与 AWS 连接的步骤,并探索它所提供的功能。

概述

Laravel Forge 允许您使用 Git 和一些可用的流行服务器提供商启动云服务器并处理部署过程。该过程解释如下:

首先,您需要将 AWS 或任何其他云提供商连接到您的 Forge 帐户。接下来,将您的源代码管理(例如 GitHub)链接到 Forge。您现在将能够创建服务器。在服务器上安装源代码控制存储库。最后,按下部署按钮。很容易,对吧?

使用 Laravel Forge 配置的服务器附带以下堆栈:

  • Ubuntu 16.06
  • 我不
  • PHP 7.2/7.1/7.0/5.6
  • MySQL/MariaDB/Postgres
  • Redis
  • Memcached

创建服务器后,您可以进一步配置。

注册时,您可以在他们提供的不同计划之间进行选择。我选择了 12 美元/月的基本计划;但是,您将获得免费试用期,可以在五天内访问列表中的所有内容。

登录后,您将看到如下所示的内容。

使用Laravel Forge部署PHP Web应用程序

您可以选择 Digital Ocean、AWS、Linode 和 Vultr 作为服务提供商。或者,您也可以将 Forge 与自定义 VPC 结合使用。至于源代码控制,Forge 支持 GitHub、GitLab 和 Bitbucket。在本教程中,我将讨论配置 AWS 以与 Forge 和 GitHub 配合使用以进行源代码控制的基础知识。完成后,您将能够创建和配置任意数量的服务器。

如果您使用列表中的其他服务提供商,您可以跳过此步骤,稍后在我们配置完 AWS 和 Laravel Forge 后联系我们。

设置 Laravel Forge 和 AWS

要设置 Forge 和 AWS,您需要遵循以下步骤。

1。登录 Laravel Forge

登录 Laravel Forge 并选择 AWS 作为服务提供商。系统会要求您提供访问密钥 ID(密钥)和秘密访问密钥(秘密)。您需要创建一个特定的 IAM 用户,该用户的策略可以提供对 Laravel Forge 的足够访问权限。 IAM 是 Amazon 在每个用户上映射权限的方式,以便在出现任何问题时您可以撤销访问权限。

2。创建新的 IAM 用户

登录 AWS 控制台并创建新的 IAM 用户。

使用Laravel Forge部署PHP Web应用程序

为用户提供一个有意义的名称,并选中编程访问复选框。

3。选择正确的政策

为 laravel-forge IAM 用户设置正确的权限。创建新的用户组,因为用户组非常适合管理权限。现在自然的问题是,“forge 用户应该有权访问哪些策略?”尽管您可以为其提供 AdministratorAccess,但您不应该这样做。

使用Laravel Forge部署PHP Web应用程序

如果您需要 Forge 代表您创建和配置服务器,则需要添加两项策略:

  1. AmazonEC2FullAccess
  2. AmazonVPCFullAccess

4。保存凭据并确认

确认 IAM 帐户,在下一页上,您将找到访问密钥和密码。

使用Laravel Forge部署PHP Web应用程序

前往 Laravel Forge 页面并将它们粘贴到那里。就是这样。

5。将您的 GitHub 帐户链接到 Forge

如果您还没有将您的 GitHub/Bitbucket 帐户连接到 Forge,请执行此操作。当您创建服务器时,Forge 会将公钥添加到您的帐户中。如果您需要添加新的服务提供商和/或更新源代码管理,您可以在个人资料中找到这些选项。

创建新服务器

转至创建服务器页面添加新服务器。

使用Laravel Forge部署PHP Web应用程序

如果您使用的是 AWS 免费套餐,请选择具有 1GB RAM 的 t2.micro。至于其他设置,我将使用默认值。其中包括数据库 MySQL 和 PHP 7.2 版。您可以稍后自定义数据库名称。为了简单起见,我决定不使用负载均衡器。如果您想知道后期制作的秘诀,我已经在本教程的末尾介绍了这一点。

创建服务器最多可能需要五分钟。您将获得 sudo 访问权限的凭据。将它们存放在安全的地方,以便您将来可以使用它们。要查看事情是否按预期工作,请转到服务器的 IP 地址,您应该在屏幕上看到 phpinfo() 的输出。

服务器管理界面

创建服务器后看到的界面是服务器管理仪表板。

使用Laravel Forge部署PHP Web应用程序

您可以在这里执行很多操作,例如:

  • 网站管理
  • 添加 SSH 密钥
  • 数据库配置
  • 更新 PHP 设置
  • 安排任务
  • 启动守护进程
  • 管理网络和配置防火墙
  • 使用 Blackfire 或 Papertail 监控应用程序
  • 配置元设置

其中捆绑了很多功能。我已经在本教程中介绍了重要的内容。让我们从站点管理开始。根据 Forge 文档:

站点代表服务器上的每个“域”。每个新配置的服务器都包含“默认”站点;但是,当您准备好启动生产站点时,您应该删除它并使用有效域名创建一个新站点。 块引用>

如您所见,Forge 已经为我们设置了默认站点。您可以创建任意数量的站点并将它们路由到您的子域。出于本教程的目的,我将坚持使用默认站点。默认情况下,Web 目录设置为 /public。这就是 Laravel 和大多数其他 Web 应用程序的配置方式。

如果您点击特定站点,您将看到站点管理界面。您可以从此处管理、部署和配置各个站点。

站点管理界面

这是界面最初的样子。

使用Laravel Forge部署PHP Web应用程序

您可以从 Git 存储库安装或安装 WordPress。出于本教程的目的,我创建了一个示例联系我们应用程序,您可以将其分叉到您的帐户中。您可以指定项目和分支的名称。完成后,您应该可以控制部署应用程序。

使用Laravel Forge部署PHP Web应用程序

我将带您快速浏览可用的选项。

立即部署和快速部署

要进行部署,您可以使用立即部署按钮手动部署。或者,您可以启用快速部署选项,当您将代码推送到所选 GitHub 存储库的 master 分支时,该选项会自动部署项目。

部署脚本

默认部署脚本从存储库中提取代码,安装依赖项,启动服务器,并在每次部署应用程序时运行迁移。这是实际的部署脚本。

'
cd /home/forge/redmonark.com
git pull origin laravelapi
composer install --no-interaction --prefer-dist --optimize-autoloader
echo "" | sudo -S service php7.2-fpm reload

if [ -f artisan ]
then
    php artisan migrate --force
fi

如果您需要调整它并添加额外的东西,您可以。

部署触发器 URL

您可以使用它将您的应用程序集成到第三方服务中或创建自定义部署脚本。当 URL 收到请求时,就会触发部署脚本。

更新存储库和分支

如果您需要更新分支或在不同的存储库上安装同一项目的较新版本,则可以使用这些选项。如果您要更新分支,则可能还需要更新部署脚本中的分支名称。

环境

Forge 自动为应用程序生成环境文件。一些详细信息(例如数据库凭据)会自动添加到环境中。但是,如果应用程序使用 API,您可以将 API 密钥安全地放置在环境中。即使您运行的是通用 PHP Web 应用程序,您也可以使用 getenv() 方法访问 ENV 变量。

队列工作人员

在 Forge 中启动队列工作程序与运行 queue:work Artisan 命令相同。 Forge 使用称为 Supervisor 的进程监视器来管理队列工作人员,以便进程保持永久运行。您可以根据队列优先级或您认为有用的任何其他分类创建多个队列。

SSL

过去,为网站提供 SSL 保护绝非易事且免费。 Forge 允许您安装现有证书,或者您可以从 LetsEncrypt 获取免费证书。它既快速又简单。如果您需要通配符子域的 SSL,您可以将免费的 Cloudflare 证书添加到 Forge。

回到服务器管理界面,我们有SSH密钥。

添加 SSH 密钥

虽然仪表板上提供了大多数可配置选项,但如果您需要连接到服务器,则应该使用 SSH 来完成。 SSH 是登录 VPS 的更安全的方式,并且提供比密码更多的保护。

要通过 SSH 访问服务器,您需要生成密钥对(如果尚未生成)。服务器将可以访问公钥,而私钥将驻留在您的主机中。然后,您可以使用该设置连接到服务器实例。

使用Laravel Forge部署PHP Web应用程序

注意:从服务器管理仪表板添加的 SSH 密钥将特定于该服务器。如果您需要从现在开始自动将密钥添加到所有服务器,您可以从您的个人资料设置中添加它们。

要生成密钥对,请运行以下命令。

'
ssh-keygen -t rsa

系统会询问您几个问题,例如您想要存储密钥的文件以及用于提高安全性的密码。接下来,将 SSH 密钥添加到 ssh-agent。

'
ssh-add ~/.ssh/id_rsa

复制公钥并将其添加到 Forge 的 SSH 密钥列表中。

'
cat ~/.ssh/id_rsa.pub  # Copy the output of this command

配置 PHP 和 MySQL

您可以使用该界面来配置 PHP 和 MySQL。对于数据库,可用的选项包括:

  • 创建新数据库。
  • 添加新用户。
  • 更新用户对数据库的访问权限。
  • 更新 Forge 有关密码的知识。

确保在 .env 文件中填写更新的数据。

您可以配置以下 PHP 设置:

  • 升级到最新版本的 PHP。
  • 更改上传文件大小。
  • 针对生产环境优化 OPCache,以便将编译后的 PHP 代码存储在内存中。

其他重要设置

这里我列出了一些其他可用的设置。

安排任务

您可以使用 Forge 的调度程序来安排重复任务或运行 cron 作业。如果您需要定期发送电子邮件、清理某些内容或运行脚本,则可以使用任务计划程序。默认情况下会创建一个任务,该任务每晚运行 composer self-update 。您可以尝试以您选择的频率安排新的会议。

启动守护进程

守护进程是在后台进程中运行的计算机程序。 Laravel Forge 允许您启动守护进程并使用 Supervisor 来确保守护进程保持运行。如果守护进程由于某种原因崩溃,Supervisor 将自动重新启动脚本。

监控应用程序

Laravel Forge 内置了对工具的支持,这些工具可以通过收集有关资源(例如内存、CPU 时间和 I/O 操作)的数据来监控应用程序的性能指标。可用的工具有 B​​lackfire.io 和 Papertrail。要开始分析您的应用程序,您只需从第三方网站检索正确的凭据即可。

配置服务器网络和防火墙

如果您需要更新防火墙设置,则无需前往 AWS 控制台即可完成此操作。您可以从仪表板创建新的防火墙规则。如果您有使用相同提供商和区域配置的其他服务器,则可以设置服务器网络,以便它们可以轻松通信。

摘要

Laravel Forge 是一个令人难以置信的工具,它使部署变得轻而易举。它具有大量功能和易于使用的 UI,可让您轻松创建和配置服务器并部署应用程序。配置服务提供商后,您很可能不需要再次访问 AWS 控制台来管理服务器。

在本教程中,我介绍了使用 Laravel Forge 配置 AWS 的基础知识以及配置服务器和部署应用程序的步骤。我还讨论了 Forge 界面中几乎所有可用的功能。

对于那些刚刚开始使用 Laravel 或希望通过扩展来扩展您的知识、网站或应用程序的人,我们在 Envato Market 中提供了您可以学习的各种内容。

您是否有使用 Laravel Forge 或任何其他流行部署工具部署 PHP 应用程序的经验可以分享?让我们在评论中知道。

卓越飞翔博客
上一篇: C# 中的连接池是什么以及如何实现?
下一篇: 返回列表
留言与评论(共有 0 条评论)
   
验证码:
隐藏边栏