Rails, Mongrel, Apache cluster
Rails ja Apache mitme projektiga server
Süsteem toimib nii, et Apache suunab vhostide info mongrel serverile, mis siis railsi skripte esile manab.
Apache tuleb kompileerida koos proxy moodulitega ja kasutamiseks sobib vaid apache22 mis sisaldab meile vajalikku proxy balancerit
FreeBSD's tuleb apache installida selliselt.
cd /usr/ports/www/apache22 make install with_proxy_modules=yes
Muudes osides tuleb uurida enda tarkvara installerite manuale.
gem install mongrel gem install mongrel_cluster
Lihtsaim viis mongrelit kasutada on ta startida nagu webrick.
cd progeadmin $ mongrel_rails start -d
ja seiskamiseks
$ mongrel_rails stop
Antud juhul on meil keerukam probleem nimelt on kaks eraldi railsis loodud programmi, mis asuvad
/home/rails/progeadmin/ /home/rails/veebiadmin/
Ning vaja oleks ,et progeadmin avaneb aadressiga www.katse.ee ja veebiadmin www.nimi.ee ja samas saaks serveris kasutada ka mitmesugust saatilist materjali ja teisi lehti.
Mongrel Cluster seadistus neile kahele tarkvarale
# cd /home/rails/progeadmin # mongrel_rails cluster::configure -e production -p 8000 -N 3 -a 127.0.0.1 Writing configuration file to config/mongrel_cluster.yml.
# cd veebiadmin # mongrel_rails cluster::configure -e production -p 8100 -N 3 -a 127.0.0.1 Writing configuration file to config/mongrel_cluster.yml.
Need käsud kirjutavad konfiguratsiooni faili kummagile config/mongrel_cluster.yml.
n2iteks /home/progeadmin/rails/config/mongrel_cluster.yml sisu n2eb v2lja selline
log_file: log/mongrel.log port: "8000" environment: production address: 127.0.0.1 pid_file: tmp/pids/mongrel.pid servers: 3
Mongrel clustrite startimiseks tuleb
# cd progeadmin # mongrel_rails cluster::start starting port 8000 starting port 8001 starting port 8002
# cd veebiadmin # mongrel_rails cluster::start starting port 8100 starting port 8101 starting port 8102
Nende käskude peale käivituvad kummagi railsi kohta kolm mongrel protsessi Esimesel portidele 8001 8002 8003 ja teisel 8101 8102 8103
httpd.conf
Kontrollime, et oleks laaditud moodulid
proxy_module proxy_connect_module proxy_http_module proxy_balancer_module
Nüüd loome mõlemale progele nende vhostid
NameVirtualhost 193.40.0.62:80 <VirtualHost 193.40.0.62:80> ServerName www.katse.ee RewriteEngine On # Redirect all non-static requests to cluster RewriteRule ^/(.*)$ balancer://mongrel_cluster%{REQUEST_URI} [P,QSA,L] </VirtualHost> <VirtualHost 193.40.0.62:80> ServerName www.nimi.ee RewriteEngine On # Redirect all non-static requests to cluster RewriteRule ^/(.*)$ balancer://mongrel_cluster2%{REQUEST_URI} [P,QSA,L] </VirtualHost>
<Proxy balancer://mongrel_cluster> BalancerMember http://127.0.0.1:8001 BalancerMember http://127.0.0.1:8002 BalancerMember http://127.0.0.1:8003 </Proxy> <Proxy balancer://mongrel_cluster2> BalancerMember http://127.0.0.1:8101 BalancerMember http://127.0.0.1:8102 BalancerMember http://127.0.0.1:8103 </Proxy> Listen 8000 <VirtualHost 193.40.0.10:8000> <Location /> SetHandler balancer-manager Deny from all Allow from localhost </Location> </VirtualHost>
Edasine seadistus
Juhul kui muutub railsi versioon tuleks uuenda ka koodi
rake rails:update
Juhtum kui on railsi kood vaja domeenis tuua esile kujul http://www.nimi.ee/admin samas kui www.nimi.ee all on teine kood v2i veeb
# Rewrite to trailing slash RewriteRule ^/admin$ /admin/ [R,L] # test if this is /admin request RewriteCond %{REQUEST_URI} ^/admin(/.*) # strip off /admin and put result in ENV RewriteRule ^/admin(.*) /admin$1 [E=AdminReq:$1] RewriteCond /home/rails/admin/public/%{ENV:AdminReq} -f # serve static files RewriteRule ^/admin/(.*) /home/rails/admin/public/$1 [L] # If request is not static, proxy to rails RewriteRule ^/(admin/.*)$ balancer://mongrel_cluster2/$1 [P,QSA,L]
Lingid
http://www.webmasterwords.com/ruby-rails-mongrel-apache-easy
Veel suurem hulk näiteid
http://www.digitalmediaminute.com/article/1816/top-ruby-on-rails-tutorials