phoenix API服务发布
概述
Elixir 的 Phoenix 框架对于开发 Web 应用非常方便,不仅有 RoR 的便利,还有 Erlang 的性能和高并发优势。 但是应用的发布涉及到 Erlang 和 Elixir 环境,部署不是那么方便,特别是很多 package 需要访问国外的服务器。
因此,如果能像 golang 那样,把整个应用打包成一个可执行的二进制,部署时会方便很多。 打包后不仅包含应用引用的 packages,也包含 erlang 的运行环境。
使用 distillery 就可以完成需求。 注 这里打包的是 API 服务,也就是不包含前端的部分。
distillery 打包
distillery 提供丰富了 API,除了打包,还有升级/降级,代码热替换等功能,这里我们只介绍打包的功能。
创建示例工程
$ mix phx.new hello --no-brunch --no-ecto
只是实验 phoenix 工程的打包功能,所以这里不安装前端的依赖,也不安装数据库相关依赖。
创建一个简单的 api lib/hello_web/router.ex
scope "/api", HelloWeb do
pipe_through(:api)
get("/", PageController, :api)
end
lib/hello_web/controllers/page_controller.ex
def api(conn, _params) do
json(conn, %{result: "success"})
end
安装 distillery
mix.exs 中的 deps 中添加:
defp deps do
[
...
{:distillery, "~> 1.5", runtime: false}
]
end
然后在 hello 工程目录下执行:
mix deps.get
执行成功的话,在命令行界面上可以看到安装了 distillery 依赖。
配置 distillery 相关
首先,生成配置文件
mix release.init
这个命令生成的 rel/config.exs 没有什么要修改的。
修改 config/prod.exs
config :hello, HelloWeb.Endpoint,
server: true,
http: [port: 4001],
url: [host: "localhost", port: 4001]
这里写死了 port,也可以改成从环境变量中读取。
发布工程
MIX_ENV=prod mix release
编译成功后,在 _build/prod/rel/hello/releases/ 文件夹下生成一个 hello.tar.gz 包,这个包就可以直接部署在其他机器上。 如果默认配置,version 就是 0.0.1
部署运行
将生成的 hello.tar.gz 放到其他机器也可以直接运行,不用安装 erlang 和 elixir 环境。
cd /home
mkdir hello
tar zxvf hello.tar.gz -C hello
cd hello
./bin/hello foreground
总结
distillery 的功能远不止此,更多的功能可以参考:https://hexdocs.pm/distillery/getting-started.html
phoenix API服务发布的更多相关文章
- arcgis api for js 之网络分析服务发布
1.引言 百度地图上有这样的功能:点击两个点,地图上会显示对两个点的路径规划.这个功能能否利用 arcgis api 实现呢?答案是肯定的.不过在实现之前,我们需要将数据发布为网络分析服务,接下来我将 ...
- motan源码分析一:服务发布及注册
motan是新浪微博开源的服务治理框架,具体介绍请看:http://tech.sina.com.cn/i/2016-05-10/doc-ifxryhhh1869879.shtml. 本系列的文章将分析 ...
- 【百度地图API】发布静态图API啦!只需一个网址,即可展示定制百度地图!
原文:[百度地图API]发布静态图API啦!只需一个网址,即可展示定制百度地图! 摘要: 百度地图静态图API!您无须执行任何“特殊”操作便可在网页上显示此图片. 不需要 JavaScript.我们只 ...
- SOFA 源码分析 —— 服务发布过程
前言 SOFA 包含了 RPC 框架,底层通信框架是 bolt ,基于 Netty 4,今天将通过 SOFA-RPC 源码中的例子,看看他是如何发布一个服务的. 示例代码 下面的代码在 com.ali ...
- dubbo源码之服务发布与注册
服务端发布流程: dubbo 是基于 spring 配置来实现服务的发布的,对于dubbo 配置文件中看到的<dubbo:service>等标签都是服务发布的重要配置 ,对于这些提供可配置 ...
- .net core实践系列之短信服务-Sikiro.SMS.Api服务的实现
前言 上篇<.net core实践系列之短信服务-架构设计>介绍了我对短信服务的架构设计,同时针对场景解析了我的设计理念.本篇继续讲解Api服务的实现过程. 源码地址:https://gi ...
- 深入学习Motan系列(二)——服务发布
闯关经验: 袋鼠走过了第一关,顺利搭建出了Demo,信心爆棚.不过之后,心想怎么去研究这个框架呢.查了一下,官方文档,好像没什么东西可以研究啊.后来,又搜了搜博客,因为这是微博的框架嘛,所以搜索时用百 ...
- SpringCloud之Eureka:服务发布与调用例子
Eureka是Netflix开发的服务发现框架,本身是一个基于REST的服务,主要用于定位运行在AWS域中的中间层服务,以达到负载均衡和中间层服务故障转移的目的. SpringCloud将它集成在其子 ...
- Dubbo 系列(05-1)服务发布
目录 Dubbo 系列(05-1)服务发布 Spring Cloud Alibaba 系列目录 - Dubbo 篇 1. 背景介绍 1.1 服务暴露整体机制 2. 源码分析 2.1 前置工作 2.2 ...
随机推荐
- 【从零开始自制CPU之学习篇00】开篇
从今天开始决定用面包板制作一个8位的CPU,实现几个简单的指令.我给自己分两大部分计划,第一部分是学习制作CPU的理论知识,第二部分是实践.并打算实施计划的同时用博客的方式记录下来.理论知识的部分重点 ...
- Nginx学习系列三Nginx的启动、停止、修改配置文件后重启
1.启动Nginx 命令规则:Ngxin的安装地址 -c Nginx的安装地址下的配置文件地址 注意:一般都在root权限下进行Nginx的启动 2.停止Nginx (1).从容停止 第一步:查看Ng ...
- Hystrix介绍
Hystrix是什么 在分布式环境中,许多服务依赖项中的一些必然会失败.Hystrix是一个库,通过添加延迟容忍和容错逻辑,帮助你控制这些分布式服务之间的交互.Hystrix通过隔离服务之间的访问点. ...
- JS 中 原生方法 (二) --- 数组 (修---添加ES6新增)
const arr = [1, 2, 3, 5, 'a', 'b'] /** * * length * 这个只能被 称之为 数组的原生属性, 返回 一个 number * arr.length */ ...
- 服务测试碰钉子Server GC
如果发现你的dotnet core服务并发上不去,但cpu资源还比较充足那就要注意了!因为这很有可能是你没有设置一个运行项导致...,下面要提到的就是GC.Server这玩意,实际上项目编译中并没有这 ...
- C#3.0 Lamdba表达式与表达式树
Lamdba表达式与表达式树 Lamdba表达式 C#2.0中的匿名方法使得创建委托变得简单起来,甚至想不到还有什么方式可以更加的简化,而C#3.0中的lamdba则给了我们答案. lamdba的行为 ...
- List-ArrayList集合基础增强底层源码分析
List集合基础增强底层源码分析 作者:Stanley 罗昊 [转载请注明出处和署名,谢谢!] 集合分为三个系列,分别为:List.set.map List系列 特点:元素有序可重复 有序指的是元素的 ...
- 机器学习之决策树一-ID3原理与代码实现
决策树之系列一ID3原理与代码实现 本文系作者原创,转载请注明出处:https://www.cnblogs.com/further-further-further/p/9429257.html 应用实 ...
- Java读取Excel指定列的数据详细教程和注意事项
本文使用jxl.jar工具类库实现读取Excel中指定列的数据. jxl.jar是通过java操作excel表格的工具类库,是由java语言开发而成的.这套API是纯Java的,并不依赖Windows ...
- Jenkins结合.net平台综合之监听git仓库并自动摘取最新代码编译
前面章节我们讲解了Jenkins结合.net平台工具以及一些第三方工具实现项目自动还原,自动编译,自动测试和自动发布.然而实现自动化还有一个关键的步骤就是监听源码仓库变化然后从仓库拉取最新代码,然后再 ...