备注:

    首先需要安装 elixir 环境
 
1. 基本项目说明
参考项目:
https://github.com/rongfengliang/phoenix-rest-demo
2. 项目说明
备注: 主要是插件的配置

 mix.exs 

  defp deps do
[
{:phoenix, "~> 1.3.2"},
{:phoenix_pubsub, "~> 1.0"},
{:phoenix_ecto, "~> 3.2"},
{:postgrex, ">= 0.0.0"},
{:mariaex, "~> 0.8.4"},
{:phoenix_html, "~> 2.10"},
{:phoenix_live_reload, "~> 1.0", only: :dev},
{:gettext, "~> 0.11"},
{:cowboy, "~> 1.0"},
{:distillery, "~> 1.5", runtime: false} # 需要添加的构建包
]
end
 
3. 使用
a. 初始化

首次使用需要进行环境的初始化

mix release.init

修改config/prod.exs

config :hello, Hello.Endpoint,
# http: [:inet6, port: {:system, "PORT"}],
http: [port: 4000],
cache_static_manifest: "priv/static/cache_manifest.json",
server: true # 比较重要的参数,启动的时候需要 b. 构建打包 mix release or MIX_ENV=prod mix release (生产环境建议) 备注: 可以指定环境 dev、 prod (默认为dev),实际中我们需要添加 MIX_ENV=prod mix release c. 使用生成的软件包 Interactive: _build/prod/rel/hello/bin/hello console
Foreground: _build/prod/rel/hello/bin/hello foreground
Daemon: _build/prod/rel/hello/bin/hello start
4. 生成项目结构
生成的项目在 _build/prod/rel/hello ,实际使用docker 或者类似的工具进行运行

备注:默认prod 版本,运行时环境也会为我们打包,运行是比较简单的,可以参考3.c

.
├── bin # 应用启动目录
├── erts-9.3 # 运行是环境
│ ├── bin
│ ├── include
│ │ └── internal
│ │ ├── gcc
│ │ ├── i386
│ │ ├── libatomic_ops
│ │ ├── ppc32
│ │ ├── pthread
│ │ ├── sparc32
│ │ ├── sparc64
│ │ ├── tile
│ │ ├── win
│ │ └── x86_64
│ ├── lib
│ │ └── internal
│ └── src
├── lib # 依赖的包
│ ├── asn1-5.0.5
│ │ ├── ebin
│ │ └── priv
│ │ └── lib
│ ├── compiler-7.1.5
│ │ └── ebin
│ ├── connection-1.0.4
│ │ └── ebin
│ ├── cowboy-1.1.2
│ │ └── ebin
│ ├── cowlib-1.0.2
│ │ ├── ebin
│ │ └── include
│ ├── crypto-4.2.1
│ │ ├── ebin
│ │ └── priv
│ │ ├── lib
│ │ └── obj
│ ├── db_connection-1.1.3
│ │ └── ebin
│ ├── decimal-1.5.0
│ │ └── ebin
│ ├── ecto-2.2.10
│ │ └── ebin
│ ├── eex-1.6.4
│ │ └── ebin
│ ├── elixir-1.6.4
│ │ └── ebin
│ ├── gettext-0.15.0
│ │ └── ebin
│ ├── hello-0.0.1
│ │ ├── consolidated
│ │ ├── ebin
│ │ └── priv
│ │ ├── gettext
│ │ │ └── en
│ │ │ └── LC_MESSAGES
│ │ ├── repo
│ │ │ └── migrations
│ │ └── static
│ │ ├── css
│ │ ├── images
│ │ └── js
│ ├── iex-1.6.4
│ │ └── ebin
│ ├── kernel-5.4.3
│ │ ├── ebin
│ │ └── include
│ ├── logger-1.6.4
│ │ └── ebin
│ ├── mariaex-0.8.4
│ │ └── ebin
│ ├── mime-1.2.0
│ │ └── ebin
│ ├── phoenix-1.3.2
│ │ ├── ebin
│ │ └── priv
│ │ ├── static
│ │ └── templates
│ │ ├── phoenix.gen.channel
│ │ ├── phoenix.gen.html
│ │ ├── phoenix.gen.json
│ │ ├── phoenix.gen.model
│ │ ├── phx.gen.channel
│ │ ├── phx.gen.context
│ │ ├── phx.gen.embedded
│ │ ├── phx.gen.html
│ │ ├── phx.gen.json
│ │ ├── phx.gen.presence
│ │ └── phx.gen.schema
│ ├── phoenix_ecto-3.3.0
│ │ └── ebin
│ ├── phoenix_html-2.11.2
│ │ ├── ebin
│ │ └── priv
│ │ └── static
│ ├── phoenix_pubsub-1.0.2
│ │ └── ebin
│ ├── plug-1.5.0
│ │ └── ebin
│ ├── poison-3.1.0
│ │ └── ebin
│ ├── poolboy-1.5.1
│ │ └── ebin
│ ├── postgrex-0.13.5
│ │ └── ebin
│ ├── public_key-1.5.2
│ │ ├── ebin
│ │ └── include
│ ├── ranch-1.3.2
│ │ └── ebin
│ ├── runtime_tools-1.12.5
│ │ ├── ebin
│ │ ├── include
│ │ └── priv
│ │ └── lib
│ ├── sasl-3.1.1
│ │ └── ebin
│ ├── ssl-8.2.5
│ │ └── ebin
│ └── stdlib-3.4.5
│ ├── ebin
│ └── include
└── releases # release 版本
└── 0.0.1
├── commands
├── hooks
│ ├── post_configure.d
│ ├── post_start.d
│ ├── post_stop.d
│ ├── post_upgrade.d
│ ├── pre_configure.d
│ ├── pre_start.d
│ ├── pre_stop.d
│ └── pre_upgrade.d
└── libexec
└── commands 同时在 releases/0.0.1 会有一个tar.gz 的包,这个是直接可以拷贝运行的软件包
 
