NAME

Munner - Multi-Apps Runner

DESCRIPTION

This script "munner" run multiple apps in one commands.

Why we need this?

Some project may involves different APIs running at the background in order to exchange information. But what if we just use munner to start these apis in one call. It is a very handy tools to start multiple applications.

How to install it?

System perl

cpan -i App::Munner

Perlbrew

echo App::Munner >> ~/cpanmfile
perlbrew install-cpanm
perlbrew use <5.x.x>
cat ~/cpanmfile | cpanm

Carton

cd <to your main project>
echo 'requires "App::Munner";' >> cpanfile
carton install

How to use it?

System perl

after install, just call

munner <command> <options>

Perlbrew

perlbrew exec --with <PERL_VERSION> munner <command> <options>

carton

carton exec munner <command> <options>

Commands and Options

munner [start|duck|stop|restart|graceful|status|(access-|error-|)logs|help|doc] [-Aacdg] [long options...]
       -c --config       App runner config file ( default ./munner.yml )
       -d --base-dir     Global base directory ( default ../ )
       -a --app          run App
       -g --group        run Group
       -A --all          run All

What else?

Config file

To run munner, you will need a YAML format of config file.

The config file name is munner.yml

It looks like this:

---------------------------
base_dir: "... base directory to find the app ..."
apps:
   web-frontend:
       dir: "... either full path or the tail part after base_dir ..."
       run: "... command ..."
       carton: 1 or 0
   db-api:
       dir: "... path cound find the command to run ..."
       env:
           - foo: 1
           - bar: 2
       run: "... start up command ..."
   event-api:
       dir: "websrc/event-api"
       run: bin/app.pl
       carton: 1
   login-server:
       dir: websrc/login-server
       run: bin/app.pl
       carton: 1
groups:
   database:
       ## only start these apps
       apps:
           - login-server
           - db-api
   events:
       apps:
           - login-server
           - event-api
   website:
       ## start apps and above groups
       apps:
           - web-frontend
       groups:
           - database
           - events

Where to save the config file?

By default munner will find the config file at the current directory. If you have the config some where else, you will need to tell munner like below:

pwd --> /home/micvu/websrc/website
munner start -c /home/micvu/munner.yml <options> ...

If the config is in the current directory.

pwd --> /home/micvu/websrc/website
ls munner.yml --> munner.yml
munner start <options> --> without telling the config file location

Command examples:

start web-frontend only

munner start -a web-frontend

start event-api at the background and start web-frontend

munner duck -a event-api
munner start -a web-frontend

restart background event-api

munner restart -a event-api 

start everything website (db, event and login)

munner start -g website

start all apps in the config

munner start -A

start all groups in the config?

do we need one? and why? munner -G

show a simple help page

munner help

show this perldoc

either munner doc
or perldoc App::Munner

AUTHOR

Michael Vu <micvu@cpan.org>

SUPPORT

Please submit bugs to the Bitbucket Issue Tracker: http://goo.gl/gHJQii or via email <micvu@cpan.org>

COPYRIGHT AND LICENSE

This software is Copyright (c) 2014 by Michael Vu.

This is free software, licensed under:

The Artistic License 2.0 (GPL Compatible)