基础知识

1.erlang语言入门

看<>,更多细节需要看手册。然后手册也需要融会贯通,这一步比较费劲。

官方手册地址:点击打开链接

2.rebar构建工具

使得编写符合OTP框架的应用和发布程序变得简单很多。网上各种教程错误白出,让我苦不堪言。官方教程也语焉不详,可能是我理解能力比较差。我用的rebar 是2012-02-21时从官网下载的版本。rebar版本之间还是有不同的

myproject     ------------工程根目录,rebar执行文件放在此处

|-- apps     ------------存放应用的目录,下面可以存放多个应用的目录

| `-- echo_serv ---------echo_serv服务器代码目录

| |-- ebin ---------编译之后的存放beam文件目录

| `-- src ---------源代码目录

`-- rel -------------发布程序用的文件夹

`-- files -------------发布过程中自动产生的文件夹

这是进行编译和发布之后的目录结构,下面从头开始进行说明.

1. 初始化

$mkdir myproject

$cd myproject

2.rebar执行文件拷贝到myproject目录下。rebar获取方法网上教程很多,没有问题。

3. 创建应用模板, 应用的名字必须和文件夹名字相同(echo_serv)

$mkdir -p apps/echo_serv

$cd apps/echo_serv

$ ../../rebar create-app appid=echo_serv

这是就会在echo_serv下创建src目录,并生成三个文件

`-- src

|-- echo_serv.app.src

|-- echo_serv_app.erl

`-- echo_serv_sup.erl

4.在myproject目录下新建文件rebar.config,内容如下,指明要编译的目录

{sub_dirs, ["apps/echo_serv","rel"]}.5.编译,则会在echo_serv中生成ebin目录,并存放输出的beam文件

./rebar compile

6.发布程序

$mkdir rel

$cd rel

rel$../rebar create-node nodeid=mynode这一步mynode名字取什么都没有关系。这时rel文件夹中会多出来reltool.config文件和file文件夹

reltool.config文件需要修改一下,如下

{sys, [

{lib_dirs, ["../apps"]},

{erts, [{mod_cond, derived}, {app_file, strip}]},

{app_file, strip},

{rel, "mynode", "1",

[

kernel,

stdlib,

sasl,

echo_serv

]},

{rel, "start_clean", "",

[

kernel,

stdlib

]},

{boot_rel, "mynode"},

{profile, embedded},

{incl_cond, exclude},

{excl_archive_filters, [".*"]}, %% Do not archive built libs

{excl_sys_filters, ["^bin/.*", "^erts.*/bin/(dialyzer|typer)",

"^erts.*/(doc|info|include|lib|man|src)"]},

{excl_app_filters, ["\.gitignore"]},

{app, sasl, [{incl_cond, include}]},

{app, stdlib, [{incl_cond, include}]},

{app, kernel, [{incl_cond, include}]},

{app, echo_serv, [{incl_cond, include}]}

]}.

{target_dir, "mynode"}.

{overlay, [

{mkdir, "log/sasl"},

{copy, "files/erl", "\{\{erts_vsn\}\}/bin/erl"},

{copy, "files/nodetool", "\{\{erts_vsn\}\}/bin/nodetool"},

{copy, "files/mynode", "bin/mynode"},

{copy, "files/sys.config", "releases/\{\{rel_vsn\}\}/sys.config"},

{copy, "files/mynode.cmd", "bin/mynode.cmd"},

{copy, "files/start_erl.cmd", "bin/start_erl.cmd"},

{copy, "files/vm.args", "releases/\{\{rel_vsn\}\}/vm.args"}

]}.

修改完毕之后就可以产生发布文件了。这一步之前代码一定要编译完成

rel$../rebar generate

这时在rel文件夹下产生mynode目录,将mynode文件夹打包,就可以放到其他机器任意目录下解包执行了。

rel$./mynode/bin/mynode console

使用start选项启动程序时,mynode脚本会使用 ./mynode/etc/vm.args中的参数作为erl的启动参数。要想修改vm.args文件中的默认参数,需要重新编译rebar,使用新的rebar重新执行../rebar generate。具体是修改rebar源码中的/priv/templates/simplenode.vm.args。再有个方法就是使用自己的template。自己的template放到~/.rebar/templates,然后

rebar create template=mytemplate

用rebar来在线升级

otp15B的版本中有个bug会导致systools:make_relup失败,需要修改otp15B源码进行修改,

修改看此链接点击打开链接,关于这个问题的讨论点击打开链接

错误表现如下,大体上是由于.app文件里start_phases设置为undefined

??==> rel (generate-upgrade)

