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 ...
随机推荐
- Python内置函数(41)——max
英文文档: max(iterable, *[, key, default]) max(arg1, arg2, *args[, key]) Return the largest item in an i ...
- 7.Ajax
优先级 如果发送的是[普通数据] jQuery XMLHttpRequest iframe 如果发送的是[文件] iframe jQuery(FormData) XMLHttpRequest(Form ...
- Webpack+Vue如何导入Jquery和Jquery的第三方插件
创建一个jquery-vendor.js文件 import $ from 'jQuery'; console.log($); window.$ = $; window.jQuery = $; expo ...
- SLAM入门之视觉里程计(1):特征点的匹配
SLAM 主要分为两个部分:前端和后端,前端也就是视觉里程计(VO),它根据相邻图像的信息粗略的估计出相机的运动,给后端提供较好的初始值.VO的实现方法可以根据是否需要提取特征分为两类:基于特征点的方 ...
- 5分钟入门git模式开发
本文由云+社区发表 作者:唐维黎 导语 基于gui工具TortoiseGit让你快速进入git开发模式. 目前项目已逐步从svn移步到git开发模式,其中也针对git统一协议了适合git的开发规范, ...
- 痞子衡嵌入式:飞思卡尔i.MX RT系列MCU启动那些事(1)- Boot简介
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是飞思卡尔i.MX RT系列MCU的BootROM功能简介. 截止目前为止i.MX RT系列已公布的芯片有三款i.MXRT105x, i. ...
- 痞子衡嵌入式:飞思卡尔i.MX RT系列MCU启动那些事(9)- 从Parallel NOR启动
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是飞思卡尔i.MX RT系列MCU的Parallel NOR启动. 上一篇讲i.MXRT从Raw NAND启动的文章 从Raw NAND启 ...
- C#_asp.net mvc 验证码功能的具体实现
@using (Html.BeginForm("Login", "HomePage",FormMethod.Post)) { <h2>登录</ ...
- 分享一些 Windows 平台上的神器
下面分享一些 Windows 平台上日常开发使用的软件,有些软件我自认为是神器,可以大大提高效率. 编辑器类软件 IntelliJ IDEA IntelliJ IDEA 内部集成 Java 开发环境, ...
- Form提交表单后页面刷新不跳转的实现
<form action="" id="" method="post" target="nm_iframe"> ...