Previously I wrote about Configuring Capistrano and Mongrel. Now we are going to configure Apache to work with the Mongrel cluster.
For this article I used the chapter Setting Up A Development Environment in Agile Web Development with Rails, version 2.0, plus this article.
Capistrano working together with Mongrel allows you to deploy and restart Mongrel clusters quite nicely.
Configure Apache proxy balancer
Apache has a mod_proxy_balancer module which must be enabled. Once this is done you can add the following to the end of conf/httpd.conf
or if you are on Red Hat Linux you can put the proxy balancing section in /etc/httpd/conf.d/myapp.proxy_cluster.conf
and the virtual host section in /etc/httpd/conf.d/myapp.conf
.
<Proxy balancer://mongrel_cluster> BalancerMember http://127.0.0.1:8000 BalancerMember http://127.0.0.1:8001 BalancerMember http://127.0.0.1:8002 </Proxy> <VirtualHost *:80> Include conf/myapp.common (or Include conf.d/myapp.common) ErrorLog logs/myapp_errors_log CustomLog logs/myapp_log combined </VirtualHost>
Configure Apache Virtual Host
Next you configure the virtual host that represents the Ruby on Rails application in the custom file conf/myapp.common
or if you are on Red Hat Linux in /etc/httpd/conf.d/myapp.common
.
ServerName myapp.com DocumentRoot /usr/local/rails/myapp/current/public <Directory "/usr/local/rails/myapp/current/public"> Options FollowSymLinks AllowOverride None Order allow,deny Allow from all </Directory> RewriteEngine On # Uncomment for rewrite debugging #RewriteLog logs/myapp_rewrite_log #RewriteLogLevel 9 # Check for maintenance file and redirect all requests RewriteCond %{DOCUMENT_ROOT}/system/maintenance.html -f RewriteCond %{SCRIPT_FILENAME} !maintenance.html RewriteRule ^.*$ /system/maintenance.html [L] # Rewrite index to check for static RewriteRule ^/$ /index.html [QSA] # Rewrite to check for Rails cached page RewriteRule ^([^.]+)$ $1.html [QSA] # Redirect all non-static requests to cluster RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} !-f RewriteRule ^/(.*)$ balancer://mongrel_cluster%{REQUEST_URI} [P,QSA,L]
Restart Apache
$ sudo /usr/local/apache2/bin/httpd -k restart
or
$ sudo /etc/init.d/httpd restart
Pingback: betweenGo » Installing Apache 2.2 with mod_rewrite and mod_proxy_balancer