ERROR: Systools [systools:make_relup/4] aborted with: [{error_reading,

{sasl,

{{bad_param,....

修改完毕编译安装就可以用rebar来进行热代码更新了。

过程同官方点击打开链接,操作在rel目录下进行。截止发稿时期,rebar还不能产生降级(downgrade)的文件,只支持升级(upgrade)。升级也有诸多限制,目前只支持add,remove,update,复杂的升级操作需要手动修改

erlang rebar 配置mysql_使用rebar构建erlang工程,手把手入门版相关推荐

  1. erlang rebar 配置mysql_Erlang打包工具rebar安装使用

    Rebar--Erlang构建工具,可以方便的编译测试Erlang应用程序和发布. 一.Rebar的安装 1.在页面https://bitbucket.org/basho/rebar/download ...

  2. erlang rebar 配置mysql_Erlang Rebar 使用指南之四:依赖管理

    Erlang Rebar 使用指南之四:依赖管理 全文目录: 本章链接: 1 rebar依赖定义 Rebar取得和构建符合OTP/Rebar规范的项目.如果项目包含子项目,Rebar会自动递归地构建它 ...

  3. erlang使用c语言开发的吗,Erlang语言作者告诉你什么才是编程最好的方法

    我是个守旧派 - 你不需要任何强大的开发工具.只需要一个文本编辑器和一个erlang shell. 打开你的文本编辑器: 输入下面的程序. -module(hello). -compile(expor ...

  4. Linux网络DNS配置反向解析与构建主从域名服务器

    DNS配置反向解析与构建主从域名服务器 一.DNS反向解析 ①配置反向解析 1.编辑主配置文件 2.修改区域配置文件,添加反向区域配置 3.配置反向区域数据文件 4.重启服务进行测试 ②配置反向解析( ...

  5. Spring MVC之基于java config无xml配置的web应用构建

    更多spring相关博文参考: spring.hhui.top 前一篇博文讲了SpringMVC+web.xml的方式创建web应用,用过SpringBoot的童鞋都知道,早就没有xml什么事情了,其 ...

  6. Spring MVC之基于xml配置的web应用构建

    2019独角兽企业重金招聘Python工程师标准>>> 更多spring博文参考: http://spring.hhui.top/ 直接用SpringBoot构建web应用可以说非常 ...

  7. 【转载】Erlang精彩讨论-回“老赵”关于“Erlang中最大的问题”

    原文:http://erlang-china.org/study/puzzle-in-erlang_pattern_match.html/comment-page-1#comments http:// ...

  8. 【Parcel 2 + Vue 3】从0到1搭建一款极快,零配置的Vue3项目构建工具

    前言 一周时间,没见了,大家有没有想我啊!哈哈!我知道肯定会有的.言归正传,我们切入正题.上一篇文章中我主要介绍了使用Vite2+Vue3+Ts如何更快的入手项目.那么,今天我将会带领大家认识一个新的 ...

  9. 使用gradle构建android项目,Android中使用Gradle来构建App项目的入门指南

    gradle是Android开发中引入的全新的构建系统,因为全新的构建系统主要是出于下面的目的: 1. 方便复用代码和资源 2. 构建多种版本的apk更见简单,不论是为多渠道构建不同的apk还是构建不 ...

最新文章

  1. SAP HUM 嵌套HU初探
  2. 初学java之JFrame窗口模式
  3. FPGA之道(68)原语的使用
  4. monty python喜剧-看美剧学托福:最受美国人喜欢的100部美剧
  5. Winform、WPF、Silverlight、MFC区别与联系
  6. [Oracle PL/SQL]当数据表设计成具有父ID的时候,当需要选择所有与父ID同根生的所有节点的时候,使用的SQL语句...
  7. html随页面移动固定,div设置了position: fixed属性后如何可以做到随浏览器左右移动?...
  8. MPLS ×××跨域实现之OPTION B配置讲解
  9. 远程线程需要注意的问题
  10. 恒大汽车向技术人员等授出3.24亿股购股权:占公司股本的3.31%
  11. Python报错: RuntimeError: The current Numpy installation (‘D:\\Develop\\anaconda\\lib\\site-packages\\
  12. mysql 正则排序_MySQL-排序、GROUP BY、连接、NULL值处理、正则表达式、事务
  13. 微信无法打开xlsx文件_电脑微信excel打不开怎么办
  14. HTML中嵌入视频和音频代码
  15. 如何用MATLAB编写FIR维纳滤波器,FIR维纳滤波器的Matlab仿真验证.ppt
  16. 2节串联锂电池充电管理IC芯片,5V,12V升降压解决方案
  17. 平衡二叉树(AVL树)深入解读
  18. N+1个数据恢复软件,全中文!全破解免费!(潘中医)_-Chaz-_新浪博客
  19. IE无法打开网页的常见原因及解决
  20. OneNET麒麟座应用开发之九:与SD卡通讯并保存数据

热门文章

  1. 2023年湖北下半年中级职称申报中级职称评审申报条件是什么?
  2. not x、not None 和 is None的使用及区别
  3. 深度盘点:可视化看板20份,直接套用真爽
  4. 使用强化学习建立下一个最佳活动(或称行动营销)模型【译文初稿】
  5. 那些好玩的网站(二)
  6. 区块链软件公司:五大行落地的难题在哪
  7. 区块链软件开发案例分享
  8. 基础——无线协议 802.11 b/g/n
  9. js动态添加html元素绑定事件,JS实现动态添加DOM节点和事件的方法示例
  10. 频率、波长、传输距离、传输速率之间的关系总结