Questo tutorial segue un’installazione su debian Etch, nel nostro caso la macchina è un Apple Mini Mac (PPC).
Con Etch è diventato davvero immediato installare Ruby on Rails.
Prima aggiorniamo tutto e verifichiamo che alcuni pacchetti base siano presenti nella macchina:
$ sudo apt-get install gcc g++ make libc6-dev flex openssl curl wget bison lib64stdc+6 libstdc+6-4.1-doc
Installiamo Mysql 5
$ sudo apt-get install mysql-server libmysqlclient15-dev mytop
Ora si tratta di installare ruby:
$sudo apt-get install ruby ruby-dev rdoc irb rubygems libzlib-ruby libmysql-ruby
Vengono così installati ruby 1.8.5 e rubygems 0.9.0
Ora ci serve installare Subversion
$ sudo apt-get install subversion subversion-tools
Installiamo Imagemagick
$ sudo apt-get install imagemagick libmagick9-dev
Installazione di Ruby on Rails
Ora finalmente possiamo usare rubygems per installare Ruby on Rail e gli altri pacchetti necessari!
$ sudo gem install rails -y
installiamo un driver di connessione a mysql scritto in C che sostituisca l’originale driver scritto in Ruby:
$ sudo gem install mysql
e alcuni pacchetti necessari per la nostra applicazione, nel mio caso:
$ sudo gem install fastercsv map_by_method net-sftp net-ssh radius rmagick ferret
Installazione di SuperRedCloth
Mancherebbe da installare Redcloth, purtroppo la versione attuale ha diversi problemi sia come prestazioni che come risultati di rendering, installare la futura versione comporta qualche difficoltà in più:
In particolare ora redcloth necessita Ragel, un’interfaccia a eseguibili C, C++ che permette di incrementare le prestazioni di 10x.Ho preferito un’installazione da sorgenti rispetto al pacchetto in debian stable forse troppo datatato:
$ cd source
$ wget http://www.cs.queensu.ca/~thurston/ragel/ragel-5.20.tar.gz
$ tar xvf ragel-5.20.tar.gz
$ cd ragel-5.20
$ ./configure
$ make
$ sudo make install
A questo punto installamo da repository Superredcloth, la futura versione di Redcloth 4:
$ cd source
$ svn co http://code.whytheluckystiff.net/svn/redcloth/branches/superredcloth
$ cd superredcloth/
$ rake
$ rakegem
$ sudo gem install pkg/superredcloth-1.163.gem
Installazione di Mongrel
Mongrel:http://mongrel.rubyforge.org/ è un server HTTP scritto in ruby. in questo tutorial imposteremo un cluster di server mongrel che si occuperanno di servire la nostra applicazione rails. Il frontend sarà affidato al server http Nginx.
$ sud gem install mongrel mongrel_cluster -y
Bisogna poi effettuare delle operazione per lanciare Mongrel come un servzio, questa è una versione leggermente migliorata dello scipt init.d che viene con mongrel_cluster (/var/lib/gems/1.8/gems/mongrel_cluster-0.2.1/resources/mongrel_cluster)
in /etc/init.d/mongrel_clusters:
#!/bin/bash
#
# Copyright (c) 2006 Bradley Taylor, bradley@railsmachine.com
#
# mongrel_cluster Startup script for Mongrel clusters.
#
# chkconfig: - 85 15
# description: mongrel_cluster manages multiple Mongrel processes for use \
# behind a load balancer.
#
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local:/usr/local/sbin:/usr/local/bin:/var/lib/gems/1.8/bin
CONF_DIR=/home/ettober/Sites/trunk_carta
RETVAL=0
# Gracefully exit if the controller is missing.
which mongrel_cluster_ctl >/dev/null || exit 0
# Go no further if config directory is missing.
[ -d "$CONF_DIR" ] || exit 0
case "$1" in
start)
mongrel_cluster_ctl start -c $CONF_DIR
RETVAL=$?
;;
stop)
mongrel_cluster_ctl stop -c $CONF_DIR
RETVAL=$?
;;
restart)
mongrel_cluster_ctl restart -c $CONF_DIR
RETVAL=$?
;;
*)
echo "Usage: mongrel_cluster {start|stop|restart}"
exit 1
;;
esac
exit $RETVAL
a questo punto:
$ sudo chmod +x /etc/init.d/mongrel_cluster
$ sudo update-rc.d mongrel_cluster defaults
Installazione Ngnix
Nginx, è un ottimo server web e proxy di fabbricazione russa. malgrado non sia ancora molto conosciuto è un’ottima per ottenere alte prestazioni, stabilità e un consumo ridotto di memoria. E’ attivo un wiki:http://wiki.codemongers.com/ dove una parte della documentazione è in via di traduzione dal russo.
alcuni prterequisiti:apt-get install libpcre3-dev zlib1g-dev
su macchine i386 potremmo scaricare il pacchetto .deb da http://deb.wapper.ru/nginx/. Nel nostro caso siamo su PowerPC, scarichiamo quindi i sorgenti da: http://sysoev.ru/nginx/download.html
$ cd /source bq. $ wget http://sysoev.ru/nginx/nginx-0.5.17.tar.gz bq. $ tar -xvf nginx-0.5.17.tar.gz
ora si possono configurare i sorgenti, maggiori inso su: http://wiki.codemongers.com/NginxInstall
$ ./configure—sbin-path=/usr/local/sbin—pid-path=/var/run—conf-path=/etc/nginx.confcat /et —error-log-path=/var/log/ngnx—http-log-path=/var/log/ngnx
Configuration summary
+ threads are not used
+ using system PCRE library
+ OpenSSL library is not used
+ md5 library is not used
+ sha1 library is not used
+ using system zlib library
nginx path prefix: "/usr/local/nginx"
nginx binary file: "/usr/local/sbin"
nginx configuration file: "/etc"
nginx pid file: "/var/run"
nginx error log file: "/var/log/ngnx"
nginx http access log file: "/var/log/ngnx"
nginx http client request body temporary files: "/usr/local/nginx/client_body_temp"
nginx http proxy temporary files: "/usr/local/nginx/proxy_temp"
nginx http fastcgi temporary files: "/usr/local/nginx/fastcgi_temp"
$ sudo make install clean
a questo punto è necessario un init.d script per attivare nginx all’avvio del server:
$ sudo vi /etc/init.d/nginx
#! /bin/sh
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local:/usr/local/sbin:/usr/local/bin
DAEMON=/usr/local/sbin/nginx
NAME=nginx
DESC="Nginx HTTP Server"
test -x $DAEMON || exit 0
# Get lsb functions
#. /lib/lsb/init-functions
. /etc/default/rcS
start() {
echo "Starting $DESC... "
# echo "Starting $DESC: "
if ! start-stop-daemon --start --quiet --oknodo --exec $DAEMON
>/dev/null 2>&1; then
status=$?
echo $status
return $status
fi
log_end_msg 0
return 0
}
case "$1" in
start)
start
;;
stop)
echo "Stopping $DESC: "
start-stop-daemon --stop --quiet --oknodo --exec $DAEMON
echo $?
;;
restart|force-reload)
$0 stop
sleep 1
start
#echo "$NAME."
;;
*)
N=/etc/init.d/$NAME
echo "Usage: $N {start|stop|restart|force-reload}" >&2
exit 1
;;
esac
exit 0
$ sudo chmod +x /etc/init.d/nginx bq. $ sudo update-rc.d nginx defaults bq. $ sudo /etc/init.d/nginx start
Miglioramento delle prestazioni
La nostra macchina, un Mac mini G4 con soli 256mb di ram ha bisogno di una certo affinamento delle impostazioni per ottenere prestazioni adeguate:
evitiamo di avviare il login grafico all’avvio:
$ sudo mv /etc/rc2.d/S21gdm /etc/rc2.d/_S21gdm