Come installare Apache, Ruby, RubyGems, Rails, e FastCGI? su Linux
su root
cd /usr/local/srcwget http://xyz.csail.mit.edu/ruby/ruby-1.8.4.tar.gz wget http://rubyforge.org/frs/download.php/5207/rubygems-0.8.11.tgz wget http://www.fastcgi.com/dist/fcgi-2.4.0.tar.gz wget http://www.fastcgi.com/dist/mod_fastcgi-2.4.2.tar.gz wget http://mirrors.ccs.neu.edu/Apache/dist/httpd/httpd-2.0.53.tar.gz
tar -zxvf ruby-1.8.4.tar.gz
cd ruby-1.8.4
./configure
make
make test
make install
cd ..</pre>
tar -zxvf rubygems-0.8.11.tgz
cd rubygems-0.8.11
ruby setup.rb
cd ..</pre>
tar -zxvf httpd-2.0.53.tar.gz
cd httpd-2.0.53
./configure --enable-rewrite --enable-cgi
make
make install
cd ..
</pre>
tar -zxvf fcgi-2.4.0.tar.gz
cd fcgi-2.4.0
./configure
make
make install</pre>
cd ..
tar -zxvf mod_fastcgi-2.4.2.tar.gz
cd mod_fastcgi-2.4.2
cp Makefile.AP2 Makefile
make
make install</pre>
gem install rails
:
Install required dependency rake? [Yn] y
Install required dependency activesupport? [Yn] y
Install required dependency activerecord? [Yn] y
Install required dependency actionpack? [Yn] y
Install required dependency actionmailer? [Yn] y
Install required dependency actionwebservice? [Yn] y
:
</pre>gem install fcgi</pre>
Su FreeBSD, se ricevi l’errore “ERROR: While executing gem” che dice “checking for fcgiapp.h… no” allora installa il gem in questo modo:
gem install fcgi -- --with-fcgi-include=/usr/local/include --with-fcgi-lib=/usr/local/lib
Se ricevi un errore che dice “can’t find header files for ruby.”, allora installa il package ruby-devel.
/usr/local/apache2/conf/httpd.conf or /etc/httpd/conf/httpd.conf) e aggiungi queste righe
<Directory /var/www/>
AllowOverride all
</Directory>LoadModule fastcgi_module modules/mod_fastcgi.so
AddHandler fastcgi-script .fcgi
<VirtualHost *:80>
ServerAdmin webmaster@example.com
DocumentRoot /var/www/rails/testapp/public
ServerName www.example.com
ErrorLog /var/log/httpd/testapp-error_log
CustomLog /var/log/httpd/testapp-access_log common
Options Indexes ExecCGI FollowSymLinks
RewriteEngine On
LoadModule fcgid_module modules/mod_fcgid.soAddHandler fcgid-script .fcgi
/usr/local/apache2/bin/apachectl start
cd /var/www/rails/testapp/public
rm index.html
cd ..
script/generate controller home index</pre>/var/www/rails/testapp/public/.htaccess e sostituisci dispatch.*cgi* con dispatch.*fcgi*/var/www/rails/testapp/public/dispatch.fcgi (in Rails 0.13.1 é dentro la installazione di Rails: lib/fcgi_handler.rb) e sostituiscirequire 'fcgi'require 'rubygems'
require_gem 'fcgi'Suggerimenti
Assicurati di cancellare tutti i file di sessione ruby nella directory /tmp prima di switchare a dispatch.fcgi. Se hai testao con cgi, ci potrebbero essere dei permessi differenti che Apache (fastcgi) legge e che potrebber ocausare problemi.
Se vuoi verificare se fastcgi sta eseguendo con ruby, prova a copiare questo codice in test.fcgi (nella directory rails/public). Assicurati che il file abbia i permessi settati a 755 (chmod 755 test.fcgi).
#!/usr/local/bin/ruby
require 'cgi'
require 'rubygems'
require_gem 'fcgi'
FCGI.each_cgi do |cgi|
content = ''
env = []
cgi.env_table.each do |k,v|
env << [k,v]
end
env.sort!
env.each do |k,v|
content << %Q(#{k} => #{v}<br>\n)
end
cgi.out{content}
end
———
Il test qui sopra funzionava ma non sono riuscito a far sí che il dispatcher funzionasse con Apache2 (self built) fino a quando ho cambiato le dipendenze di rails-0.14.1/lib/fcgi_handler.rb con:
require 'cgi' require 'rubygems' require_gem 'fcgi' require 'logger' require 'dispatcher' require 'rbconfig'class RailsFCGIHandler
…
Non so perché, ma ha funzionato.
———
Mi sono scontrato con questo problema durante la configurazione di Apache: avevo il MultiViews abilitato, e questo ridirigeva /some/url.html a /some/url (non voglio estensioni di file negli URL). La seconda regola causa loop infiniti con il file .htaccess di Rails, e il MultiView crea conflitti con la cache di Rails. Quindi, disabilita il MultiView e presta attenzione alle ridirezioni. - Matijs van Zuijlen——
-