erlang应用发布

分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow

               

参考“转载1”和“转载2”就可以了,但需要注意以下两点:

1.如果用rebar - create-app appid=abc 创建 “应用abc”,当前的目录名必须是abc,举例:在abc目录下执行rebar - create-app appid=abc,否则在应用发布的配置文件reltool.config中,配置lib_dirs, ["../../"]项时,找不到应用abc。
2.用rebar生成的abc应用的erlang源码文件为:abc_app.erl abc_sup.erl,如果需要添加新的erlang源代码,新的源代码文件的命名必须是"abc_"开头,例如:abc_server.erl ,否则在执行发布命令rebar generate时,不能将新添加的erlang源代码编译成功的abc_server.beam文件打包进“abc-1.ez”发布包。


转载1:http://www.linezing.com/blog/?p=351

Zfor项目的Rebar改造

本文档用于描述如何使用rebar erlang构建工具,将github上的zfor项目(https://github.com/chaoslawful/zfor)进行改造。
关于改造过程,我们约定:首先建立一个公共的工作目录(本文档中假定为work目录),作为zfor项目改造的主目录,改造过程中的所有操作均在此目录下完成。

1.    准备工作

1.1 下载zfor

1.       首先,在公共目录(work目录)下使用git命令下载zfor:

cd workgit clone https://github.com/chaoslawful/zfor.git

2.       然后,进入zfor目录,切换到zfor 1.0.10旧版本(目前,github上的master版本是已经rebar改造后的版本,因此我们需要重新下载1.0.10历史版本):

cd zforgit checkout 1.0.10

3.       Zfor项目的原始项目目录格式如下:

${PROJECT}├── bin├── cfg├── Changelog

├── COPYING

├── doc

├── examples

├── Makefile

├── pkg

├── README

├── src

└── THANKS

└── TODO

1.2 下载rebar

1.       首先,在公共目录(work目录)下使用git命令下载rebar:

cd workgit clone https://github.com/basho/rebar.git

2.       然后,进入rebar目录,编译rebar:

cd rebar./bootstrap

3.       编译后在该目录下生成rebar二进制执行文件:

1.3 项目规范

Rebar按照OTP设计原则组织项目,在此基础上,zfor项目的rebar改造过程遵循以下项目规范:

${PROJECT}├── c_src├── doc├── ebin

├── include

├── priv

├── src

└── test

其中:

  • c_src/ – 保存 Port Driver 相关的 C 代码
  • doc/ – 保存文档文件
  • ebin/ – 保存 Erlang 目标文件(即 *.beam),OTP 应用的描述文件 *.app 也放置在此
  • include/ – 保存 Erlang 头文件(即 *.hrl)
  • priv/ – 保存应用特有的文件,例如独立的 C 应用代码、脚本文件、rpm spec 等
  • src/ – 保存 Erlang 源代码文件(即 *.erl)
  • test/ – 保存项目相关的测试文件及数据,测试本身可以是 EUnit 风格或 common-test 风格的

2.    改造过程

2.1 创建rebar项目

首先,在公共目录(work目录)下,创建zfor的rebar改造项目目录:zfor_rebar,将1.2节生成的rebar二进制执行文件拷贝到该目录,并在该目录下创建rebar项目:

$ mkdir zfor_rebar$ cd zfor_rebar$ cp ../rebar/rebar ./$ ./rebar create-app appid=zfor

==> zfor_rebar (create-app)

Writing src/zfor.app.src

Writing src/zfor_app.erl

Writing src/zfor_sup.erl

2.2 创建必要的子目录

在zfor_rebar目录下,按照1.3节中的项目规范,建立必要的项目子目录:

$ cd zfor_rebar$ mkdir c_src$ mkdir doc$ mkdir ebin

$ mkdir include

$ mkdir priv

$ mkdir test

备注:src目录已经在创建rebar项目时自动生成。

2.3 迁移zfor项目文件

按照1.3节中的项目规范,进行zfor项目文件的迁移:

1.       c_src部分:

暂无。

2.       doc部分:

$ cd zfor$ mv ./doc/* ../zfor_rebar/doc/

3.       ebin部分:

暂无。

4.       include部分:

$ cd zfor$ cd src/zfor/$ mv ./include/* ../../../zfor_rebar/include/

5.       priv部分:

$ cd zfor$ cd src$ mv ./erlang_zfor/ ../../zfor_rebar/priv/$ mv ./java_zfor/ ../../zfor_rebar/priv/

$ mv ./libzfor/ ../../zfor_rebar/priv/

$ mv ./php_zfor/ ../../zfor_rebar/priv/

$ mv ./python_zfor/ ../../zfor_rebar/priv/

$ cd ..

$ mv ./bin ./scripts

$ mv ./scripts/ ../zfor_rebar/priv/

$ mv ./cfg/ ../zfor_rebar/priv/

$ mv ./examples/ ../zfor_rebar/priv/

$ mv ./pkg/ ../zfor_rebar/priv/

6.       src部分:

$ cd zfor$ cd src/zfor/$ mv ./src/* ../../../zfor_rebar/src/

7.       test部分:

$ cd zfor$ cd src/zfor/$ mv ./test/* ../../../zfor_rebar/test/

8.       其他部分

$ cd zfor$ mv Changelog ../zfor_rebar/$ mv COPYING ../zfor_rebar/$ mv README ../zfor_rebar/

$ mv THANKS ../zfor_rebar/

$ mv TODO ../zfor_rebar/

至此,已经将zfor项目迁移到了zfor_rebar目录下,最终的目录结构如下:

2.4 修改zfor.app.in配置文件

1. 进入zfor_rebar目录下的src目录,根据项目名,将zfor.app.in重命名为zfor_rebar.app.src:

$ cd zfor_rebar/src$ mv zfor.app.in zfor.app.src

2. 编辑zfor.app.src,将“{vsn, “%VSN%”}”改为“{vsn, “1.0.5″}”,将“{conf_path, “%CONFPATH%”}”改为“{conf_path, “/usr/local/etc/zfor”}”。

$ cd zfor_rebar/src$ vim zfor.app.src

2.5 编译项目

使用rebar compile命令编译zfor:

$ cd zfor_rebar$ ./rebar compile

==> zfor_rebar (compile)
Compiled src/zfor_app.erl
src/zfor_hostlist.erl:80: Warning: http:request/4 is deprecated and will be removed in R15B; use httpc:request/4
Compiled src/zfor_hostlist.erl
Compiled src/zfor_sup.erl
Compiled src/zfor_caretaker.erl
src/zfor_server.erl:50: Warning: NOT OPTIMIZED: called function handle_req/3 does not begin with a suitable binary matching instruction
src/zfor_server.erl:99: Warning: NOT OPTIMIZED: sub binary used by erlang:binary_to_list/1
Compiled src/zfor_server.erl
Compiled src/zfor_httpclient.erl
Compiled src/zfor_util.erl
Compiled src/zfor_main.erl
src/zfor_config.erl:240: Warning: http:request/4 is deprecated and will be removed in R15B; use httpc:request/4
src/zfor_config.erl:461: Warning: http:request/4 is deprecated and will be removed in R15B; use httpc:request/4
Compiled src/zfor_config.erl

2.6 发布项目

1. 在项目根目录下,创建rel发布目录,然后创建一个node用于发布:
$ mkdir rel
$ cd rel
$ ../rebar create-node nodeid=zfor
==> rel (create-node)
==> rel (create-node)
Writing reltool.config
Writing files/erl
Writing files/nodetool
Writing files/zfor
Writing files/app.config
Writing files/vm.args
$ cd -
2. 修改rel/reltool.config文件(其中**之间是需要修改的地方): 
{sys, [
       *{lib_dirs, ["../../"]}*,
       {rel, "zfor", "1",
        [
         kernel,
         stdlib,
         sasl,
         *zfor*
        ]},
       {rel, "start_clean", "",
        [
         kernel,
         stdlib
        ]},
       {boot_rel, "zfor"},
       {profile, embedded},
       {excl_sys_filters, ["^bin/.*",
                           "^erts.*/
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值