5. 总结
总的来说,还是比较简单的,实际使用中我们可以集成docker,很方便
6 . 运行截图
 
7 . 参考资料
https://github.com/bitwalker/distillery
https://hexdocs.pm/phoenix/deployment.html
https://github.com/rongfengliang/phoenix-rest-demo
 
 
 
 

使用distillery 构建专业的 phoenix 项目软件包的更多相关文章

  1. 使用Maven构建RichFaces 4.x项目

    使用Maven构建RichFaces 4.x项目 目录 开始之前 第一步 - 创建Maven项目 第二布 - 添加依赖文件 第三步 - 配置RichFaces 第四步 - 创建显示页面 开始之前 本文 ...

  2. 三、使用Maven构建简单的java项目

    前边,我刚搭建了Maven环境,还有给大家推荐了学习资源,这个小节,我们来就来,,简单的玩玩maven. 1.所需工具: 1.Eclipse     2.apache-maven-3.3.9   3. ...

  3. yoeman构建Asp.net core项目并且实现分层

    在Mac上开发使用yoeman构建Asp.net core项目并且实现分层引用 1.Yoeman? yoeman是一个自动化脚手架工具.它提供很多generator,generator相当于Visua ...

  4. Maven构建真正的J2EE项目

    今天同事问起我眼下用Maven构建的多模块项目架构和曾经用Eclipse创建的Web项目的问题.以下将讲一下使用maven搭建多模块的J2ee项目,以及採用这样的方式搭建项目对日后项目的水平拆分和垂直 ...

  5. Gradle学习之构建java与web项目

    一.使用Gradle的java插件构建Java项目 1)Gradle插件包含了若干个接口定义和已有的任务项,语法结构:apply plugin:'插件名' ,此处我们定义插件 apply plugin ...

  6. eclipse构建maven的web项目(转载)

    eclipse构建maven的web项目 分类: java opensource2013-12-25 16:22 43人阅读 评论(0) 收藏 举报 maven框架webappwebeclipse 使 ...

  7. Gradle入门(3):构建第一个Java项目

    Gradle插件通过引入特定领域的约定和任务来构建你的项目.Java插件是Gradle自身装载的一个插件.Java插件提供的基本功能远比源代码编译和打包多.它为你的项目建立了一个标准的项目布局,并确保 ...

  8. Maven实现项目构建直接部署Web项目到Tomcat

    Maven实现项目构建直接部署Web项目到Tomcat配置如下: 1.Tomcat的用户及权限配置:在conf目录下,找到tomcat-users.xml,添加manager权限的用户. <ro ...

  9. Jenkins构建Maven多模块项目时,单独编译子模块,并且不触发构建其它模块

    一.Jenkins构建Maven多模块项目时,单独编译子模块 配置: 1.Root POM指向父pom.xml 2.Goals and options指定构建模块的参数:mvn -pl jsoft-w ...

