Github上Ejabberd最新版15.07支持通过Elixir Mix构建工具创建Ejabberd的发行(部署)包.
详细信息参考这篇BLog: https://blog.process-one.net/building-an-otp-release-for-ejabberd-with-elixir-mix/
其使用了Elixir的exrm
打包工具
构建过程和步骤
1. 创建目录和克隆仓库
1
| mkdir ejabberd-demo1
mkdir ejabberd-demo1/deploy
cd ejabberd-demo1
git clone https://github.com/processone/ejabberd.git
|
2. 编译
1
| cd ejabberd-demo1/ejabberd
mix do deps.get, compile
|
3. 创建发布包
1
| MIX_ENV=prod mix release
|
4. 部署
1
| mkdir -p deploy/ejabberd
tar zxvf rel/ejabberd/releases/15.07.0/ejabberd.tar.gz -C deploy/ejabberd
|
5. 创建配置文件
1
| mkdir deploy/ejabberd/config
cd deploy/ejabberd/config
wget https://gist.githubusercontent.com/mremond/383666d563025e86adfe/raw/723dfa50c955c112777f3361b4f2067b76a55d7b/ejabberd.yml
|
6. 启动
前台运行(调试)
1
| deploy/ejabberd/bin/ejabberd console
|
后台运行(产品环境)
1
| deploy/ejabberd/bin/ejabberd start
|
7. 注册一个测试用户
1
| :ejabberd_auth.try_register("user1", "localhost", "mypass")
|
8. 停止Ejabberd
调试
热代码替换步骤
假定在15.07.0中发现了一个BUG, 修改该BUG后, 更新线上系统.
1. 修改Ejabberd源码
比如修改一个线上的程序BUG
2. 修改Mix项目文件
修改Ejabberd源码根目录下的mix.exs
文件, 提升版本号
3. 编译
4. 重新生产新的发行包
1
| MIX_ENV=prod mix release
|
5. 实时升级线上系统
1
| mkdir -p deploy/ejabberd/releases/15.07.1
|
1
| tar zxvf rel/ejabberd/releases/15.07.1/ejabberd.tar.gz -C deploy/ejabberd
|
1
| deploy/ejabberd/bin/ejabberd upgrade "15.07.1"
|
结语
上述只是一个基本过程, 实际项目往往比这个过程复杂, 这个简单的过程只是说明如何使用.