开发人员喜欢使事情自动化-对于开发和生产之间的每个流程,他们都渴望拥有一个脚本,以使他们的工作流程更加轻松。 部署也是如此。
推动最终构建和部署应用程序的过程应该与按下“立即部署”按钮一样容易,但是大多数情况下并非如此。 我们最终将时间和资源投入到配置服务器,设置环境,移动我们认为与生产版本无关的文件等方面。
我们中的一些人喜欢使用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
- 雷迪斯
- 记忆快取
创建服务器后,您可以进一步配置内容。
注册后,您可以在他们提供的不同计划之间进行选择。 我选择了每月12美元的基本计划; 但是,您将获得为期5天的免费试用版,可以访问列表中的所有内容。
登录后,您将在下面看到类似的内容。
您可以为服务提供商选择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(密钥)和秘密访问密钥(秘密)。 您将需要使用提供对Laravel Forge足够访问权限的策略来创建特定的IAM用户。 IAM是Amazon在每个用户上映射权限的方法,以便在出现任何问题时可以撤消访问权限。
2.创建一个新的IAM用户
登录到AWS Console并创建一个新的IAM用户。
为用户指定一个有意义的名称,然后选中“ 程序化访问 ”框。
3.选择正确的政策
为laravel-forge IAM用户设置正确的权限。 创建新用户组是因为用户组是管理权限的理想选择。 现在自然而然的问题是:“伪造用户应该访问哪些策略?” 尽管可以为它提供AdministratorAccess,但您不应该这样做。
如果需要Forge代表您创建和配置服务器,则需要添加两个策略:
- AmazonEC2完全访问
- 亚马逊VPCFullAccess
4.保存凭据并确认
确认IAM帐户,然后在下一页上找到访问密钥和密码。
转到Laravel Forge页面并将其粘贴到此处。 而已。
5.将您的GitHub帐户链接到Forge
如果您尚未将GitHub / Bitbucket帐户连接到Forge,请将该帐户连接到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存储库的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收到请求后,将触发部署脚本。
更新仓库和分支
如果需要更新分支或在不同的存储库上安装同一项目的较新版本,则可以使用这些选项。 如果要更新分支,则可能也必须在部署脚本中更新分支名称。
环境
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访问服务器,您还需要生成一个密钥对(如果尚未创建)。 服务器将可以使用公钥,而私钥将驻留在您的主机中。 然后,您可以使用安装程序连接到服务器实例。
注意:从服务器管理仪表板添加的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应用程序的经验? 让我们在评论中知道。
翻译自: https://code.tutsplus.com/tutorials/deploy-php-web-application-using-laravel-forge--cms-30329