随机推荐

  1. .Net Core 二级域名绑定到指定的控制器

    在说二级域名绑定之前,先说一下.net core中的区域,关于区域这一块儿在很久之前的博客中,已经提过,详见<03-dotnet core创建区域[Areas]及后台搭建>,在这篇博客中, ...

  2. python中如何剔除字符串

    问题: 过滤用户输入中前后多余的空白字符 ‘    ++++abc123---    ‘ 过滤某windows下编辑文本中的’\r’: ‘hello world \r\n’ 去掉文本中unicode组 ...

  3. 《深入理解mybatis原理1》 MyBatis的架构设计以及实例分析

    <深入理解mybatis原理> MyBatis的架构设计以及实例分析 MyBatis是目前非常流行的ORM框架,它的功能很强大,然而其实现却比较简单.优雅.本文主要讲述MyBatis的架构 ...

  4. IOS-程序员和设计师必备的20个CSS工具

    程序员和设计师必备的20个CSS工具   CSS工具是现今网站开发人员和设计人员使用的最必要和最重要的工具之一.这是因为这些CSS工具,可以为开发人员和设计人员简化手头的工作,大大减少web开发和设计 ...

  5. IOS-2016年最好的15个Web设计和开发工具

    设计师和开发者,web设计师和开发者遍地开花.这促使web开发人员也需要寻找最好的工具去设计出优于其他人的网站.作为一个web设计师或开发者,你必须寻找新的途径来提高自己的技能,提高自己的工作质量.下 ...

  6. day19 Models补充+缓存+信号+序列化+分析抽屉页面

    参考链接: http://www.cnblogs.com/wupeiqi/articles/5237704.html http://www.cnblogs.com/wupeiqi/articles/5 ...

  7. vue router使用query和params传参的使用

    传参是前端经常需要用的一个操作,很多场景都会需要用到上个页面的参数,本文将会详细介绍vue router 是如何进行传参的,以及一些小细节问题.有需要的朋友可以做一下参考,希望可以帮到大家. Vue ...

  8. 【转】线程池体系介绍及从阿里Java开发手册学习线程池的正确创建方法

    jdk1.7中java.util.concurrent.Executor线程池体系介绍 java.util.concurrent.Executor : 负责线程的使用与调度的根接口  |–Execut ...

  9. java程序设计基础篇 复习笔记 第七单元&&第八单元

    7.1 int[][] triArray{ {1}, {1,2}, {1,2,3}, }; 7.2 array[2].length 8.1 Unified Modeling Language:UML ...

  10. 内存保护机制及绕过方法——利用Ret2Libc绕过DEP之VirtualProtect函数

    利用Ret2Libc绕过DEP之VirtualProtect函数 ⑴.  原理分析: i.相关概念: VirtualProtect()函数: BOOL WINAPI VirtualProtect( _ ...