Catalyst Advent - Day 10 - Catalyst on shared hosting

NOTE: This article was written in 2005. Make sure to check the Catalyst Wiki (http://dev.catalyst.perl.org/wiki) for updated information.

So, you want to put your Catalyst app out there for the whole world to see, but you don't want to break the bank. There is an answer - if you can get shared hosting with FastCGI and a shell, you can install your Catalyst app. First, run

  perl -MCPAN -e shell

and go through the standard CPAN configuration process. Then exit out without installing anything. Next, open your .bashrc and add

  export PATH=$HOME/local/bin:$HOME/local/script:$PATH
  perlversion=`perl -v | grep 'built for' | awk '{print $4}' | sed -e 's/v//;'`
  export PERL5LIB=$HOME/local/share/perl/$perlversion:$HOME/local/lib/perl/$perlversion:$HOME/local/lib:$PERL5LIB

and log out, then back in again (or run ". .bashrc" if you prefer). Finally, edit .cpan/CPAN/MyConfig.pm and add

  'make_install_arg' => qq[SITEPREFIX=$ENV{HOME}/local],
  'makepl_arg' => qq[INSTALLDIRS=site install_base=$ENV{HOME}/local],

Now you can install the modules you need with CPAN as normal, and perl will pick them up. Finally, change directory into the root of your virtual host and symlink your application's script directory in -

  cd path/to/mydomain.com
  ln -s ~/lib/MyApp/script script

And add the following lines to your .htaccess file (assuming the server is setup to handle .pl as fcgi - you may need to rename the script to myapp_fastcgi.fcgi and/or use a SetHandler directive) -

  RewriteEngine On
  RewriteCond %{REQUEST_URI} !^/?script/myapp_fastcgi.pl
  RewriteRule ^(.*)$ script/myapp_fastcgi.pl/$1 [PT,L]

http://mydomain.com/ should now Just Work. Congratulations, now you can tell your friends about your new website (or in our case, tell the client it's time to pay the invoice :)

  -- mst