2011-11-14 10 views
8

Ho installato Rails 3.1, Unicorn e Apache. Le mie impostazioni di Apache sono sotto e production.rb assomiglia a this. Mi piace usare lo streaming h264 ma dal momento che Rails sta servendo questi file video, la Mod di Apache non funzionerà.Rails 3.1, Unicorn e Apache: file statici

DocumentRoot /blabla/current/public 

RewriteEngine On 
Options FollowSymLinks 

<Proxy balancer://unicornservers> 
    BalancerMember http://127.0.0.1:4000 
</Proxy> 

# Redirect all non-static requests to rails 
RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} !-f 
RewriteRule ^/(.*)$ balancer://unicornservers%{REQUEST_URI} [P,QSA,L] 

ProxyPass/balancer://unicornservers/ 
ProxyPassReverse/balancer://unicornservers/ 
ProxyPreserveHost on 

<Proxy *> 
Order deny,allow 
Allow from all 
</Proxy> 

XSendFile On 
XSendFileAllowAbove on 

Devo abilitare serve_static_assets o non riesco a scaricare materiale statico. Ho anche precompilato le risorse ma non farà alcuna differenza in quanto nessun file è disponibile dalla directory pubblica a meno che Rails (Rack I guess) stia facendo la pubblicazione.

Devo usare config.action_controller.asset_host o c'è qualcosa di sbagliato nella mia configurazione di Apache.

risposta

19

Ho un post per questo problema (sì è anche successo a me), spero che possa essere d'aiuto.

Il punto chiave è quello di rimuovere ProxyPass/balancer://unicornservers/ modello, perché sarebbe ignorare il tuo Rewrite Rule

Qui è la mia configurazione del server Apache.

<VirtualHost *:80> 

    ServerName example.org 
    DocumentRoot /dir/of/your/project 

    RewriteEngine On 

    # Redirect all non-static requests to unicorn 
    RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} !-f 
    RewriteRule ^/(.*)$ balancer://unicornservers%{REQUEST_URI} [P,QSA,L] 

    <Proxy balancer://unicornservers> 
    BalancerMember http://127.0.0.1:2007 
    </Proxy> 

</VirtualHost> 
+0

Questo ha funzionato, grazie! btw. Il tuo articolo punta a localhost. – jiriki

+0

Ho risolto il collegamento, grazie! – Manic

+1

perfetto, ha perfettamente senso, tutte le guide che ho trovato per le guide 3 + apache + unicon/thin hanno questo problema – Rob

0

Proprio dal codice production.rb:

# Specifies the header that your server uses for sending files 
# config.action_dispatch.x_sendfile_header = "X-Sendfile" # for apache 
# config.action_dispatch.x_sendfile_header = 'X-Accel-Redirect' # for nginx 

Provate a rimuovere il commento di una linea con l'intestazione 'X-Sendfile', riavviare piscina del Unicorn e riprovare.

+0

Grazie, ma questo non ha aiutato. – jiriki