Thin
http://code.macournoyer.com/thin/
http://articles.slicehost.com/2008/5/6/ubuntu-hardy-apache-rails-and-thin
Install
as root:
gem install thin thin install update-rc.d -f thin defaults (to have thin restart on reboot)
Config File
put this into /etc/thin/myapp.yml
:
--- pid: tmp/pids/thin.pid address: 0.0.0.0 timeout: 30 wait: 30 port: 4810 log: log/thin.log max_conns: 1024 require: [] max_persistent_conns: 512 #environment: development environment: production servers: 4 daemonize: true chdir: /var/www/myapp
Use with Apache
Set up modules:
a2enmod proxy a2enmod proxy_balancer a2enmod proxy_http a2enmod rewrite
The virtual host file should look something like this:
<VirtualHost *:80> ServerName myapp.com ServerAlias www.myapp.com LogLevel warn ErrorLog /var/log/apache2/myapp-error.log CustomLog /var/log/apache2/myapp-access.log combined DocumentRoot /var/www/myapp/public RewriteEngine On <Proxy balancer://thinservers> BalancerMember http://127.0.0.1:5000 BalancerMember http://127.0.0.1:5001 BalancerMember http://127.0.0.1:5002 </Proxy> # Redirect all non-static requests to thin RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} !-f RewriteRule ^/(.*)$ balancer://thinservers%{REQUEST_URI} [P,QSA,L] ProxyPass / balancer://thinservers/ ProxyPassReverse / balancer://thinservers/ ProxyPreserveHost on <Proxy *> Order deny,allow Allow from all </Proxy> </VirtualHost>