[ejabberd] Improvements in ejabberd start script - this proposal needs review

Jesse Thompson jesse.thompson at doit.wisc.edu
Thu Aug 23 20:39:07 MSD 2007


Good idea(s).  Note that the script (from my ubuntu package) is actually 
a bash script, not /bin/sh that is in the shebang line.  Not all OSs 
alias /bin/sh to bash, so this will cause problems with some of the 
syntax it uses.

Jesse

Badlop wrote:
> ejabberd does not include an start script. Instead, some minimal
> instructions are available in the ejabberd Guide and in the examples/
> directory.
> For that reason, packagers for *nix distributions had to write their
> own custom start scripts. The Windows installers are not affected,
> because they include start and stop shortcuts.
> 
> The situation is problematic for that people that like to compile and
> run the software themselves: they have to spend a lot of time reading
> documentation, forum threads and the mailing list to get a good start
> script. A good start script will attract more admins, will make
> current admins happier, will not require us to spend so much time
> giving help, and will incentivate packagers of more *nix distributions
> to build ejabberd packages.
> 
> Some months ago ejabberd SVN got a start script, which also has
> support for ejabberd_ctl [1]. I think that script can be improved
> integrating several features available in other start scripts.
> 
> My proposal improves all the existing stuff in ejabberd SVN with many
> other features copied from Debian official ejabberd package [2, 3, 4]
> and Sander's proposal [5, 6].
> 
> The diff against ejabberd trunk SVN is available here:
> http://ejabberd.jabber.ru/files/contributions/startscript1.diff
> 
> I appreciate any comment; I want ejabberd to include a powerful
> command-line script, unfortunately I'm not an expert in those topics.
> 
> I'll update the diff with your suggestions and bugfixes. Finally, it
> will be submitted to ejabberd bug tracker for review and probably
> integration in ejabberd trunk, in time for the next release.
> 
> 
> Now let's see ejabberd + SVN + this patch in action.
> 
> $ cd ejabberd/truck/src
> 
> $ patch -p0 < startscript1.diff
> patching file ejabberd.inetrc
> patching file Makefile.in
> patching file ejabberd.cfg.example
> patching file ejabberd_ctl.erl
> patching file ejabberdctl.cfg.example
> patching file ejabberdctl.template
> 
> $ ./configure
> ...
> 
> $ make
> ...
> 
> $ su root
> 
> # make install
> ...
> 
> Directories created:
>   /etc/ejabberd/ - Configuration files
>     ejabberd.cfg - ejabberd configuration
>     ejabberd.inetrc - Network DNS configuration
>     ejabberdctl.cfg - Start script configuration
>   /sbin/ejabberdctl - Start and administration script
>   /var/lib/ejabberd/ - Installed files
>     .erlang.cookie - Erlang cookie file
>     db - Database spool files ejabberd files
>     ebin - Binary ejabberd files (*.beam)
>     priv -
>       lib - Binary libraries (*.so)
>       msgs - Translated strings (*.msgs)
>   /var/log/ejabberd/* - Log files
> 
> The configuration files that the admin can edit and are not
> overwritten by 'make install' are:
>   ejabberd.cfg to define ejabberd internals
>   ejabberdctl.cfg to configure several options of ejabberd start, Erlang/OTP...
> 
> ejabberd can be administered completely with just a command line
> script: ejabberdctl, which provides arguments to start, stop, and many
> more.
> 
> This is an example shell session:
> 
> # ejabberdctl
> RPC failed on the node ejabberd at localhost: nodedown
> 
> Commands to start an ejabberd node:
>   start    Start an ejabberd node in server mode
>   debug    Attach an interactive Erlang shell to a running ejabberd node
>   live     Start an ejabberd node in live (interactive) mode
> 
> # ejabberdctl start
> 
> # ejabberdctl
> Usage: ejabberdctl [--node node] command [options]
> 
> Available commands in this ejabberd node:
>   status                         get ejabberd status
>   stop                           stop ejabberd
>   restart                        restart ejabberd
>   reopen-log                     reopen log file
>   register user server password  register a user
>   unregister user server         unregister a user
>   backup file                    store a database backup to file
>   restore file                   restore a database backup from file
>   install-fallback file          install a database fallback from file
>   dump file                      dump a database to a text file
>   load file                      restore a database from a text file
>   import-file file               import user data from jabberd 1.4 spool file
>   import-dir dir                 import user data from jabberd 1.4
> spool directory
>   delete-expired-messages        delete expired offline messages from database
>   delete-old-messages n          delete offline messages older than n
> days from database
>   vhost host ...                 execute host-specific commands
>   incoming-s2s-number            print number of incoming s2s
> connections on the node
>   outgoing-s2s-number            print number of outgoing s2s
> connections on the node
>   user-resources user server     print user's connected resources
>   connected-users-number         print a number of established sessions
>   connected-users                list all established sessions
> 
> Examples:
>   ejabberdctl restart
>   ejabberdctl --node ejabberd at host restart
> 
> Commands to start an ejabberd node:
>   start    Start an ejabberd node in server mode
>   debug    Attach an interactive Erlang shell to a running ejabberd node
>   live     Start an ejabberd node in live (interactive) mode
> 
> # ejabberdctl status
> Node ejabberd at localhost is started. Status: started
> ejabberd is running
> 
> # vim /etc/ejabberd/ejabberd.cfg
> ...
> 
> # ejabberdctl restart
> 
> # ejabberdctl stop
> 
> 
> 
> Acknowledgements:
> 
>  Sander Devrieze
>  Sergei Golovan
>  Torsten Werner
> 
> 
> [1] https://support.process-one.net/browse/EJAB-145
> [2] http://svn.debian.org/wsvn/collab-maint/deb-maint/ejabberd/trunk/debian/patches/?rev=0&sc=0
> [3] http://ftp.debian.org/debian/pool/main/e/ejabberd/ejabberd_1.1.2-9.diff.gz
> [4] url: http://packages.debian.org/unstable/net/ejabberd
> [5] https://support.process-one.net/browse/EJAB-68
> [6] http://www.jabber.ru/bugzilla/show_bug.cgi?id=27
> _______________________________________________
> ejabberd mailing list
> ejabberd at jabber.ru
> http://lists.jabber.ru/mailman/listinfo/ejabberd
-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/x-pkcs7-signature
Size: 3340 bytes
Desc: S/MIME Cryptographic Signature
Url : http://lists.jabber.ru/pipermail/ejabberd/attachments/20070823/1b321ba4/attachment.bin 


More information about the ejabberd mailing list