deploying for dummies

I'm kinda newb when it comes to apache. I've been tasked with creating a website to manage some local web applications. This site will be running just on our local LAN (it will _never_ be accessed from outside this LAN). We have Kubuntu 7.10 running on this machine and need a setup that enables us to do the following:

1. Root website - http://ip.address.of.machine A basic web page that will have links to different web applications that we will create 2. Rails app 1 - http://ip.address.of.machine/railsapp1 A Rails app 3. Rails app 2 - http://ip.address.of.machine/railsapp2 Another Rails app 4. Django app 1 - http://ip.address.of.machine/djangoapp1 A Django app ....

The URLs I have denoted are what I envision, although in reality I guess they could (should?) be different (http://railsapp1, http://djangoapp1, etc.) Initially, I don't think I'll need a mongrel_cluster or anything of the like, chances are at most 10 people could be accessing these apps at once, and in reality probably no more than 2-4 at any given time.

Again, I'm a complete newb when it comes to apache config files (<VirtualHost> and the like). I can find gobs of howto's on deploying 1 app or the other, but not for the custom setup I have described above. If I need to break down and buy an Apache book and spend a month or two learning, I guess I can.

The URLs I have denoted are what I envision, although in reality I guess they could (should?) be different (http://railsapp1, http://djangoapp1,

should. For both your users' sake, and in case you want/need to move an app to another machine.

Again, I'm a complete newb when it comes to apache config files (<VirtualHost> and the like). I can find gobs of howto's on deploying 1 app

OK, deploy one. Test. Deploy second app. Test. Deploy... :slight_smile:

Seriously, there's not that much to configuring a mod_proxy setup, and multiple proxies, even within one virtual host, are just a couple more lines. Try it, come back if you have specific questions.

I'm using Hostingrails.com and had to create a symbolic link that redirects to the app from the console. Read this tutorial to see how -

Make your app's public folder the public_html http://www.hostingrails.com/forums/wiki_thread/1#symlink

VirtualHost is your friend...

Apache config(there is more to this but this should get you started... ):

PS You should have a include directive in the main conf/httpd.conf and add conf files for each of the apps in conf/extra/httpd-app1.conf. This way you can move/add or disable single apps to apache.

<Proxy balancer://app1_cluster>   BalancerMember http://127.0.0.1:8100 </Proxy>

<Proxy balancer://app2_cluster>   BalancerMember http://127.0.0.1:8200 </Proxy>

NameVirtualHost *:80

<VirtualHost *:80>     ServerName app1

    <Directory "/opt/rails_apps/app1/public">       Options FollowSymLinks       AllowOverride None       Order allow,deny       Allow from all     </Directory>

    RewriteEngine on     RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} !-f     RewriteRule ^/app1(.*)$ balancer://app1_cluster%{REQUEST_URI} [P,QSA,L]

</VirtualHost> <VirtualHost *:80>     ServerName app2

    <Directory "/opt/rails_apps/app2/public">       Options FollowSymLinks       AllowOverride None       Order allow,deny       Allow from all     </Directory>

    RewriteEngine on     RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} !-f     RewriteRule ^/app2(.*)$ balancer://app2_cluster%{REQUEST_URI} [P,QSA,L]

</VirtualHost>

Start Mongrels as needed like this(Read about Monit to manage this better):

/usr/local/bin/ruby /usr/local/bin/mongrel_rails start -d -e production --user daemon --group daemon -p 8100 -a 127.0.0.1 -P /opt/ rails_app/app1/shared/pids/mongrel.8100.pid -c /opt/rails_app/app1/ current -l log/mongrel.8100.log --prefix /app1

Thanks everyone for the tips. I did get a single rails app deployed on our Linux system using Apache2 and FastCGI. I'm not at work now, but tomorrow I will post what I did to get it to work.