Salve ragazzi, mentre stavo effettuando il mio PRIMO deployment ho
incontrato due problemi.
Sul mio vps (ubuntu 11.04) ho installato senza alcun problema RVM, ruby
1.9.2, l’ultima versione stabile di rails e passenger.
Ho creato una semplice applicazione di prova (un veloce scaffold
automatico) e l’ho messa nella webroot di apache.
Nel mio caso la webroot è /var/www/ mentre la cartella della mia app è,
di coseguenza, /var/www/myapp.
Nel file di configurazione di apache ho scritto:
Listen 888
NameVirtualHost *:888
<VirtualHost *:888>
RailsEnv production
DocumentRoot /var/www/myapp/public
<Directory /var/www/myapp/public>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
In modo tale da avere accesso all’app sulla porta 888.
Ora se provate a visitare l’url dell’app http://maurovps.no-ip.org:888/
noterete che, oltre ad andare molto lenta, non vengono caricate le
immagini. Come se ci fosse un qualche tipo di errore nella
configurazione di apache…
Inoltre, se provate a visitare la pagina del controller che ho creato
http://maurovps.no-ip.org:888/posts noterete che esce un errore…
Sapete aiutarmi? Che casotto ho combinato ?
di coseguenza, /var/www/myapp.
Personalmente metterei l’applicazione FUORI da www. Altrimenti risulta
accessibile (o sbaglio)
Puoi tranquillamente craere una folder
/var/apps
e buttare la tua app li dentro.
In Virtual Host avrai:
DocumentRoot /var/apps/myapp/public
Ora se provate a visitare l’url dell’app http://maurovps.no-ip.org:888/
noterete che, oltre ad andare molto lenta, non vengono caricate le
immagini. Come se ci fosse un qualche tipo di errore nella
configurazione di apache…
hai lanciato rake assets:precompile?
Forse in produzione non hai compilato gli assets
Nel caso guarda la guida di rails sugli assets pipeline
Ciao
Il giorno 15 marzo 2012 13:28, Mauro M. [email protected] ha
scritto:
di coseguenza, /var/www/myapp.
<Directory /var/www/myapp/public>
Ora se provate a visitare l’url dell’app http://maurovps.no-ip.org:888/
noterete che, oltre ad andare molto lenta, non vengono caricate le
immagini. Come se ci fosse un qualche tipo di errore nella
configurazione di apache…
Inoltre, se provate a visitare la pagina del controller che ho creato
http://maurovps.no-ip.org:888/posts noterete che esce un errore…
Sapete aiutarmi? Che casotto ho combinato ?
In produzione disabilitata l’asset pipeline, quindi per “vedere le
immagini” devi necessariamente lanciare
RAILS_ENV=production rake assets:precompile
Per quanto riguarda l’altro errore non so, forse dipende dal database?
Puoi postare lo stacktrace dal log?
Ciao,
Matteo
Ragazzi anzi tutto grazie per i consigli e per le risposte!
Ho spostato come mi avete consigliato l’applicazione dalla webroot di
apache e l’ho messa in /home/rails/myapp.
Poi dopo aver lanciato rake db:setup RAILS_ENV=“production” e bundle
exec rake assets:precompile l’applicazione carica bene le immagini e
anche il controller
Ora però ho ancora due problemi.
Prova ad accedere all’app http://maurovps.no-ip.org:888/ e notate che se
clicco sul link per vedere l’enviroments mi da un errore. Forse è dovuto
a RVM?
Inoltre se provo a caricare il controller posts andando all’indirizzo
http://maurovps.no-ip.org:888/posts ora, a differenza di prima, il
controller come potete vedere viene caricato.
Se vado per aggiungere un record si carica il form correttamente ma se
vado a salvare il record mi esce un errore
Entrambi i due problemi scompaiono se avvio il server di rails (rails
server). Quindi non penso ci siano errori nell’app. Ci deve essere
qualche errore nella configurazione…
Sapete aiutarmi anche in questo problema?
Ho scoperto che il problema era dovuto al fatto che la cartella db non
aveva i permessi di scrittura e quindi il database non poteva essere
aggiornato.
Inoltre, se provate a visitare la pagina del controller che ho creato
http://maurovps.no-ip.org:888/posts noterete che esce un errore…
Spiegazione for dummies (come me)
Per fare debug in produzione devi accedere ai logs (non ti spara gli
errori sul browser come in development)
Visto che hai accesso alla macchina di produzione la cosa e’ facile:
ssh sulla macchina
Entri nella cartella dell’app (subdir current se stai usando capistrano)
e fai:
tail -f log/production.log
(opzione -f tiene il buffer aperto)
Reload dlla pagina web e puoi leggerti l’errore
Ciao