Skip to content
tommyblue edited this page Mar 7, 2013 · 6 revisions

Se avete seguito la guida sull'installazione di base adesso potete utilizzare l'applicazione in modalità development. Questa modalità può comunque essere usata stabilmente lanciando l'applicazione ogni volta che se ne ha bisogno, ma se si ha un server (casalingo o in una server-farm) può risultare utile effettuare un deploy di produzione per avere l'applicazione sempre a disposizione o metterla a disposizione di più persone (Rubyfatt è infatti multiutente).

Il consiglio è quello di usare Capistrano (per cui vi rimando direttamente alla sua guida), di seguito alcune istruzioni generiche e la procedura per effettuare un deploy senza utilizzarlo.

Per iniziare si modifica nel file config/initializers/devise.rb il valore:

config.mailer_sender = "[email protected]"

inserendo l'indirizzo email che si desidera che l'applicazione imposti come From: nelle email che invia, ad esempio per il recupero delle password perse.

Assets

Prima di mettere in produzione l'applicazione bisogna precompilare gli assets, per farlo:

cd ~/PATH_TO_RUBYFATT
bundle exec rake assets:precompile

Per precompilare è necessario avere un runtime JS, come NodeJS. Se sul vostro server non è installato potete scommentare la riga gem 'therubyracer' e lanciare il solito bundle install prima di precompilare.

Nginx e Unicorn

Per utilizzare Nginx e Unicorn per il deploy va scommentata la gemma di unicorn nel file Gemfile:

gem 'unicorn'

una volta scommentata la riga va nuovamente eseguito bundle install. Consiglio anche di utilizzare la modalità deployment di bundler per freezare le gemme:

bundle install --deployment

Si può quindi lanciare l'applicazione:

cd ~/PATH_TO_RUBYFATT
bundle exec unicorn_rails -E production -l ~/PATH_TO_RUBYFATT/tmp/sockets/rubyfatt.sock

con questa configurazione viene usato il socket unix ~/PATH_TO_RUBYFATT/tmp/sockets/rubyfatt.sock a cui si collegherà Nginx. La configurazione di Nginx sarà la seguente:

upstream backend_rubyfatt {
    server unix:/ABSOLUTE_PATH_TO_RUBYFATT/tmp/sockets/rubyfatt.sock;
}

server {
    listen [::]:80;
    server_name  my_cool.domain.com;

    access_log  /var/log/nginx/rubyfatt.access.log;
    error_log  /var/log/nginx/rubyfatt.error.log;
    
    location / {
            proxy_pass http://backend_rubyfatt;
            proxy_redirect off;

            proxy_set_header        Host    $host;
            proxy_set_header        X-Real-IP       $remote_addr;
            proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;

            root   /ABSOLUTE_PATH_TO_RUBYFATT/public/;
            index  index.html index.htm;
    }

    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
            root   /var/www/nginx-default;
    }
    location ~* ^.+\.(jpg|jpeg|gif|png|ico|css|zip|tgz|gz|rar|bz2|txt|tar|wav|bmp|rtf|js|flv|swf|html|htm|ttf|woff)$
    {
            root   /ABSOLUTE_PATH_TO_RUBYFATT/public;
    }
}

Se tutto va come previsto all'indirizzo http://my_cool.domain.com dovrebbe rispondere la vostra installazione di Rubyfatt (ovviamente dovete configurare a modo il DNS).

Clone this wiki locally