问题标签 [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.

0 投票
0 回答
124 浏览

php - Json 响应正在制动/部分返回 - Laravel 5.3

我有 JSON 数据。如果我dd()的响应我可以看到完整的 json,但如果我将它作为 JSON 响应返回,则 json 正在制动/部分返回/截断,而且它也不是有效的 json。屏幕截图 - JSON 响应结束.以下是我正在使用的代码

我有一个宅基地安装。和一个登台环境。在本地/宅基地一切正常。响应完全返回。登台是一个特使服务器。那里的响应被截断/制动/部分返回。可能是什么问题。?

0 投票
1 回答
241 浏览

laravel - 是否可以将公共路径从当前版本复制到 laravel envoyer 的下一个版本?

我有一个使用 envoyer 进行部署的站点。

在我的网站上,用户可以保存图像/头像/等。这些图像被保存到 laravel 的公共路径中。/public/uploads/

这样做的问题是,当我部署更新时,composer 不会将新文件保存在/public/uploads新的发布文件夹中。

每次推送新部署时,是否编写一个部署脚本,将当前版本中 /public/uploads 中的所有内容复制到新版本中?

0 投票
2 回答
5357 浏览

php - 未捕获的 ReflectionException:特使部署中不存在类哈希

我像往常一样使用 envoyer 进行部署。需要注意的是,在我的本地主机开发过程中(当我切换 git 分支时).. 我遇到了这个错误:

[ReflectionException] 类 App\Http\Controllers\Admin\BatchUpdateStoresController 不存在

我通过清除路由缓存解决了它(请参阅 此处的详细信息)。

现在的问题是,当我在 envoyer 上部署时。我在 nginx 日志上收到此错误:

我尝试将文件夹全部删除/home/forge/default/envoyer/releases/20180306221058/bootstrap.. 但这只会让情况变得更糟(即我什至没有收到 nginx 错误日志了)。

我该怎么办?

0 投票
0 回答
639 浏览

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已被弃用,但仍在使用?以上如何解释自动队列(队列:工作)重新启动脚本不够好,但重新启动主管/队列:监听可以完成这项工作?

0 投票
3 回答
7050 浏览

php - Composer install 实际上并没有安装库

问题

这是一个奇怪的问题。我只是将它添加到我的 composer.json 文件中:

然而,当我运行时composer install,该库没有安装:

什么都不返回。

所以每次我运行我的部署脚本时,我都会收到这个错误:

这是一个预期的错误,因为 Composer 忽略了我的maatwebsite/excel库!

解决方法

我使用这些步骤来强制它工作:

但这显然是一个丑陋且昂贵的 hack(我已将其添加为envoyer自动部署中的 pre-hook),它每次都有效,但它为自动部署过程增加了很多时间。

参考

问题

我如何运行 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。

0 投票
1 回答
347 浏览

laravel - 使用自定义工匠命令的 Envoyer 部署失败

我在使用执行我创建的工匠命令的 envoyer 部署我的项目时遇到问题。

该命令获取我的所有用户,执行另一个工匠命令 ( $this->call('command')) 并通过遍历所有用户来执行它的操作。

问题出在这里:

此命令在后台启动脚本。它手动执行没有任何问题,并且不会以超时结束(大约需要 1s~ 执行),但在 envoyer 中,它不会在部署步骤中停止运行,并且超时失败,尽管它执行完美。

附加信息:
出于我在后台运行脚本的原因:
我启动的脚本打开了一个套接字,他将 24/7 监听该套接字,直到用户手动取消它。

0 投票
2 回答
1205 浏览

git - 合并后重用开发分支

Git新手在这里!这是场景:在 Laravel + Envoyer 中构建的应用程序用于部署。所以我有一个 master / develop 分支,第一个部署到 site.com,另一个部署到 dev.site.com

我在开发分支上开发了一项新功能,并在 dev.site.com 上进行了测试。所以我已经将开发分支合并到主分支中。现在似乎开发分支不再活动(任何更改都会影响主分支,反之亦然)。换句话说,它们不再是分开的。

我读过合并后重用分支不是一个好习惯,但在这种特定情况下,我需要再次拥有一个名为“develop”的分支。

我尝试删除开发分支并创建一个具有相同名称的新分支(如此处所建议但没有成功:似乎旧的开发分支已恢复。

有什么建议吗?

来自 bitbucket 的屏幕截图

0 投票
1 回答
491 浏览

composer-php - Laravel Envoyer 部署挂钩安装 Composer 依赖项失败

我们将 Envoyer 平台用于 Laravel 部署。

我们的问题是部署挂钩“安装 Composer 依赖项”在一台服务器上停止在 600 秒。

因此,部署从几天以来就没有通过。

我发现可以在 composer.json 中设置一个配置参数“process-timeout”,但没有任何反应。那不考虑。

我不知道我应该在哪里改变这个值或增加。

有人能帮我吗?

0 投票
0 回答
358 浏览

laravel - Composer 安装强制下载为 tar 而不是 zip

我们正在使用 envoyer 进行 laravel 项目。现在每次部署都需要将近 5 分钟。大约 40 年代下载并解压一个新版本。

安装 composer 依赖项大约需要 150 秒。我们发现它实际上是从 zipfile 的缓存中加载它。不幸的是,服务器不是专用的,因为我们发现 unzip 真的很慢。我们在具有专用硬件的服务器上测试了同样的东西,它真的很快。

我们想知道是否可以选择以 zip 以外的其他格式下载作曲家包。tar.gz 之类的东西?

0 投票
0 回答
471 浏览

php - 为什么 Envoyer 部署后无法重启我的 PHP?

我正在使用 Envoyer 在 CentOS 服务器上为我的 Laravel 5 项目设置部署。

我已经在服务器上安装了 php 7.3。

要手动重启 php-fpm,我使用命令systemctl restart php-fpm

但是,为了让 Envoyer 重新启动 php,它使用的是/bin/systemctl reload php7.3-fpm.service.

如何让 Envoyer 使用systemctl restart php-fpm或重命名我的 php 以重新启动/bin/systemctl reload php7.3-fpm.service

以下是 envoyer 部署摘要的屏幕截图