跳至内容

08. 部署

让我们转换思路,看看如何部署我们新的 Laravel 应用程序。

选择提供商

Laravel 可以部署到任何满足 Laravel 适度 服务器要求 的现代 PHP 托管环境。但是,配置和管理 Web 服务器和数据库服务器会分散我们对构建应用程序和为用户提供价值的注意力。这就是我们构建 Laravel ForgeLaravel Vapor 的原因。

Laravel Forge

Laravel Forge 可以在各种基础设施提供商(如 DigitalOcean、Linode、AWS 等)上创建服务器。此外,Forge 安装和管理构建健壮的 Laravel 应用程序所需的所有工具,例如 Nginx、MySQL、Redis、Memcached、Beanstalk 等。

Laravel Vapor

Laravel Vapor 是一个由 AWS 提供支持的无服务器 Laravel 部署平台。在 Vapor 上启动您的 Laravel 基础设施,并爱上无服务器的可扩展性和简单性。

两者都是很棒的选择,但今天我们将使用 Forge,因为它简单、可以选择提供商,并且在较小的应用程序上经济实惠。如果您想要无服务器的可扩展性,您始终可以稍后迁移到 Vapor。

使用 Laravel Forge 注册免费试用,然后选择您的服务器提供商

  • DigitalOcean (提供 100 美元免费额度)
  • Linode (提供 50 美元免费额度)
  • AWS (提供免费套餐)
  • Vultr (提供 50 美元免费额度)
  • Hetzner
  • 自定义 VPS 服务器

如果您不确定选择哪家,我们推荐 DigitalOcean,因为他们提供慷慨的免费额度、出色的用户界面和优秀的功能。

连接到源代码控制

Forge 需要知道在哪里找到您的应用程序代码,因此您需要在源代码控制提供商处注册一个帐户,例如 GitHubGitLabBitbucket

然后,您可以在 Forge 的欢迎屏幕上选择您的提供商,或访问 Forge 帐户的“源代码控制”部分,将 Forge 连接到您的提供商。

Source control screenshot

连接到您的服务器提供商

Forge 需要您的服务器提供商的 API 密钥,以便它可以构建您的服务器。您可以在 Forge 欢迎屏幕上连接到您的服务器提供商,或访问 Forge 帐户的“服务器提供商”部分。

Server providers screenshot

按照说明使用您选择的提供商为 Forge 创建 API 凭据,然后输入详细信息以继续。

创建服务器

现在 Forge 已连接到您的源代码控制和服务器提供商,我们准备创建第一个服务器!

在“服务器”页面上,单击“创建服务器”按钮。

接下来,选择您的服务器提供商。您将看到多个选项,具体取决于您的提供商。默认选项非常适合部署 Chirper,但我们建议您查看为所选提供商提供的全部选项,以确保一切符合您的要求和预算。

Create server screenshot

创建服务器大约需要 10 分钟,具体取决于您的提供商和所选选项。

创建站点(可选)

Forge 将在您的新服务器上自动创建一个“默认”站点。这非常适合部署我们的应用程序,因为我们可以使用服务器的公共 IP 地址访问它,而无需购买域名。

如果您想使用域名,我们建议您访问服务器的站点选项卡,删除“默认”站点并创建一个新站点。您可以根据需要创建任意数量的站点。您还可以选择为新站点创建数据库。

New site screenshot

选择您的站点,然后单击标题中的站点名称以访问您的站点并查看 Forge 的默认站点页面。

创建数据库

如果您使用的是“默认”站点,则需要为您的应用程序创建一个数据库。您可以在服务器的数据库选项卡上创建数据库。

Add database screenshot

您可以将用户名和密码字段留空,以使用 Forge 在构建服务器时生成的凭据。

安装仓库

我们准备在新站点上安装源代码控制仓库。如果您还没有,请确保为您的应用程序创建一个 git 仓库,并将源代码推送到您之前连接到 Forge 的源代码控制提供商。

从服务器的站点选项卡中选择您的站点,然后单击Git 仓库。输入您的仓库名称(例如 taylorotwell/chirper)并选择您的分支。确保选中“安装 Composer 依赖项”,然后安装您的仓库以继续。

Install repository screenshot

配置您的环境文件

安装仓库时,Forge 会从您的仓库中复制 .env.example 环境文件。您可以从站点的编辑文件菜单中查看您的环境配置文件。

Site environment screenshot

您应该仔细查看所有值,以确保所有内容都针对您的生产环境正确配置。

确保 DB_* 值与您之前创建的数据库匹配。如果您创建了专用的数据库用户名和密码,请确保也配置它们。

如果您想从您的应用程序发送电子邮件,您需要查看 MAIL_* 值并添加您选择的 邮件提供商 可能需要的任何其他变量。

如果您想运行队列工作者,请确保QUEUE_CONNECTION值与您所需的队列连接匹配,并且您已安装并配置了所有先决条件

配置您的部署脚本

在您网站的应用程序选项卡上,您可以查看 Forge 为您创建的部署脚本。

Deploy script screenshot

我们的应用程序使用 Node 依赖项和 Vite,因此我们需要添加步骤来安装依赖项并构建我们的资产。

cd /home/forge/default
git pull origin $FORGE_SITE_BRANCH
 
$FORGE_COMPOSER install --no-interaction --prefer-dist --optimize-autoloader
+npm ci
+npm run build
 
( flock -w 10 9 || exit 1
echo 'Restarting FPM...'; sudo -S service $FORGE_PHP_FPM reload ) 9>/tmp/fpmlock
 
if [ -f artisan ]; then
$FORGE_PHP artisan migrate --force
fi

运行队列工作者(可选)

如果您选择配置队列工作者,您现在可以指示 Forge 在您网站的队列选项卡上启动和管理工作者。

New worker screenshot

运行任务调度程序(可选)

如果您选择使用 Laravel 的任务调度,您可以在服务器的调度程序选项卡上配置 Forge 来运行调度程序。您需要将频率设置为“每分钟”,以便调度程序检查您可能配置的任何计划中的到期任务。

New scheduled job screenshot

部署

我们准备首次部署我们的应用程序!按下立即部署按钮,然后坐下来,让 Forge 运行您的部署脚本。

您可以在部署选项卡上查看您的部署历史记录。

完成后,再次访问您的网站,以确认所有内容都已成功部署。

继续到结论和下一步...