>这篇文章首先在Auth0博客上发表,并在此处全额重新发布。 > tl; dr:在开发人员中有一个流行的咒语,就像写作,测试和部署
一样。在本教程中,我将向您展示如何将PHP应用程序部署到其他云服务器平台,例如Google Cloud,Microsoft Azure,Heroku,IBM Bluemix等。钥匙要点
在云中部署PHP应用程序提供可扩展性,成本效益,提高性能和更好的可靠性,使其成为各种尺寸的企业的有利选择。>
通用的PHP应用程序涉及常见灯(Linux,Apache,MySQL和PHP) linux:运行其他软件包的操作系统。
> Heroku Heroku是一个云平台,可帮助您以现代方式部署和托管应用程序。它为您带来了所有重型。让我们快速看一下如何在Heroku上部署和维护PHP应用程序。>
php heroku架构
如果您没有帐户,请继续在Heroku.com上创建一个。然后继续安装Heroku CLI。安装了此功能后,请克隆此简单的Starwars PHP应用程序。
>
确保您在下面遵循以下步骤:
>从.env.example创建.ENV文件。
>>您需要拥有一个Auth0的帐户。>命名您的新应用程序,然后选择“常规Web应用程序”。>转到您的auth0仪表板,然后单击“创建新客户端”按钮。
> 在您的新Auth0 Client应用程序的设置中
>复制您的太棒了!我们的应用在本地起作用。是时候部署了!我们要做的第一件事是在应用程序的根目录中添加一个procfile。
>创建一个新文件,称为procfile,而无需任何文件扩展名,并添加以下内容:
web: vendor/bin/heroku-php-apache2procfile是您应用程序的根目录中的一个文本文件,它定义过程类型并明确声明应执行哪些命令以在Heroku上启动您的应用。
作为Web服务器,则您的如果您有兴趣使用
nginx
> procfile的内容为:
web: vendor/bin/heroku-php-nginx
从仪表板创建一个新应用
>给它一个类似的名字:
给应用程序名称
>
选择一种部署方法。在我们的情况下,我们将使用GitHub这样的github:>
连接到github
选择GITHUB的原因是使开发和维护过程非常顺利。开发人员可以使用GIT工作流来处理新功能。
现在,在圆形区域中键入回购的名称,然后单击搜索。 Heroku将在您的github帐户下搜索您的回购,并像So>一样显示它
搜索repo
单击“ so so ”的连接
单击“连接”按钮
>
Heroku将像SO 一样连接回购
>连接的项目
>向下滚动。这是有趣的部分。 Heroku允许您使用按钮启用自动部署。它还为您提供了等待连续集成过程在部署到生产之前通过的选择。在现实世界应用中,您将为您的代码库提供测试套件。开发人员的代码与测试套件相对。如果通过了,则代码将被推到生产。>
>单击以启用自动部署。我们没有任何CI服务,因此我们不需要启用该选项。现在,让我们部署主分支。
单击部署分支。 Heroku将通过您的composer.lock文件扫描,安装必要的软件包,然后部署!
>
>部署最终
单击“视图”按钮查看您的应用。
>错误500
哎呀!我们正在遇到500个错误。啊哈,我们还没有设置任何环境变量。在本地,我们有一个.env文件。在Heroku上,没有.env文件,但是有一种设置环境变量的方法。转到仪表板中的设置,然后将它们添加为config变量,例如:
>
![]()
哦,还有一件事!在我的情况下,新的回调URL是http://starwazapp.herokuapp.com。确保将新的回调URL添加到Auth0仪表板中允许的回调URL 。 您的应用程序应该现场直播!
>>实时应用
>进行小更改
>让我们对我们的应用进行一个小的更改,看看它毫不费力地将其部署到生产中。
>打开index.php并从听到的标签的内容更改您不想迁移到php 7的内容?敢我们!要星球大战 - 觉醒!提交并推向您的主分支。现在,转到Heroku仪表板的“活动”选项卡,并注意构建。重新加载您的应用程序,您会看到区别。
构建成功的
新版本
![]()
>让我们快速谈论如何处理数据库,缓存和CRON工作。在Heroku上,您可以使用PHP的ClearDB和Postgres。像这样将ClearDB添加到您的应用程序中:
>数据库,缓存和cron作业
此命令配置一个新的ClearDB数据库,并返回该应用程序将使用的URL访问它。您需要做的就是将其添加到您的应用程序中,作为环境变量,然后在应用程序的配置中解析它:
web: vendor/bin/heroku-php-apache2clearDB是您的MySQL驱动应用程序中云中强大的容忍数据库-AS-A-Service。
使用mysqli >>您可以对其进行调整以适合PDO风格。像这样将Postgres添加到您的应用程序中:web: vendor/bin/heroku-php-nginx>前往插件,您会看到可以与PHP应用一起使用的其他类型的数据库。> Heroku提供了一系列用于缓存的附加组件,从Memcache,到快捷,再到Ironcache等。您可以在此处查看如何在Heroku上使用PHP的Memcache。
>>最后,您可以在计划的时间间隔内使用HEROKU调度程序在应用程序上运行作业。
Google Cloud
> Google Cloud平台是一个巨大而值得信赖的云平台,世界各地的许多公司在部署和托管应用程序时都采用了该平台。您的应用程序将在为所有Google产品提供动力的基础架构上运行。您还需要哪些其他形式的信心来向您保证,您的应用程序可以很好地扩展到足以为您的数千万用户提供服务?
Google Cloud提供了托管PHP应用程序的不同选项。该平台提供应用程序引擎(完全管理),计算引擎(可扩展VM)和容器引擎(Kubernetes簇)。 在我们的情况下,我们将使用应用引擎。它将基础架构抽象出来。让我们跳入将我们著名的《星球大战》应用程序部署到Google App Engine。
使用Google App Engine时,您可以选择标准或灵活的环境。后者如名称所示,允许您安装在Debian Linux上使用的任何PHP扩展程序,它具有可配置的NGINX Web服务器,可写的文件系统,最新的PHP版本,并允许您使用Composer.json.json.我们将使用灵活的环境。继续创建一个新项目。单击创建,给项目一个名称,选择要使用应用程序的区域,然后启用帐单。 注意:未经您的许可,您将不会收取费用。
>
现在,下载Google SDK并安装Google Cloud Tools。>安装Google SDK
>运行gcloud
继续在我们项目的根部创建一个app.yaml文件,例如:
> app.yaml
>因此,我们的.env文件已被推到Google Cloud。使用该方法的一种替代方法是将环境变量添加到app.yaml文件之类的。
现在,通过运行GCLOUD应用程序部署从控制台部署您的应用程序 抓住URL,在我的情况下是https://starwars-166515.appspot.com/,并添加到允许的oridens(CORS),并允许在您的auth0仪表板中允许回调URL。还将URL添加到.env文件中的Auth0_callback_url中。
web: vendor/bin/heroku-php-apache2运行GCLOUD应用程序再次部署以提供该应用的新版本。立即查看您的应用程序。它应该像这样的生活:
web: vendor/bin/heroku-php-nginx>实时应用
>数据库,缓存和cron作业
Google Cloud提供了一个云SQL实例平台。查看如何在此处为您的应用程序配置,连接和创建MySQL实例。
您也可以在Google App Engine上使用phpmyadmin。 Google App Engine包括标准Memcache和Memcached API的实现。查看如何在Google Cloud上的应用程序中使用Memcache。> App Engine Cron服务允许您配置在定义时间或常规间隔操作的定期计划任务。查看如何安排CRON作业并在Google Cloud上使用php的任务队列。
>将Laravel,Symfony和WordPress应用程序部署到Google Cloud Platform相对容易。> IBM Bluemix
IBM Bluemix> ibm bluemix允许您轻松地在功能强大的高性能全局云基础架构上配置,部署和扩展。让我们跳入将我们著名的《星球大战》应用程序部署到IBM Bluemix。
>在蓝色上注册,例如:
bluemix
>
上的注册 注意:Bluemix平台提供了30天的免费试用版,因此您有机会尝试在交出信用卡详细信息之前尝试部署自己的申请。
继续创建一个组织和空间。我命名了我的空间产品。
>现在,继续安装云铸造CLI。完成此操作后,像这样从终端登录:
>
web: vendor/bin/heroku-php-apache2登录到蓝色下一步是在应用程序的根目录中创建一个subtest.yml文件。 subtest.yml文件包括有关您应用的基本信息,例如名称,每个实例分配多少内存以及路由。我们的清单文件应该看起来像这样:
>您还可以明确指定清单文件中的构建包。值得庆幸的是,Cloud Foundry会自动检测到当您推动应用时需要哪些构建包。
> BuildPacks为您的应用程序提供框架和运行时支持。 BuildPacks通常检查用户提供的伪像,以确定要下载的依赖项以及如何配置应用程序以与约束服务通信。
web: vendor/bin/heroku-php-nginx最后,通过运行以下命令来部署您的应用程序:
>
必须是一个唯一的名称。 >启动部署
heroku addons:create cleardb:ignite
>现在尝试运行该应用程序。就我而言,URL是starwarsapp.mybluemix.net。糟糕,一个500错误。我们还没有加载环境变量。我们如何使用蓝色?
>结束部署
>
>您可以使用Cloud Foundry CLI或Bluemix用户界面来设置环境变量。让我们使用Bluemix用户界面。因此,请按照以下步骤操作:
打开蓝色仪表板。
现在查看您的应用程序 - 应该是LINE!
- 从左图中选择“运行时”。
>
单击该应用程序。您将被重定向到另一个页面,其中包含有关应用程序的更多详细信息。- 现在,单击环境变量
![]()
- 向下滚动,然后单击“添加”按钮以添加环境变量,例如so
>
![]()
- 单击“保存”按钮。一旦这样做,您的应用将自动重新启动。
![]()
- 现在抓取URL,在我的情况下,是https://starwarsapp.mybluemix.net/,并将其添加到允许的Origins(CORS)中,并允许在您的auth0 dashboard中允许回调url。
>
>数据库,缓存和cron作业
Cloud Foundry提供了创建服务的能力。 IBM Bluemix提供Cloudant NOSQL数据库(CouchDB的蓝色名称)。您可以使用CF工具来创建类似的数据库服务:
IBM Bluemix还提供ClearDB MySQL服务。因此,您可以使用CF工具来创建类似的工具:
web: vendor/bin/heroku-php-apache2他们提供MongoDB,PostgreSQL和RethinkDB。>
>您始终可以使用Cloud Foundry工具来检查许多内容,例如日志,环境变量等。web: vendor/bin/heroku-php-nginxcf logs - recent yourapp - 显示您的应用程序的日志。
cf env yourApp - 显示与您的应用程序关联的环境变量。cf市场 - 展示Bluemix必须提供的所有服务。
>IBM Bluemix还提供Redis Cloud,这是一种完全管理的云服务,用于以高度可用且可扩展的方式托管和运行REDIS数据集。
Microsoft Azure- > IBM Bluemix提供工作负载调度程序服务。此服务使您可以将应用程序与安排工作流程的功能集成在一起。远远超出了cron,在蓝色内部和外部开发工作安排。根据您的需求,在您的应用程序中轻松地在应用程序中创建工作流以定期运行(例如,删除或更新文件时)。您可以使用
或使用API。Workload Scheduler用户界面 - 开始在这里调度作业。
- 另外,这是如何在IBM Bluemix上部署Laravel应用程序的方法。
>Microsoft Azure是另一个庞大的云平台,可让您轻松扩展应用程序。让我们开始在Azure上部署我们的《星球大战》应用程序。
>使用Microsoft Azure,您可以通过以下方式部署:>
> ftp。与云文件夹同步。
>本地git。
基于云的源控制服务,例如github或bitbucket。
>
在我们的情况下,我们将使用git进行部署。
>首先,使用Microsoft Azure创建一个帐户。
- dashboard
- >
单击左图的新
- >
单击Marketplace旁边的所有内容。
- >
>单击Web SQL,然后继续创建。
![]()
- >您将提示您选择订阅类型的报价。我选择了
>免费试用。这样,您将获得$ 200的Azure信用。
>- >给您的应用程序一个名称,然后创建一个SQL数据库。好吧,我们的应用不需要它,但由于某种原因,Azure迫使您创建它。
创建一个新的应用
>>现在已经创建了我们的应用程序,请单击左面板以查看您的应用程序。
- 新应用
>
>单击该应用程序,选择
>部署选项 ,然后单击GitHub上。- >
>授权访问您的存储库,选择项目和分支。就我而言,我有一个Azure分支。这就是我将用于将代码部署到Azure平台的分支。>
- 查看部署通知。
- 现在,浏览到http:// [yoursiteName] .azurewebsites.net。就我而言,是http://starwarzapp.azurewebsites.net。
默认情况下,哎呀!,有一个HTTP 500错误。发生了什么事?好的,我们需要再次设置环境变量。
>
>转到您的应用程序中的应用程序,单击应用程序设置,然后在右侧添加环境变量。>
现在抓取应用程序URL,在我的情况下,它是http://starwarzapp.azurewebsites.net/并添加到允许的oridins(cors),并在您的auth0 dashboard中允许回调url。
- >
>
,Azure部署对我们的composer.json或composer.lock文件无能为力。因此,没有安装软件包。现在返回到应用程序服务,单击您的应用程序,然后转到开发工具并选择扩展名。选择作曲家的扩展并同意法律条件。
>现在,对您的应用程序进行一些更改,然后再次推到GitHub。您应该看到它像这样部署:
![]()
现在再次查看您的应用程序。它应该活着和工作!
![]()
>数据库,缓存和cron作业
Microsoft Azure提供> azure redis Cache。它基于流行的开源Redis Cache。像这样的创建和使用很容易:
单击新>数据存储> redis Cache。
- 输入缓存的名称,选择该区域并创建它。
> - >查看有关如何使用它的文档。
>用于调度和运行任务,Azure提供了调度程序。它允许您:
>在Azure内部或外部呼叫服务。
>我们已经在部署应用程序时已经谈论过一些有关设置数据库的问题,但是让我们快速研究如何设置MySQL数据库。
- 在任何时间表上运行作业。
- >使用Azure存储队列进行长期运行或离线工作。
>- 调用Azure Service Bus队列。
- >查看如何使用调度程序创建和管理作业。
> >
>登录到Azure门户。
- >
>单击仪表板的左面板中的新建。选择市场中的数据存储,然后选择MySQL数据库。
>- 继续并配置您的新MySQL数据库。输入名称,选择您的订阅,位置并填写所需字段。创建!
- 连接到数据库。
- >更多的公司使用AWS(Amazon Web服务)来存储从图像和MP3文件到视频的各种数据,而不是任何其他云平台。实际上,像Uber,Spotify或Salesforce这样的许多组织完全使用Amazon Web服务 - 用于托管,部署和基础架构。 AWS有大量的开发产品。
laravel开发人员可以轻松地在Azure上为其应用程序配置MySQL数据库。
![]()
Amazon Web Services >我们将用于部署著名的星球应用程序的服务是Amazon Elastic Beanstalk。让我们开始。
如果您没有一个AWS帐户,请注册AWS帐户。
>- >
前往Elastic Beanstalk Console。- 创建一个新应用。
- >单击创建Web服务器。
![]()
- 创建网络服务器环境。
![]()
- >上传您的代码。 Elastic Beanstalk要求您上传代码库的zip文件。您可以手动将其拉动,但是我更喜欢从我的终端做到这一点:zip ../starwarsapp.zip -r *。
![]()
- 现在,将其上传到这样的AWS:
检查应用程序URL的可用性。我的看起来像这样:
>下一页允许我们配置数据库实例。我们的应用不需要一个,因此我们可以跳过。
>此步骤允许我们修改我们的配置详细信息。默认一个对我们的应用程序还可以。
现在,添加您的环境变量这样:
- 现在抓住URL,在我的情况下,是http://starwarzapp.us-west-2.elasticbeanstalk.com,并添加到允许的Origins(CORS),并允许在您的auth0仪表板中回电URL。确保您也将其添加为弹性beanstalk中的环境变量。
![]()
>添加权限这样:
>在启动之前查看信息。
启动。
>实时应用
>查看如何部署:
laravel应用程序到弹性豆stall。
- > cakephp应用程序到弹性豆stal。
- symfony2应用到弹性beanstalk。
- > wordpress网站到Elastic Beanstalk。
- > Drupal网站到Elastic Beanstalk。
- >数据库,缓存和cron作业
>您可以使用Amazon关系数据库服务(Amazon RDS)DB实例存储由应用程序收集和修改的数据。数据库可以附加到您的环境上,并通过弹性豆串管理,也可以在外部创建和管理。查看如何轻松地将DB实例添加到您的应用程序。
>用于缓存,Amazon Web Services提供ElasticAcce。它是一款Web服务,使其易于部署,操作和扩展云中的内存数据存储或缓存。 Amazon Elasticache支持两个开源内存中的内存引擎:
redis。
- > memcached。
Amazon Elasticache自动检测并替换失败的节点,减少与自我管理的基础架构相关的开销,并提供一个弹性的系统,以减轻过载数据库的风险,从而减慢网站并增加应用程序负载时间。通过与Amazon CloudWatch的集成,Amazon Elasticache为与您的Redis或Memcached节点相关的关键性能指标提供了增强的可见性。 > Airbnb,Healthguru,Placeiq和Tokyo Data Network等公司使用Elasticache在跨越HTML片段的多层缓存,昂贵的DB查询的结果,近代会话数据以及搜索结果。
>查看如何在此处安装PHP的Elasticache群集客户端。
这是关于构建具有Elasticache和Elastic Beanstalk的PHP访问者计数器的出色帖子由泰勒·奥特威尔(Taylor Otwell)创建的Laravel Forge是一个平台,可帮助您在几分钟内部署和启动应用程序。它为您带来了重型。 Forge照顾您的服务器在流行的云托管提供商(例如Linode,Digital Ocean和AWS)上。它最初是为Laravel应用程序构建的,但现在它几乎支持任何PHP应用程序。>您可以在Elastic Beanstalk上设置Cron工作。了解如何在Amazon Web Services(AWS)弹性Beanstalk上运行CRON Jobs。
laravel forgelaravel forge
除了配置服务器外,
它与Letsencrypt集成,以生成您的应用程序的免费SSL证书。
可以轻松管理作业和队列。
Matt Stauffer在部署您的第一个Laravel应用程序forge上有一篇惊人的帖子。>与您的团队合作,通过与同事共享服务器的管理仪表板。>
James Fairhurst还提供了有关使用Laravel Forge设置AWS服务器的绝佳指南。
Laracasts.com是最受欢迎的教育PHP平台,与Forge有关服务器管理系列。
与Envoyer一起,您可以执行:- 当然,我们在Laravel课程中提到了它,并且还用类似的深入教程介绍了它。
- > Envoyer
- Eunvoyer是一个允许零停机时间PHP部署的平台 - 这是Envoy的SaaS版本。它允许您与各种服务集成,例如GitLab,Slack,Bitbucket E.T.C.
- >无缝部署回滚。
- >部署到多个服务器。
- 监视Cron Jobs。
- 执行申请健康检查。
> Deployer
> Deployer是PHP的部署工具。它允许您执行以下操作:
>它可以与
- >并行运行任务。
回滚。 - >以食谱的形式创建部署脚本。
laravel ,symfony , cakephp ,
>经常询问有关在云中部署PHP应用程序的问题(常见问题解答)yiiframework ,> drupal ,和> magento 。查看有关与Deployer部署PHP应用程序的出色文章。> 结论 >我们无法涵盖部署PHP应用程序可用的所有不同选项。 PHP是多年来发展的企业语言,因此呼吁将PHP应用程序从本地机器部署到生产。希望本指南涵盖了将PHP应用程序部署到所有主要云提供商的所有基本需求。但是,我建议在学习部署PHP应用程序方面进行广泛的知识。 > >您如何处理部署?请让我在下面的评论部分中知道!> >在云中部署PHP应用程序的好处是什么?首先,它提供可扩展性。随着应用程序的增长,您可以轻松调整资源以满足需求。其次,它提供了成本效益。您只为使用的资源付费,与传统托管相比,这可以是可观的节省。第三,云托管提供更好的性能和速度。在全球数据中心的情况下,您的应用程序可以托管更靠近您的用户,从而减少延迟。最后,它提供了更好的可靠性和正常运行时间,因为您的应用程序不取决于单个服务器。
>>我如何为我的PHP应用程序选择正确对于您的PHP应用程序,取决于几个因素。这些包括您的应用程序,预算和技术专长的特定需求。一些云服务提供了更多的高级功能,但可能需要更多的技术知识才能有效使用。其他人可能更友好,但可能无法提供相同的自定义或控制水平。重要的是要彻底研究每个选项并考虑哪些功能和服务对您的特定需求最重要。
>在Google Cloud上部署PHP应用程序的步骤是什么?
>在Google Cloud上部署PHP应用程序涉及多个步骤。首先,您需要创建一个Google Cloud帐户并设置一个新项目。然后,您需要在本地计算机上安装Google Cloud SDK。接下来,您需要在app.yaml文件中配置应用程序的设置。之后,您可以使用GCLOUD应用Deploy命令部署应用程序。最后,您可以使用gcloud应用程序浏览命令在浏览器中查看您的应用程序。
>>如何确保云中的PHP应用程序的安全性?
>确保您的PHP应用程序的安全性在云中涉及多种措施。其中包括使用安全的编码实践,定期更新和修补软件,使用对运输和休息中的数据进行加密,实现强大的访问控件,并定期监视和审核您的系统以进行任何异常活动。>
什么是什么。像Cloudways这样的PHP托管平台的角色?>像Cloudways这样的PHP托管平台提供了一个托管环境,用于部署和运行您在云中的PHP应用程序。它照顾了云托管的许多技术方面,例如服务器设置,安全性,备份和更新,使您可以专注于开发应用程序。它还提供工具和功能来帮助您优化应用程序的性能和可扩展性。>
>如何将现有的PHP应用迁移到云?>将现有的PHP应用迁移到云涉及几个涉及几个步骤。首先,您需要选择云服务并创建一个帐户。然后,您需要准备应用程序进行迁移,这可能涉及重构代码或进行其他更改以确保与云环境的兼容性。接下来,您需要将应用程序部署到云中,对其进行彻底测试以确保其正常工作,然后将用户切换到新版本。在云中部署PHP应用程序面临什么挑战?在云中部署PHP应用程序的
可能会带来一些挑战。其中包括处理云环境的复杂性,确保应用程序和数据的安全性,管理成本和优化性能。重要的是要对这些挑战有良好的了解以及在开始部署之前如何解决这些挑战。
>
>我如何在云中优化我的PHP应用程序的性能?您的PHP应用程序中的应用程序可能涉及几种策略。这些包括使用缓存和其他增强性能功能,优化您的代码和数据库查询,并根据需要定期监视和调整资源。> Google Cloud PHP库的作用是什么?它们提供了一组API,您可以使用这些API来执行各种操作,例如存储和检索数据,运行查询以及管理资源。使用这些库可以使您更容易将应用程序与Google Cloud集成并利用其功能和服务。
什么是RunCloud,它如何帮助将PHP应用在云中部署? > RunCloud是一种云服务器管理工具,简化了在云中部署和管理PHP应用程序的过程。它提供了一个用户友好的接口以及一系列工具和功能,可帮助您设置,保护和优化云服务器。它支持多个云提供商,并允许您从单个仪表板管理所有服务器。
>
以上是在云中部署PHP应用程序的最终指南的详细内容。更多信息请关注PHP中文网其他相关文章!