部署到Heroku Cloudob直播app
编辑本页警告:您正在浏览的文档欧宝官网下载appob娱乐下载Symfony 3.1,现已不再维护。
读本页的更新版本用于Syob娱乐下载mfony 6.2(当前稳定版本)。
部署到Heroku Cloudob直播app
本文将逐步介绍如何将Symfony web应用程序部署到Heroku云平台。ob娱乐下载ob直播app其内容是基于原文赫鲁库出版。
设置
首先,建立一个新的赫拉库网站和Heroku签约或者用你的证件签到。然后下载并安装Heroku直到在您的本地计算机上。
你也可以查看在Heroku上开始使用PHP指南,以更熟悉在Heroku上使用PHP应用程序的细节。
准备申请材料
将Symfony应用程序ob娱乐下载部署到Heroku不需要对其代码进行任何更改,但需要对其配置进行一些小调整。
默认情况下,Symfony应用程ob娱乐下载序将登录到您的应用程序var / log /
目录中。这不是理想的,因为Heroku使用临时文件系统.在Heroku上,处理日志的最好方法是使用Logplex.将日志数据发送到Logplex的最佳方法是写入到STDERR
或STDOUT
.幸运的是,Symfob娱乐下载ony使用出色的Monolog库进行日志记录。因此,一个新的日志目标仅仅是对配置文件的更改。
打开应用程序/配置/ config_prod.yml
文件,找到独白/处理/嵌套
节(如果它还不存在,则创建它)并更改的值路径
从“% kernel.logs_dir % / % kernel.environment % . log”
来“php: / / stderr”
:
1 2 3 4 5 6 7 8
# app / config / config_prod.yml独白:#……处理程序:#……嵌套:#……路径:“php: / / stderr”
部署应用程序之后,运行Heroku原木——尾巴
在你的终端中保持来自Heroku的日志流是开放的。
在Heroku上创建一个新的应用程序
要创建一个新的Heroku应用程序,请使用CLI创建
命令:
1 2 3 4 5
$heroku创造了《mighty-hamlet-1981》在组织heroku……完成,堆栈是雪松http://mighty-hamlet-1981.herokuapp.com/ | git@heroku.com:mighty-hamlet-1981.git远程heroku添加
现在您已经准备好部署应用程序了,这将在下一节中解释。
在Heroku上部署应用程序
在你第一次部署之前,你还需要做三件事,如下所述:
1)创建一个Procfile
默认情况下,Heroku将启动一个Apache web服务器和PHP来服务应用程序。但是,有一种特殊的情况适用于Symfony应用程序:文档根目录位于ob娱乐下载web /
目录,而不是应用程序的根目录。
创建一个名为Procfile
(没有任何扩展)在应用程序的根目录,并添加以下内容:
1
Web: vendor/bin/heroku-php-apache2 Web /
请注意
如果你更喜欢使用Nginx,它也可以在Heroku上使用,你可以为它创建一个配置文件,并从你的Procfile中指向它Heroku的欧宝官网下载app文档:
1
web: vendor/bin/heroku-php-nginx -C nginx_app.conf
如果您喜欢在命令控制台上工作,请执行以下命令来创建Procfile
文件,并将其添加到存储库:
1 2 3 4 5
$回声"web: vendor/bin/heroku-php-apache2 web/"> Procfile$Git添加。$Git提交-m“Apache和PHP的Procfile”[master 35075db为Apache和PHP 1个文件更改,1个插入(+)
2)设置环境为prod
在一次部署中,Heroku在奔跑编写器安装—无需开发
安装应用程序所需的所有依赖项。然而,典型的post-install-commands在composer.json
例如,安装资产或清除(或预热)缓存,使用Symfony的运行ob娱乐下载dev
默认为环境。
这显然不是你想要的——应用程序在“生产”中运行(即使你只是用它做实验,或者作为一个登台环境),所以任何构建步骤都应该使用相同的方法刺激
还有环境。
值得庆幸的是,这个问题的解决方案非常简单:Symfony将选择一个名为ob娱乐下载ob娱乐下载SYMFONY_ENV
如果没有显式设置其他内容,则使用该环境。Heroku揭露了一切配置var作为环境变量,你可以发出一个命令来为你的应用程序部署做好准备:
1
$heroku配置:集ob娱乐下载SYMFONY_ENV =刺激
谨慎
注意依赖于composer.json
列于require-dev
在Heroku上部署时,不会安装section。如果您的Symfony环境依赖于这样的包,这可能会导致问题。ob娱乐下载解决方案是将这些包从require-dev
到需要
部分。
3)将你的代码推送给Heroku
接下来,是时候将应用程序部署到Heroku了。如果您是第一次这样做,您可能会看到如下消息:
1 2 3
主机“heroku.com(50.19.85.132)”的真实性无法建立。RSA密钥指纹为“8b:48:5e:67:0e:c9:16:47:32:f2:87:0c:1f:c8:60:ad”。您确定要继续连接(是/否)?
在这种情况下,您需要输入确认是的
和打<输入>
钥匙——最好是在你验证RSA密钥指纹是否正确.
然后,执行以下命令部署应用程序:
12 34 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45
$初始化存储库,完成.计数对象:130,完成.Delta压缩使用最多4个线程。压缩对象:100% (107/107),完成.写入对象:100% (130/130),70.88 KiB | 0 bytes/s,完成.总130 (delta 17),重用0 (delta 0) -----> PHP应用程序检测到----->设置运行时环境…—PHP 5.5.12—Apache 2.4.9—Nginx 1.4.6 ----->安装PHP扩展:—opcache(自动;捆绑,用“ext-opcache.ini”) ----->安装依赖项…编译器版本64ac32fca9e64eb38e50abfadc6eb6f2d0470039生成优化的自动装载创建“应用程序/配置/ parameters.yml”清空缓存为带有调试的开发环境真正的使用硬拷贝选项安装资产为ob娱乐下载Symfony\Bundle\FrameworkBundle into web/bundles/framework安装资产为Acme\DemoBundle into web/bundles/acmedemo正在安装资产为Sensio\Bundle\DistributionBundle into web/bundles/sensiodistribution ----->构建运行时环境…----->发现进程类型Procfile声明类型-> web ----->压缩…完成, 61.5MB ----->启动…完成, v3 http://mighty-hamlet-1981.herokuapp.com/部署到Heroku到git@heroku.com:mighty-hamlet-1981.git *[新分支]master -> master
就是这样!如果您现在打开浏览器,可以手动将其指向URLheroku创建
给你,或通过使用Heroku Toolbelt,应用程序将响应:
1 2
$《超级哈姆雷特》1981…完成
您应该在浏览器中看到您的Symfony应用程序。ob娱乐下载
谨慎
如果您使用Symfony标准版的新安装在Heroku上迈出第一步,您可能会遇到404 page not found错误。ob娱乐下载这是因为路线/
是由AcmeDemoBundle定义的,但是AcmeDemoBundle只在开发环境中加载(检查您的AppKernel
类)。试着打开/应用程序/例子
从AppBundle。
自定义编译步骤
如果您希望在构建期间执行额外的自定义命令,您可以利用Heroku的命令自定义编译步骤.假设你想要移除dev
从Heroku的生产环境中获取前端控制器,以避免潜在的漏洞。添加要删除的命令web / app_dev.php
作曲家的post-install-commands会工作,但它也会删除每个本地开发环境中的控制器作曲家安装
或作曲家更新
分别。相反,您可以添加一个自定义编写器命令命名编译
(这个键名是一个Heroku约定)脚本
部分composer.json
.下面列出的命令会挂钩到Heroku的部署过程中:
1 2 3 4 5 6 7
{“脚本”: {“编译”:【“rm web / app_dev.php”]}}
这对于在生产系统上构建资产也非常有用,例如使用Assetic:
1 2 3 4 5 6 7
{“脚本”: {“编译”:【“bin /控制台assetic:转储”]}}
node . js的依赖性
构建资产可能依赖于节点包,例如:uglifyjs
或uglifycss
用于资产缩减。部署过程中安装节点包需要安装节点。但目前,Heroku编译你的应用程序使用PHP构建包,这是自动检测存在composer.json
文件,不包括节点安装。因为Node.js的构建包优先级高于PHP的构建包(参见Heroku buildpacks),加上package.json
列出你的节点依赖项使Heroku选择node .js buildpack代替:
1 2 3 4 5 6 7 8 9 10
{“名称”:“myApp”,“引擎”: {“节点”:“0.12.x”},“依赖”: {“uglifycss”:“*”,“uglify-js”:“*”}}
在接下来的部署中,Heroku会使用Node.js的buildpack编译你的应用,然后安装你的npm包。另一方面,你的composer.json
现在被忽略。要用这两个构建包编译你的应用程序,Node.js而且PHP,你需要使用这两个构建包。要覆盖buildpack自动检测,你需要显式地设置buildpack:
1 2 3 4 5 6 7 8
$heroku buildpacks:集heroku / nodejs Buildpack集.应用程序的下一个版本将使用heroku/nodejs。运行git push heroku master使用此构建包创建一个新版本。$heroku buildpacks:集heroku/php——index 2 Buildpack集.应用程序的下一个版本将使用:heroku / nodejs 2。运行git push heroku master,使用这些构建包创建一个新的版本。
在下一个部署中,您可以从这两个构建包中受益。此设置还使您的Heroku环境能够使用基于节点的自动构建工具,例如咕哝着说或狼吞虎咽地吃.