首页 > 代码库 > erlang热部署

erlang热部署

以下流程参考rebar的wiki,亲测

rebar的版本一定要注意,高版本对于下面两个指令有bug

rebar generate-appupsrebar generate-upgrade

经过一个个版本的测试,2.2.0版本可用,但是这个版本的clean和compile指令不支持-r参数

例子:
用rebar建立工程,也可以用大神的rebar-creator脚本创建,我是用的后者,比较方便
我创建的工程是tcp_server

修改apps,你的app,src文件里面的vsn字段的版本号和rel/reltool.config里面的rel字段的版本号一致,测试写0.1
(是否可以不一致,不清楚,但是官方demo里面是一致的;并且作为版本管理来说,应该一致)

rebar compile;rebar compile;rebar generate -f;

将rel/tcp_server重命名为tcp_server_0.1


重新修改版本号为0.2,两个地方都要改。

重新编译:

rebar clean;rebar compile;rebar generate -f;rebar generate-appups previous_release=tcp_server_0.1;rebar generate-upgrade previous_release=tcp_server_0.1;

 

然后在你的rel目录看到一个tcp_server_0.2.tat.gz的压缩包了吧
我们把这个压缩包mv到tcp_server_0.1/release

cd tcp_server_0.1./bin/tcp_server console进入erlang的shellrelease_handler:which_releases().


看到的应该是0.1
然后解压0.2的包,安装进入

erl> release_handler:unpack_release("tcp_server_0.2").erl> release_handler:install_release("0.2").erl> release_handler:make_permanent("0.2").erl> release_handler:which_releases().

 

erlang热部署