Chinese (Simplified) (中文(简体)) translation by honeymmmm (you can also view the original English article)
开发人员喜欢自动化事物 - 对于开发和生产之间的每个过程,他们都希望有一个脚本,使他们的工作流程更容易。 部署也是如此。
推送最终版本和部署应用程序的过程应该像按下“立即部署”按钮一样简单,但这不是大多数情况下发生的事情。 我们最终投入时间和资源来配置服务器,设置环境,移动我们认为与生产版本无关的文件等等。
我们中的一些人更喜欢使用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
- Nginx
- PHP 7.2/7.1/7.0/5.6
- MySQL/MariaDB/Postgres
- Redis
- Memcached
创建服务器后,您可以进一步配置。
注册时,您可以选择他们提供的不同计划。 我选择了12美元/月的基本计划; 但是,您将获得免费试用版,可以访问列表中的所有内容,为期五天。
登录后,您将看到以下内容。

您可以为服务提供商选择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是亚马逊为每个用户映射权限的方式,因此如果出现任何问题,您可以撤消访问权限。
2.创建新的IAM用户
登录AWS Console并创建新的IAM用户。

为用户提供有意义的名称,并选中“程序化访问”框。
3.选择正确的政策
为laravel-forge IAM用户设置正确的权限。 创建新用户组,因为用户组是管理权限的理想选择。 现在自然而然的问题是,“伪造用户应该访问哪些政策?” 虽然您可以使用AdministratorAccess提供它,但您不应该这样做。

如果您需要Forge代表您创建和配置服务器,则需要添加两个策略:
- AmazonEC2FullAccess
- AmazonVPCFullAccess
4.保存凭据并确认
确认IAM帐户,在下一页上,您将找到访问密钥和密码。

前往Laravel Forge页面并将其粘贴到那里。 而已。
5.将您的GitHub帐户链接到Forge
如果您还没有这样做,请将您的GitHub / Bitbucket帐户连接到Forge。 Forge将在您创建服务器时为您的帐户添加公钥。 如果您需要添加新的服务提供商和/或更新源代码管理,您可以在个人资料中添加这些选项。
创建新服务器
转到“创建服务器”页面以添加新服务器。

如果您使用的是AWS免费套餐,请选择带有1GB RAM的t2.micro。 至于其他设置,我将使用默认设置。 这包括用于数据库的MySQL和PHP版本7.2。 您可以稍后自定义数据库名称。 为了简单起见,我决定不使用负载均衡器。 如果您对后期制作配方感到疑惑,我已经在本教程结束时介绍了这一点。
最多可能需要五分钟才能创建服务器。 您将获得sudo访问权限的凭据。 将它们存放在安全的地方,以便将来可以使用它们。 要查看事情是否按预期工作,请转到服务器的IP地址,您应该在屏幕上看到phpinfo()
的输出。
服务器管理界面
创建服务器后看到的界面是服务器管理仪表板。

你可以在这里做很多事情,例如:
- 现场管理
- 添加SSH密钥
- 数据库配置
- 更新PHP设置
- 安排任务
- 启动一个守护进程
- 管理网络和配置防火墙
- 使用Blackfire或Papertail监控应用程序
- 配置元设置
那里捆绑了很多功能。 我已经介绍了本教程中的重要内容。 让我们从网站管理开始。 根据Forge文档:
站点代表服务器上的每个“域”。 每个新配置的服务器都包含“默认”站点; 但是,在准备好启动生产站点时,应删除它并创建具有有效域名的新站点。
如您所见,Forge已经为我们设置了默认站点。 您可以创建任意数量的站点并将它们路由到您的子域。 出于本教程的目的,我将坚持使用默认站点。 默认情况下,Web目录设置为/public
。 这是为Laravel和大多数其他Web应用程序配置的方式。
如果单击特定站点,您将看到站点管理界面。 您可以从此处管理,部署和配置各个站点。
站点管理界面
这是界面最初的样子。

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

我会快速介绍一下可用的选项。
立即部署和快速部署
要进行部署,可以使用“立即部署”按钮手动部署。 或者,您可以启用“快速部署”选项,该选项会在您将代码推送到所选GitHub存储库的主分支时自动部署项目。
部署脚本
默认部署脚本从存储库中提取代码,安装依赖项,启动服务器,并在每次部署应用程序时运行迁移。 这是实际的部署脚本。
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。
回到Server Management界面,我们有SSH密钥。
添加SSH密钥
虽然仪表板上提供了大多数可配置选项,但如果需要连接到服务器,则应使用SSH执行此操作。 SSH是一种更安全的登录VPS的方式,提供比密码更多的保护。
要通过SSH访问服务器,您需要生成密钥对(如果尚未生成密钥对)。 公钥可供服务器访问,私钥将驻留在您的主机中。 然后,您可以使用该设置连接到服务器实例。

注意:从服务器管理仪表板添加的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操作等资源的数据来监控应用程序的性能测量。 可用的工具是Blackfire.io和Papertrail。 要开始分析您的应用程序,您只需要从第三方网站检索正确的凭据即可。
配置服务器网络和防火墙
如果您需要更新防火墙设置,则无需转到AWS控制台即可实现。 您可以从仪表板创建新的防火墙规则。 如果您使用相同的提供程序和区域配置了其他服务器,则可以设置服务器网络,以便它们可以轻松地进行通信。
摘要
Laravel Forge是一个令人难以置信的工具,使部署成为一块蛋糕。 它具有大量功能和易于使用的UI,可让您轻松创建和配置服务器并部署应用程序。 配置服务提供商后,您可能无需再访问AWS控制台来管理服务器。
在本教程中,我介绍了使用Laravel Forge配置AWS的基础知识,以及配置服务器和部署应用程序的步骤。 我还讨论了Forge界面中几乎所有可用的功能。
对于那些刚刚开始使用Laravel或希望扩展您的知识,网站或带扩展的应用程序的人,我们可以在Envato Market中学习各种各样的东西。
您是否有使用Laravel Forge或任何其他流行部署工具部署PHP应用程序的经验? 让我们在评论中知道。
Subscribe below and we’ll send you a weekly email summary of all new Code tutorials. Never miss out on learning about the next big thing.
Update me weeklyEnvato Tuts+ tutorials are translated into other languages by our community members—you can be involved too!
Translate this post