问题标签 [envoyer.io]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
laravel - 是否可以将公共路径从当前版本复制到 laravel envoyer 的下一个版本?
我有一个使用 envoyer 进行部署的站点。
在我的网站上,用户可以保存图像/头像/等。这些图像被保存到 laravel 的公共路径中。/public/uploads/
这样做的问题是,当我部署更新时,composer 不会将新文件保存在/public/uploads
新的发布文件夹中。
每次推送新部署时,是否编写一个部署脚本,将当前版本中 /public/uploads 中的所有内容复制到新版本中?
php - 未捕获的 ReflectionException:特使部署中不存在类哈希
我像往常一样使用 envoyer 进行部署。需要注意的是,在我的本地主机开发过程中(当我切换 git 分支时).. 我遇到了这个错误:
[ReflectionException] 类 App\Http\Controllers\Admin\BatchUpdateStoresController 不存在
我通过清除路由缓存解决了它(请参阅 此处的详细信息)。
现在的问题是,当我在 envoyer 上部署时。我在 nginx 日志上收到此错误:
我尝试将文件夹全部删除/home/forge/default/envoyer/releases/20180306221058/bootstrap
.. 但这只会让情况变得更糟(即我什至没有收到 nginx 错误日志了)。
我该怎么办?
laravel - 为什么 Forge 队列使用已弃用的 queue:listen 命令?
背景
历史上,我们在运营时间部署时遇到了麻烦(我们的设置:我们在负载均衡器后面有两个 EC2 实例,每个实例都有自己的 beanstalkd 队列。每个实例都是使用 forge 配置的,我们使用 Envoyer 自动部署这两个实例。
我们的 Envoyer 有一个部署后脚本,它应该在每次部署后自动重新启动队列,以便队列中的作业可以更新以获取最新的代码更改:
问题是,当我们在运营时间进行部署时,系统中会随机发生异常情况。即使用我们的移动应用程序的人会突然停止接收推送通知(这是由我们的队列处理的 Laravel 作业)和其他奇怪的东西。
解决方法是使用 Forge 队列 UI 面板手动重新启动队列。但是这个修复通常需要一些时间才能工作,即有时在我们手动重新启动队列后 40 分钟事情开始恢复正常!
分析
我运行了这个实验,我 1. 运行了一个 Envoyer 部署,它执行了队列重启脚本,并观察了日志 2. 在 Forge 上手动重启了队列,然后观察了日志
Envoyer 部署前的日志:
Envoyer 部署后,手动队列重启前的日志:
Forge 手动重启后的日志
结论:所有 queue:work 命令都由 Envoyer php 命令重新启动artisan queue:restart
。然而,这些artisan queue:listen
命令只有在我们重新启动主管时才会重新启动(即通过手动 Forge ui)。
问题
为什么 Forgequeue:listen
已被弃用,但仍在使用?以上如何解释自动队列(队列:工作)重新启动脚本不够好,但重新启动主管/队列:监听可以完成这项工作?
php - Composer install 实际上并没有安装库
问题
这是一个奇怪的问题。我只是将它添加到我的 composer.json 文件中:
然而,当我运行时composer install
,该库没有安装:
什么都不返回。
所以每次我运行我的部署脚本时,我都会收到这个错误:
这是一个预期的错误,因为 Composer 忽略了我的maatwebsite/excel
库!
解决方法
我使用这些步骤来强制它工作:
但这显然是一个丑陋且昂贵的 hack(我已将其添加为envoyer自动部署中的 pre-hook),它每次都有效,但它为自动部署过程增加了很多时间。
参考
- 我的composer.json文件
- 我的composer.lock文件
问题
我如何运行 Composer 命令来强制它工作(但我也必须避免使用该composer update
命令,因为我不想在每次部署期间更新我的所有库,因为这会导致我的代码库发生不可预测的更新)
更新
我刚刚注意到我们版本上的这个库支持旧版本的 PHP - 这可能与它有关吗?
更新 2
运行composer require maatwebsite/excel
返回以下内容:
这是预期的,因为最新版本maatwebsite/excel
需要 laravel 5.5+,
但是当我运行时composer require maatwebsite/excel:2.1
,我仍然得到一个错误:
这很奇怪,因为它应该支持 Laravel 5.3(我的 Laravel):
但我的 PHP 版本是 7.1。
laravel - 使用自定义工匠命令的 Envoyer 部署失败
我在使用执行我创建的工匠命令的 envoyer 部署我的项目时遇到问题。
该命令获取我的所有用户,执行另一个工匠命令 ( $this->call('command')
) 并通过遍历所有用户来执行它的操作。
问题出在这里:
此命令在后台启动脚本。它手动执行没有任何问题,并且不会以超时结束(大约需要 1s~ 执行),但在 envoyer 中,它不会在部署步骤中停止运行,并且超时失败,尽管它执行完美。
附加信息:
出于我在后台运行脚本的原因:
我启动的脚本打开了一个套接字,他将 24/7 监听该套接字,直到用户手动取消它。
git - 合并后重用开发分支
Git新手在这里!这是场景:在 Laravel + Envoyer 中构建的应用程序用于部署。所以我有一个 master / develop 分支,第一个部署到 site.com,另一个部署到 dev.site.com
我在开发分支上开发了一项新功能,并在 dev.site.com 上进行了测试。所以我已经将开发分支合并到主分支中。现在似乎开发分支不再活动(任何更改都会影响主分支,反之亦然)。换句话说,它们不再是分开的。
我读过合并后重用分支不是一个好习惯,但在这种特定情况下,我需要再次拥有一个名为“develop”的分支。
我尝试删除开发分支并创建一个具有相同名称的新分支(如此处所建议)但没有成功:似乎旧的开发分支已恢复。
有什么建议吗?
composer-php - Laravel Envoyer 部署挂钩安装 Composer 依赖项失败
我们将 Envoyer 平台用于 Laravel 部署。
我们的问题是部署挂钩“安装 Composer 依赖项”在一台服务器上停止在 600 秒。
因此,部署从几天以来就没有通过。
我发现可以在 composer.json 中设置一个配置参数“process-timeout”,但没有任何反应。那不考虑。
我不知道我应该在哪里改变这个值或增加。
有人能帮我吗?
laravel - Composer 安装强制下载为 tar 而不是 zip
我们正在使用 envoyer 进行 laravel 项目。现在每次部署都需要将近 5 分钟。大约 40 年代下载并解压一个新版本。
安装 composer 依赖项大约需要 150 秒。我们发现它实际上是从 zipfile 的缓存中加载它。不幸的是,服务器不是专用的,因为我们发现 unzip 真的很慢。我们在具有专用硬件的服务器上测试了同样的东西,它真的很快。
我们想知道是否可以选择以 zip 以外的其他格式下载作曲家包。tar.gz 之类的东西?