I have been using Dancer exclusively with Apache until now, but in a new environment, I want to experiment with Starman (or any other perl-based server) via Apache proxy. The machine in question is running Apache, and I am not inclined to tinker with that more than the minimum necessary. I created an app "foo" in ~/Documents/www. I am able to run it like so ~/Documents/www/foo$ plackup -E deployment -s Starman --workers=10 -p 5001 -a bin/app.pl 2011/07/03-17:43:13 Starman::Server (type Net::Server::PreFork) starting! pid(3374) Binding to TCP port 5001 on host * Setting gid to "501 501 501 401 204 100 98 80 61 12 102 402" Going to http://127.0.0.1:5001/ gives me my app "foo" Now, I added the following in the apache conf file ---- ProxyRequests Off <Proxy *> Order deny,allow Allow from all </Proxy> ProxyPass /foo http://127.0.0.1:5001 ProxyPassReverse /foo http://127.0.0.1:5001 ---- and then, going to http://mycomputer.local/foo also returns my app "foo" correctly. Ok, then I added another app "bar" under ~/Documents/www (sibling to "foo"). Now, I am trying to run multiple apps as per the instructions at [http://search.cpan.org/~sukria/Dancer-1.3060/lib/Dancer/Deployment.pod] under the heading "Running multiple apps with Plack::Builder". I created the following web.psgi file in ~/bin ---- use Dancer ':syntax'; use Plack::Builder; setting apphandler => 'PSGI'; my $app1 = sub { my $env = shift; setting appdir => '/Users/punkish/Documents/www/foo', setting appname => 'foo'; load_app "foo"; Dancer::Config->load; my $request = Dancer::Request->new( env => $env ); Dancer->dance( $request ); }; my $app2 = sub { my $env = shift; setting appdir => '/Users/punkish/Documents/www/bar', setting appname => 'bar'; load_app "bar"; Dancer::Config->load; my $request = Dancer::Request->new( env => $env ); Dancer->dance( $request ); }; builder { mount "/foo" => builder {$app1}; mount "/bar" => builder {$app2}; }; ---- and then I entered the following command: ~/bin$ plackup -E deployment -s Starman --workers=10 -p 5001 -a ~/bin/web.psgi But, now I get "Not Found" error. So, besides generally seeking guidance for this, I have the following specific questions -- One, in "setting appdir => '/Users/punkish/Documents/www/foo'" what exactly is my appdir? Is '/Users/punkish/Documents/www/foo' correct? Two, are both "foo" and "bar" going to be accessible at http://127.0.0.1:5001/? Do I just add the following lines to my httpd.conf ---- ProxyPass /foo http://127.0.0.1:5001 ProxyPassReverse /foo http://127.0.0.1:5001 ProxyPass /bar http://127.0.0.1:5001 ProxyPassReverse /bar http://127.0.0.1:5001 ---- Three, how do I run plackup in the background? I want to run it, but be able to close the shell, and even logout and have it running. Four, if I have a single web.psgi as above, one disadvantage is that if I tinker with any one app, and have to turn off or restart Starman, it will affect all the apps powered by Starman. Perhaps a better situation would be to have a separate Starman process for each app. What is the best practice here? Puneet.