2011-11-14 15 views
8

Mam ustawienia Rails 3.1, Unicorn i Apache. Moje ustawienia Apache są poniżej i plik production.rb wygląda na this. Lubię korzystać z przesyłania strumieniowego h264, ale ponieważ Rails podaje te pliki wideo, Apache Mod nie będzie działać.Rails 3.1, Unicorn i Apache: pliki statyczne

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 

Muszę włączyć serve_static_assets lub nie mogę pobrać żadnych statycznych rzeczy. Mam również prekompilowane zasoby, ale nie zrobi to żadnej różnicy, ponieważ żaden plik nie jest dostępny z publicznego katalogu, chyba że Railsy (Rack, jak sądzę) wykonują porcję.

Czy powinienem używać config.action_controller.asset_host, czy coś jest nie tak z moją konfiguracją Apache'a.

Odpowiedz

19

Mam post dla tego problemu (tak też mi się stało), mam nadzieję, że to pomoże.

Kluczową kwestią jest usunięcie ProxyPass/balancer://unicornservers/ wzór, ponieważ byłoby zastąpić swoją Rewrite Rule

Oto mój serwer apache config.

<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

To działało, dziękuję! btw. Twój link do artykułu wskazuje na localhost. – jiriki

+0

Naprawiłem link, dziękuję! – Manic

+1

idealny, ma sens, wszystkie przewodniki, które znalazłem dla szyn 3 + apache + unicon/thin mają ten problem – Rob

0

Tylko z kodu 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 

Spróbuj odkomentować linię z nagłówkiem „x-Sendfile”, uruchom basen swojego jednorożca i spróbuj ponownie.

+0

Dzięki, ale to nie pomogło. – jiriki