Apache + Mongrel Cluster = Неправильная конфигурация сервера!
Я пытаюсь заставить Ruby on Rails работать на Windows 2003 Server. Я установил сервис Mongrel и Apache (и RoR и т. Д.).
Когда я работаю с приложением, используя только Mongrel, все получается идеально.
Итак, теперь я дошел до конфигурации Apache... Видимо, я не могу понять, что это правильно. Когда я захожу на мои страницы, мне возвращают правильный HTML, но он возвращается с Content-Type, установленным в text/plain вместо html или xhtml... Кроме того, если я пытаюсь добраться до одной из страниц css, я получить 500 Внутренняя ошибка сервера (возвращается как HTML, возвращается с text/plain Content-Type).
Вот мой файл виртуального хоста (любая помощь будет ОЧЕНЬ ОЧЕНЬ ОЧЕНЬ ОЧЕНЬ признательна!):
NameVirtualHost *:8080
#Proxy balancer section (create one for each ruby app cluster)
<Proxy balancer://myapp_cluster>
Order allow,deny
Allow from all
BalancerMember http://rails.localdomain.com:3010
#BalancerMember http://myapp:3011
</Proxy>
#Virtual host section (create one for each ruby app you need to publish)
<VirtualHost *:8080>
ServerName rails.localdomain.com
DocumentRoot c:/www/app/public/
<Directory c:/www/app/public/ >
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
ProxyRequests Off
ProxyPass / balancer://myapp_cluster
ProxyPassReverse / balancer://myapp_cluster
ProxyPreserveHost On
#SetOutputFilter INFLATE;DEFLATE
#SetOutputFilter proxy-html
#log files
ErrorLog c:/www/log/app_error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog c:/www/log/app_access.log combined
#Rewrite stuff
RewriteEngine On
# Check for maintenance file and redirect all requests
RewriteCond %{DOCUMENT_ROOT}/system/maintenance.html -f
RewriteCond %{SCRIPT_FILENAME} !maintenance.html
RewriteRule ^.*$ /system/maintenance.html [L]
# Rewrite index to check for static
RewriteRule ^/$ /index.html [QSA]
# Rewrite to check for Rails cached page
RewriteRule ^([^.]+)$ $1.html [QSA]
# Redirect all non-static requests to cluster
RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} !-f
RewriteRule ^/(.*)$ balancer://myapp_cluster%{REQUEST_URI} [P,QSA,L]
# Deflate
#AddOutputFilterByType DEFLATE text/html text/plain text/xml application/xml application/xhtml+xml text/javascript text/css
#BrowserMatch ^Mozilla/4 gzip-only-text/html
#BrowserMatch ^Mozilla/4\.0[678] no-gzip
#BrowserMatch \\bMSIE !no-gzip !gzip-only-text/html
</VirtualHost>
2 ответа
Хорошо, вот часть ответа. В этой части рассматриваются файлы.css и.js. Видимо, это относится к конечным слешам... Мне пришлось удалить некоторые слэши и добавить другие...
Удалены:
DocumentRoot c:/www/app/public
<Directory c:/www/app/public >
Добавлено:
ProxyPass / balancer://myapp_cluster/
ProxyPassReverse / balancer://myapp_cluster/
Теперь я могу просто поднять файлы.css и.js...
ОДНАКО: у меня все еще есть проблема Апача, НЕ посылающего правильные заголовки. Прямо внутри HTML, который я возвращаю, у меня есть это:
Но это по-прежнему возвращает текст / обычный (DefaultType, как установлено в httpd.conf).
ПОЖАЛУЙСТА, если у кого есть идеи, дайте мне знать!!!!!
Спасибо
Я настоятельно рекомендую хостинг Linux для RoR. Единорог и Пассажир - намного лучшие инструменты, чем кластеры беспородных. Смотрите сообщение в блоге github об этом.