[Dancer-users] deployment woes (general note)

Mr. Puneet Kishor punk.kish at gmail.com
Mon Jul 4 05:53:40 CEST 2011


Dancer has been out a while now, and is used widely. Yet, I still continue to encounter major difficulties and puzzlement in deploying multiple Dancer apps. I don't believe I have particularly weird requirements, yet, I don't see much noise wrt deployment. That leads me to believe that I am understanding Dancer's deployment mechanism inadequately. Here is my general deployment scenario --

I have a Mac OS X server with Apache, and several "institutional" web sites served off of that. Let's call them 
  /Library/WebServer/Documents/proj1  [http://myserver.edu/proj1]
  /Library/WebServer/Documents/proj2  [http://myserver.edu/proj2]
  ..

I don't want to mess with the above at all, and want to tinker with httpd.conf as minimally as possible.

I log into my account on the computer, use perlbrew to install the latest perl under /Users/punkish/perl5, install all my own perl modules including Starman, and make the following Dancer applications

  [1] /Users/punkish/Sites/myapp1  [http://myserver.edu/myapp1]
  [2] /Users/punkish/Sites/myapp2  [http://myapp2.myserver.edu]
  [3] /Users/punkish/Sites/myapp3  [http://myapp3.org]
  [4] /Users/punkish/Sites/myapp4  [http://myapp4.myapp3.org]

[1] appears as just a sub-directory myserver.edu, not unlike proj1 and proj2.

[2] is a sub-domain of myserver.edu

[3] is a completely separate domain

[4] is a sub-domain of [3]

I also have the following as a common location for various JavaScript libraries, and a few css templates, I use for all my apps

  [0] /Users/punkish/Sites/lib  [http://myserver.edu/punkish/lib]
                                [<relative to any app>/lib]

So, I can serve [1] using Starman with the following configuration

----
## web.psgi
use Dancer ':syntax';
use Plack::Builder;

setting apphandler => 'PSGI';

my $htdocs = '/Users/punkish/Sites';

my $foo = sub {
	my $env = shift;
	local $ENV{DANCER_APPDIR} = "$htdocs/foo";
	setting appdir => "$htdocs/foo";
	load_app "foo";
	Dancer::App->set_running_app('foo');
	Dancer::Config->load;
	my $request = Dancer::Request->new( env => $env );
	Dancer->dance( $request );
};

builder {
	# The following allows serving files from /lib
	# much like the Alias directive in Apache
	enable "Static", path => sub { s!^/lib/!! }, root => "/Users/punkish/Sites/lib";
	mount "/foo" => builder {$foo};
};
----

I can serve [2], [3], and [4] using Apache VirtualHost directive, but can I do that using Starman?

Puneet.



More information about the Dancer-users mailing list