问题标签 [edeliver]
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.
deployment - Edeliver 无法开始发布
在本地运行mix edeliver version production
时失败并显示以下输出
错误很明显,因为可执行文件位于:~/my_app.io/my_app/_build/prod/rel/my_app/bin
我也无法运行任何start/stop/restart
etc 命令
部署是成功的,因为当我 ssh 并运行它的启动命令时。
我想知道是否有人可以指出我缺少的一些配置参数的方向,因为本地命令效率更高。
elixir - 在生产模式下在 Phoenix 中读取文件
我有 Phoenix 应用程序(我使用 --api 标志创建它),它有一些额外的数据来处理我存储在priv/data/filters.csv
.
所以它在dev
模式下工作正常,我可以像这样读取这个文件:File.stream!("priv/data/filters.csv")
但是一旦使用mix edeliver update
这个文件交付应用程序就无法再访问了。
我可以在 build 目录中看到这个文件夹,但是应用交付后没有这个文件夹priv
。我不确定为什么它没有被复制到传递文件夹。
我做错了什么?我需要在交付过程后复制这些文件吗?在哪里可以存储我必须在 prod 模式下使用的文件?
azure - Edeliver 在随机 TCP 端口上启动 Phoenix/Elixir 应用程序
我们正在尝试将我们的 Phoenix Web 应用程序部署到 Linux VM(在我们的例子中是在 Azure 上),edeliver
我们已经使用并记录了步骤:
https ://github.com/dwyl/learn- 将“基本”博客应用程序部署到 Azure microsoft-azure#part-2-deploying-your-applicationedeliver
当我们在
使用它的实例上手动运行(“真正的”)应用程序时:httpsMIX_ENV=prod mix phoenix.server
://github.com/nelsonic/healthlocker运行良好!
当我们使用以下命令将应用程序部署并运行到 Azure 实例时:
我们收到一个肯定的确认消息:
但是,当我们按照checks-running-services-on-linux 的netstat -plnt
建议运行时,
我们注意到正在随机TCP 端口上启动 Phoenix 应用程序:edeliver
在这种情况下,应用程序在 PORT 上运行38863
,即使我们的prod.exs
配置文件已将PORT硬编码为,4000
并且我们有一个环境变量可以按照说明4000
在我们的.profile
文件中设置它(以防万一)。
所以我的问题是:
为什么在随机edeliver
TCP 端口上启动 Phoenix 应用程序...?
和
如何在edeliver
PORT 上启动应用程序4000
?
我们.deliver/config
在 GitHub 上。
我们已尝试按照@dogbert 的说明
阅读日志:如何查看使用 Edeliver 部署的 Phoenix Web 应用程序中的生产日志?
但既没有也没有让我们变得更聪明...... :-(/home/{username}/{appname}/var/log
erlang.log.1
run_erl.log
任何帮助理解这一点将不胜感激!(请&谢谢!)
注意:可悲的是,虽然这个 Q: Edeliver - 成功部署后无法访问端口 4000 听起来很相似,但该解决方案对我们不起作用(我们尝试过)
deployment - 如何避免 Edeliver 部署错误:“vm.args:没有这样的文件或目录”?
语境
我们正在尝试使用edeliver
将 Phoenix Web 应用程序的“热升级”部署到远程虚拟机实例。
我们的目标是每次都构建应用程序的“升级”版本,以便应用程序可以在生产中“热”升级而不会出现任何停机时间。
我们已经成功地在“Hello World”凤凰应用程序上进行了这个“热升级”: https ://github.com/nelsonic/hello_world_edeliver ,它是在构建通过时从 Travis-CI自动部署的。见:https ://travis-ci.org/nelsonic/hello_world_edeliver/builds/259965752#L1752
因此,理论上这种技术应该适用于我们的“真实”应用程序。
尝试使用 Edeliver 部署“真正的”Phoenix 应用程序
运行以下命令(构建升级):
即“从以前的 git 版本升级到当前版本”
到目前为止,一切都很好。“发布成功搭建! ”
错误:vm.args: No such file or directory
当我们尝试部署升级时:
注意:我们有一个小 bash 脚本,它读取可用的最新升级版本
.deliver/releases
并部署它:version.sh
问题:
有没有办法忽略文件的缺失vm.args
并继续部署?
或者如果需要文件来完成部署,是否有一些关于如何创建文件的文档?
注意:我们已经阅读了酿酒厂“运行时配置”文档:https ://github.com/bitwalker/distillery/blob/master/docs/Runtime%20Configuration.md ,遗憾的是没有明智的......
附加信息
环境
- 本地主机:运行 Elixir 1.4.2 的 Mac
- 构建主机:运行 Elixir 1.4.5 的Ubuntu 16.04.2 LTS
mix.exs
文件:https ://github.com/healthlocker/healthlocker/blob/continuous-delivery/mix.exsedeliver
版本:1.4.4
- 构建工具:
distillery
版本:1.4.0
- 伞项目:是的。
elixir - 与酿酒厂一起交付:如何设置“开始”命令以使用 systemctl
我正在使用edeliver
由distillery
.
我还成功地创建了systemd.service
从命令行启动、停止、重新启动等发布的文件。
但是该mix edeliver start production
命令似乎systemd
通过普通的旧好的bin/my_app start
shell 命令绕过了发行版。我想要的是systemd
始终使用,即使是热上传,因为它(不像upstart
)确实提供了reload
功能。
我找不到我该告诉谁来systemd
[重新]开始发布。应该是delivery
战略吗?还有什么?我知道这个问题不适合 SO,但我只是迷路了。
那么:我可以强制使用edeliver
来启动发布吗?如果是,如何?distillery
systemd
elixir - 混合任务“发布”未找到错误
我正在使用 edeliver 为我的 Elixir/Phoenix 应用程序设置一个 Ubuntu 16.04 服务器,当时 edeliver 失败并显示错误消息** (Mix) The task "release" could not be found
以及退出代码 1。如果我去我的构建服务器,git pull 我的应用程序并运行MIX_ENV=prod mix release
或mix release
在获得依赖项之后运行, 我犯了同样的错误。
但是,相同的应用程序在本地运行没有任何问题。
我的 erlang 版本erts-9.0
和 elixir 版本1.5.5
都在服务器和我的本地计算机上。十六进制版本在0.16.1
.
Phoenix 是使用以下命令安装的:mix archive.install https://github.com/phoenixframework/archives/raw/master/phx_new.ez
.
这是我的mix.exs
文件。
我的 edeliver 配置文件.deliver/config
如下:
elixir - Edeliver/Distillery 因“bash: line 10: mix: command not found”错误而失败?
运行时出现此错误mix edeliver build release production --verbose
但是当我登录服务器时,Elixir(以及 Mix)似乎安装得很好。
它似乎工作正常。Edeliver 找不到我的 Elixir 安装有什么问题?我使用 asdf 版本管理器来安装 Elixir 和 Erlang。
elixir - 迁移时使用 edeliver 部署 phoenix 失败
当我运行时,mix edeliver migrate production
我收到此错误:
我做了 remote_console 并Application.get_all_env(:example)
检查了数据库详细信息,它们是正确的。我正在同一台服务器上部署另一个 phoenix 应用程序,并且数据库正常工作。
我尝试在两个应用程序上更改池大小,但没有帮助。
我想我可能做错了什么,但由于接线错误而无法查明。
elixir - 问题设置生产端口号 - (RuntimeError) 需要设置 PORT 环境变量
我正在使用 edeliver 在 aws 上进行部署。部署运行良好,但是当我尝试在控制台中使用 访问该站点时curl localhost:8888
,出现connection refused
错误。
如果我尝试使用 启动应用程序./rel/bin/app_name console
,我会得到一个(RuntimeError) expected the PORT environment variable to be set
. 然而我的config/prod.exs
样子是这样的。
我在这里想念什么?如果我PORT=8888
在手动启动之前设置 a 就可以了,但我宁愿用 edeliver 自动启动
mysql - 使用 edeliver 迁移数据库时出错
我一直使用 edeliver 来部署我的应用程序,但在我的新应用程序上,我遇到了一个奇怪的错误。
当我运行时mix edeliver migrate production
,我收到以下响应:
但是当我键入mix edeliver restart production
后跟迁移命令时,一切正常。为什么会这样?