Erinevus lehekülje "Ruby on rails" redaktsioonide vahel

Allikas: Kuutõrvaja
(Rails ja Apache mitme projektiga server)
(Sissejuhatus)
1. rida: 1. rida:
 
===Sissejuhatus===
 
===Sissejuhatus===
  
Ruby on Rails on veebiarenduse raamistik, mis kasutab programmeerimiskeelt Ruby. Kui Rails on alles paariaastane noor raamistik, siis ruby on juba aastast 1993, mil Jaapanis Yukihiro Matsumoto sai tööle esimese "Hello World!".
+
Ruby on Rails on veebiarenduse raamistik ehk framework, mis kasutab programmeerimiskeelt Ruby. Kui Rails on alles paariaastane noor raamistik, siis ruby on juba aastast 1993, mil Jaapanis Yukihiro Matsumoto sai tööle esimese "Hello World!".
  
 
===Rails arenduskeskond===
 
===Rails arenduskeskond===

Redaktsioon: 9. jaanuar 2008, kell 02:33

Sissejuhatus

Ruby on Rails on veebiarenduse raamistik ehk framework, mis kasutab programmeerimiskeelt Ruby. Kui Rails on alles paariaastane noor raamistik, siis ruby on juba aastast 1993, mil Jaapanis Yukihiro Matsumoto sai tööle esimese "Hello World!".

Rails arenduskeskond

Installime vajalikud päkitsad railsile


install FreeBSDs

Esimesena mysql server

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

Seejärel ruby

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

Portupgrade install

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 start

Uue projekti loome käsuga

rails ideenimi

rails 2.0 puhul ,et vältida mysqli tuleb kirjutada

rails -d mysql test

Genereerib kausta test

seejärel stardime arenduseks vajaliku webrick serveri

cd test
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

Nb! kui muudate database.yml faili tuleb veebiserverit taaskäivitada

nüüd peaksime enda projekti nägema aadressil http://www.nimi.ee:3000 järgnevat pilti

Railsiveb.jpg

Seejärel anname käsu mis loob uue kontrolleri.

ruby script/generate controller katsetus 

Railsis on mudelid (model) ja controllerid (controller ) See kõik asub siis stiilis aadress/kontroller. Näiteks www.nimi.ee kuhu lõime hetk tagasi kontrolleri nimega katsetus. Kohe peale loomist oli www.nimi.ee/katsetus kättesaadav. Models on kasutusel kui sql andmete hoidjad, meil on kasutuses mudel nimega test. Raisi controlleri failis defineeritakse asju, mida sinna www.nimi.ee/test/? kohta panna äsjaloodud kontrolleril on seal näiteks index, aee on avaleht. Lisame näiteks indexile väikese teksti:

avame faili test/app/controllers/katsetus_controller kus asub class KatsetusControllerning lisame sinna järgnevad read


def index
  render :text => "tekst index lehele"
end

ja liikudes urlile http://www.nimi.ee:8000/katsetus

peaksime nägema kirja tekst index lehele

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


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 neile kahele tarkvarale


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