Erinevus lehekülje "Ruby on rails" redaktsioonide vahel

Allikas: Kuutõrvaja
30. rida: 30. rida:
  
 
  rails ideenimi
 
  rails ideenimi
 +
 +
rails 2.0 puhul ,et vältida mysqli tuleb kirjutada
 +
 +
rails -d mysql ideenimi
  
 
Genereerib kausta ideenimi
 
Genereerib kausta ideenimi

Redaktsioon: 8. jaanuar 2008, kell 20:33

Rails arenduskeskond

Installime vajalikud päkitsad railsile

Esimesena mysql server

cd /usr/ports/databases/mysql5-server
make install clean

Seejärel ruby

cd /usr/ports/lang/ruby18
make install clean

Portupgrade mehhanism


pkg_add -r portupgrade

Ning seejärel võime railsi ennast installima asuda

portinstall -PR rubygem-rails

Viimane käsk installib railsi koos kõigi sõltuvustega võti P käseb kasutada binaarseid installereid kui võimalik ja R upgradeb juba installitud sõltuvusi. Samuti küsitakse kasutajalt mingihetk mis tüüpi andmebaasi ta soovib kasutada.

Uue projekti loome käsuga

rails ideenimi

rails 2.0 puhul ,et vältida mysqli tuleb kirjutada

rails -d mysql ideenimi

Genereerib kausta ideenimi

seejärel stardime arenduseks vajaliku webrick serveri

cd ideenimi
script/server -d -p 3000
=> Booting WEBrick...
=> Rails application started on http://0.0.0.0:3000
[2008-01-08 18:27:50] INFO  WEBrick 1.3.1
[2008-01-08 18:27:50] INFO  ruby 1.8.6 (2007-09-24) [i386-freebsd7]

võti p 3000 stardib veebiserveri pordile 3000

nüüd peaksime enda projekti nägema aadressil http://localhost:3000

Rails ja Apache mitme projektiga server

Süsteem toimib nii, et Apache suunab vhostide info mongrel serverile, mis siis railsi skripte esile manab.

cd /usr/ports/apache22
make install with_proxy_modules=yes
gem install mongrel
gem install mongrel-cluster


Loome vajalikud skriptid

pane rcrails /etc/init.d vms kausta ja start_mongrel iga railsi script kausta. start_mongreli sees määra USER ja GROUP, kellena see server jooksma peaks.

Meil on kaks eraldi railsis loodud programmi, mis asuvad

/home/rails/progeadmin/
/home/rails/veebiadmin/

/usr/local/etc/rails.conf või muusse faili (muuda vastavalt rcrails skripti) kirjuta näiteks:

RAILS_SERVERS="
/home/rails/progeadmin/
/home/rails/veebiadmin/



Mongrel Cluster seadistus


mongrel_rails cluster::configure -e production \
-p 8000 -N 3 -c /var/www/apps/testapp -a 127.0.0.1 \
--user mongrel --group mongrel
mongrel_rails cluster::configure -e production \
-p 8100 -N 3 -c /var/www/apps/testapp -a 127.0.0.1 \
--user mongrel --group mongrel

See käsk kirjutab konfiguratsiooni faili config/mongrel_cluster.yml.

cat home/progeadmin/rails/config/mongrel_cluster.yml
user: programm
cwd: /home/progeadmin/rails/
port: "8000"
environment: production
group: konkurss
address: 127.0.0.1
pid_file: log/mongrel.pid
servers: 3 

Nende käskude peale käivituvad kummagi railsi kohta kolm mongrel protsessi Esimesel portidele 8001 8002 8003 ja teisel 8101 8102 8103

Mongrel clustri startimiseks tuleb anda käsk

mongrel_rails cluster::start


httpd.conf

Kontrollime, et read oleksid

LoadModule proxy_module libexec/apache22/mod_proxy.so
LoadModule proxy_connect_module libexec/apache22/mod_proxy_connect.so
LoadModule proxy_ftp_module libexec/apache22/mod_proxy_ftp.so
LoadModule proxy_http_module libexec/apache22/mod_proxy_http.so
LoadModule proxy_ajp_module libexec/apache22/mod_proxy_ajp.so
LoadModule proxy_balancer_module libexec/apache22/mod_proxy_balancer.so

Nüüd loome mõlemale progele nende vhostid

<VirtualHost 193.40.0.10:80>
  ServerName progeadmin.katse.ee
  DocumentRoot /home/rails/progeadmin/

  <Directory "/home/rails/progeadmin/">
    Options FollowSymLinks
    AllowOverride None
    Order allow,deny
    Allow from all
  </Directory>

  RewriteEngine On


 # Redirect all non-static requests to cluster
 #RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} !-f
 RewriteRule ^/(.*)$ balancer://mongrel_cluster%{REQUEST_URI} [P,QSA,L]

</VirtualHost>
<VirtualHost 193.40.0.10:80>
 ServerName veebiadmin
 DocumentRoot /home/rails/veebiadmin/

 <Directory "/home/rails/veebiadmin/">
   Options FollowSymLinks
   AllowOverride None
   Order allow,deny
   Allow from all
 </Directory>


 RewriteEngine On

 # 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]


</VirtualHost>

Ehitame proxyd

<Proxy balancer://mongrel_cluster2>
   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_cluster>
   BalancerMember http://127.0.0.1:8101
   BalancerMember http://127.0.0.1:8102
   BalancerMember http://127.0.0.1:8103
</Proxy>

ja balaceri

Listen 8000
<VirtualHost 193.40.0.10:8000>
 <Location />
   SetHandler balancer-manager
   Deny from all
   Allow from localhost
 </Location>
</VirtualHost>


Lingid

http://www.rubyonrails.org/

http://blog.innerewut.de/articles/2006/04/21/scaling-rails-with-apache-2-2-mod_proxy_balancer-and-mongrel