1、rebar安装(最好把rebar路径写到~/bashrc文件)
2、创建项目
1、mkdir myapp
2、cd myapp
3、rebar create-app appid=myapp
4、编译rebar compile
3、发布版本
1、mkdir apps
2、mkdir apps/myapp
3、将第二步得到的src文件cp到apps/myapp/src
4、mkdir rel
5、cd rel
6、rebar create-node nodeid=myapp (创建节点)
7、创建rebar.config文件,内容如下:
{sub_dirs, ["apps/myapp","rel"]}.
{cover_enabled, true}.
{deps_dir,["deps"]}. // 引入source code
{deps,[
{lager,".*",{git,"git://github.com/basho/lager.git",{branch,"master"}}}
]}.
8、修改reltool.config文件
{sys, [
{lib_dirs, ["../apps", "../deps"]}, //lib所在的目录,source code保存在deps中,见上一步
{rel, "myapp", "1", // “1” 表示版本号
[
kernel,
stdlib,
sasl,
myapp
]},
{rel, "start_clean", "",
[
kernel,
stdlib
]},
{boot_rel, "myapp"},
{profile, embedded},
{excl_archive_filters, [".*"]}, %% Do not archive built libs
{excl_sys_filters, ["^bin/.*",
"^erts.*/bin/(dialyzer|typer)"]},
%% Including HiPE can cause issues generating your first upgrade.
%% If you plan to distribute HiPE in your release remove the
%% following line.
{app, lager, [{incl_cond, include}]}, // 引入的source code 必须要在此进行声明,不然不能识别
{app, myapp, [{incl_cond, include}]}
]}.
{target_dir, "myapp"}.
{overlay, [
{mkdir, "log/sasl"}, // 程序启动时候出现的错误,会记录在此
{copy, "files/erl", "\{\{erts_vsn\}\}/bin/erl"},
{copy, "files/nodetool", "\{\{erts_vsn\}\}/bin/nodetool"},
{copy, "files/myapp", "bin/myapp"},
{copy, "files/sys.config", "releases/\{\{rel_vsn\}\}/sys.config"},
{copy, "files/myapp.cmd", "bin/myapp.cmd"},
{copy, "files/start_erl.cmd", "bin/start_erl.cmd"},
{copy, "files/vm.args", "releases/\{\{rel_vsn\}\}/vm.args"}
]}.
4、编译并生成release
其实这个时候,来个Makefile更好
.PHONY: deps
.PHONY: rel
all:deps compile
deps:
./rebar get-deps //这个命令会根据rebar.config中的配置,获得指定的source code并保存在指定的目录下,如deps
clean:
./rebar clean
compile: deps clean
./rebar compile // 没错,这个是编译的
rel:compile
./rebar generate //生成release
5、启动
经过编译和生成release之后,可执行文件会在./rel/myapp/bin/myapp ,启动时,应该指定启动的模式。
6、热更
BTW:热更之前备份。
1、修改版本号,有两个文件,一个是myapp.app.src 另一个是reltool.config
2、编译,rebar compile
3、rebar generate
4、rebar generate-appups previous_release=myapp_1 指定之前的版本是1
5、rebar generate-upgrade previous_release=myapp_1
6、mv rel/myapp_2.tar.gz rel/myapp_1/releases/
7、
(myapp@127.0.0.1)> release_handler:unpack_release("myapp_2").
{ok,"2"}
(myapp@127.0.0.1)> release_handler:install_release("2").
{ok,"1",[]}
(myapp@127.0.0.1)> release_handler:make_permanent("2").
ok
主要参见:http://blog.sina.com.cn/s/blog_6530ad590100wmkn.html
1、引入source code
rebar提供了source 引入功能。
1、一般用本身用rebar组织的source 项目,需要注意三个地方,第一,指定source code保存的目录,一般是deps;第二,指定source code 的地址,一般都是git 或者是hg;最后一点,在reltool.config文件要进行声明。例子可见3.8 。
2、本身并不是用rebar组织的,如 rabbitmq erlang client 这种形式的,需要把rabbitmq erlang client的lib 和ebin放在 apps目录下(也就是和myapp是同一级目录),并在使用到该lib的代码中指定hrl所在的位置。-include_lib("apps/myapp ……").
2、sys.config文件 (系统配置文件)
这个文件中,定义了如sasl snmp 等的启动参数
[
%% SASL config
{sasl, [
{sasl_error_logger, {file, "log/sasl-error.log"}},
{errlog_type, error},
{error_logger_mf_dir, "log/sasl"}, % Log directory
{error_logger_mf_maxbytes, 10485760}, % 10 MB max file size
{error_logger_mf_maxfiles, 5} % 5 files max
]},
{snmp,
[{manager,
[{config, [{dir, "../manager/conf/"},
{db_dir, "../manager/db/"}]}]}]}
].
3、vm.args (虚拟机启动参数)
这个文件,定义了Erlang虚拟机启动的参数
## Name of the node
-name myapp@127.0.0.1
## Cookie for distributed erlang
-setcookie myapp
## Heartbeat management; auto-restarts VM if it dies or becomes unresponsive
## (Disabled by default..use with caution!)
##-heart
## Enable kernel poll and a few async threads
##+K true
##+A 5
## Increase number of concurrent ports/sockets
##-env ERL_MAX_PORTS 4096
## Tweak GC to run more often
##-env ERL_FULLSWEEP_AFTER 10
分享到:
相关推荐
如果你更倾向于使用Git来克隆rebar项目,可以通过下面的命令: ```bash git clone https://github.com/basho/rebar.git ``` ##### 第3步:创建一个OTP项目 一旦有了rebar文件,就可以通过它来创建一个新的Erlang ...
2. **创建释放包**:使用`rebar3`或`escript`等工具,将编译后的beam文件、应用配置文件和应用描述文件(.app)打包成一个可部署的释放包(通常是一个.tar.gz文件)。 3. **部署到节点**:将释放包复制到目标Erlang...
`rebar3_clojerl` 插件就是这样的扩展,它使得 `rebar3` 能够理解和处理 `Clojure` 源代码,将其编译成 `Erlang` 可理解的形式,并将结果集成到 `Erlang` 项目中。这使得开发人员能够在同一个项目中混合使用 `Erlang...
还有如rebar3和escript这样的构建和打包工具,便于项目的管理和部署。 总结来说,"otp_win64_23.2.exe"是Erlang OTP平台的Windows 64位版本,它包含了构建和运行高性能、分布式、容错系统所需的各种组件和库。...
这个版本可能包含了Erlang运行时环境、编译器和其他必要的工具,如rebar3(Erlang项目的构建工具)。 了解这些知识点后,开发者可以更深入地掌握Erlang,并利用其优势构建高可用、高并发的应用程序。同时,熟悉...
同时,Erlang社区提供了许多工具,如Rebar3和ERTS(Erlang Run-Time System),它们对于构建、测试和部署Erlang应用至关重要。 【压缩包子文件的文件名称列表】"rw_file"可能表示这个压缩包包含了一些关于读写文件...
【标题】:“恐怖”可能指的是在编程领域中遇到的复杂...通过这些信息,我们可以了解到一个使用Erlang和OTP库的项目开发过程,包括使用Rebar3进行构建,利用GitHub Actions自动化流程,以及重视测试和代码质量管理。
7. **Erlang shell和调试工具**:如`rebar3`或`erlang.mk`构建工具,以及`observer`、`dbg`等调试工具的使用。 在实际应用中,掌握这些知识点可以帮助开发者构建高效、稳定的分布式系统,尤其是在高并发和容错性...
部署通常涉及打包应用程序为tarball,然后在目标服务器上解压并使用erl或rebar3等工具进行安装和启动。监控方面,Erlang VM提供了如observer和vm_monitor等工具,可以帮助开发者了解系统性能、进程状态以及可能出现...
10. **持续集成与部署**:对于Aurora这样的项目,持续集成与自动化部署流程至关重要。开发者可能使用如Jenkins或Travis CI等工具,确保代码的质量和版本控制,同时也便于快速迭代和发布新功能。 通过以上分析,我们...