Deploy ejabberd with erlang built in? Build and deploy on different systems?

Hi there,

In order to run ejabberd, must erlang be *already* installed on the target system, or is there a way to build ejabberd from source in such a way that I can include the erlang system with it, and deploy it on a system without erlang naively installed? I'm interested in a running on a system different from the one I built on, so I want to create a "release" of sorts. I'm looking into Erlang releases as listed here: http://www.erlang.org/doc/design_principles/release_structure.html, but thought there might be some specific advice on this (I couldn't find it in the ejabberd book, but if it is there maybe someone could point me to it).

Thanks!

Tronman wrote: Hi there, In

Tronman wrote:

Hi there,

In order to run ejabberd, must erlang be *already* installed on the target system, or is there a way to build ejabberd from source in such a way that I can include the erlang system with it, and deploy it on a system without erlang naively installed? I'm interested in a running on a system different from the one I built on, so I want to create a "release" of sorts.

The closest thing I can thing is this.

In your dev machine, install ejabberd from ProcessOne binary installer [1] into dir1. Now in dir2: download ejabberd source code, apply your code customizations, compile [2]. Then copy the beam files from dir2 to dir1. Compress dir1, copy to the production machine, and run it.

[1] The beam files are architecture-independent, but of course the *.dll or *.so are dependant. So, make sure you get the installer for the correct production machine architecture.
[2] Use the same erlang version for compiling the *.beam files than the version that will be used for running them. ejabberd 2.1.3 installers use R12B-5 I think.

Good idea

That's a great idea, but since I'm running a Solaris machine, there's no binary installer for it. Nevertheless, I did manage to get the erlang runtime system on the production machine (after fixing some shared library paths) so just had to change the "ERL" environment variable in ejabberdctl to the right spot, and find the shared libraries for expat, tls shared object, etc and it seems to be running pretty smoothly. Thanks for your help!

Syndicate content