2011-11-14 29 views
8

Tôi có Rails 3.1, Unicorn và Apache setup. Cài đặt Apache của tôi ở bên dưới và production.rb trông giống như this. Tôi thích sử dụng streaming h264 nhưng kể từ khi Rails đang phục vụ các tập tin video, Apache Mod sẽ không hoạt động.Rails 3.1, Unicorn và Apache: các tệp tĩnh

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 

Tôi phải bật serve_static_assets hoặc tôi không thể tải xuống bất kỳ nội dung tĩnh nào. Tôi cũng đã biên dịch trước tài sản nhưng sẽ không tạo ra bất kỳ sự khác biệt nào vì không có tệp nào có sẵn từ thư mục công cộng trừ khi Rails (Rack I guess) đang thực hiện việc phân phát.

Tôi có nên sử dụng config.action_controller.asset_host hoặc có sự cố với cấu hình Apache của tôi không.

Trả lời

19

Tôi có một số post cho vấn đề này (vâng nó cũng xảy ra với tôi), hy vọng nó sẽ giúp ích.

Điểm mấu chốt là để loại bỏ ProxyPass/balancer://unicornservers/ mẫu, bởi vì nó sẽ ghi đè lên bạn Rewrite Rule

Dưới đây là cấu hình máy chủ apache của tôi.

<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

Điều này làm việc, cảm ơn! btw. Bài viết của bạn liên kết điểm đến localhost. – jiriki

+0

Tôi đã sửa liên kết, cảm ơn bạn! – Manic

+1

hoàn hảo, có ý nghĩa hoàn chỉnh, tất cả các hướng dẫn tôi đã tìm thấy cho đường ray 3 + apache + unicon/thin có vấn đề này – Rob

0

Chỉ cần từ mã production.rb của bạn:

# 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 

Cố gắng bỏ ghi chú một phù hợp với tiêu đề 'X-Sendfile', khởi động lại hồ bơi của Unicorn của bạn và thử lại.

+0

Cảm ơn nhưng điều này không hữu ích. – jiriki

Các vấn đề liên quan