Mostrando postagens com marcador apache. Mostrar todas as postagens
Mostrando postagens com marcador apache. Mostrar todas as postagens

sexta-feira, 11 de setembro de 2009

Apache + Passenger retornando 404 para qualquer coisa

Ao rodar o Apache + Passenger agora há pouco, estava obtendo sempre um erro 404. Olhando nos logs de erro do apache:
# tail /var/log/apache2/error.log
[Fri Sep 11 11:24:50 2009] [error] [client 172.20.6.9] File does not exist: /var/www/solicitacoes
[Fri Sep 11 11:26:16 2009] [error] [client 172.20.6.9] File does not exist: /var/www/solicitacoes


Muito estranho, já que meu virtual host apontava para uma pasta completamente diferente. Vamos ver então como o apache está vendo os virtual hosts:
# apache2ctl -S
apache2: Could not reliably determine the server's fully qualified domain name, using 172.20.6.250 for ServerName
VirtualHost configuration:
wildcard NameVirtualHosts and _default_ servers:
*:80 is a NameVirtualHost
default server 172.20.6.250 (/etc/apache2/sites-enabled/000-default:1)
port 80 namevhost 172.20.6.250 (/etc/apache2/sites-enabled/000-default:1)
port 80 namevhost 172.20.6.250 (/etc/apache2/apache2.conf:287)
Syntax OK


Há dois virtual hosts na porta 80, e um deles, aquele da pasta sites-enabled, não é o que eu configurei. Solução? rm no arquivo /etc/apache2/sites-enabled/000-default e tudo ok.

sexta-feira, 5 de junho de 2009

Configurar múltiplas aplicações Rails no mesmo servidor com mod_passenger (a.k.a. mod_rails)

No apache2.conf (aqui /etc/apache2/apache2.conf):

ServerName ip_do_servidor
DocumentRoot /home/rodrigo/desenvolvimento/temp # uma pasta que não é de app Rails
RailsBaseURI /myapp # sub-url da sua aplicação


Dentro da pasta apontada como DocumentRoot, é necessário criar um link simbólico para a pasta public da aplicação Rails referenciada.

Além disto, você deve incluir na seção de configuração do config/environment.rb:
config.action_controller.relative_url_root = "/myapp"

O problema com esta configuração no environment.rb é que ela serve apenas para o ambiente de produção. Porém, é possível criar uma solução genérica (extraída daqui) que resolve o problema sem a necessidade de mexer no environment.rb:
# automatic relative_url_root fix
# for Phusion Passenger 2.2.2 and Rails 2.3.2 (>= 2.2.2)
# by pts@fazekas.hu at Mon May 4 20:48:38 CEST 2009
# from http://ptspts.blogspot.com/2009/05/how-to-fix-railsbaseuri-sub-uri-with.html
fail unless ActionController::Request # check loaded
module ActionController
class Request
def initialize(env)
@env = env # Rack::Request#initialize does only this
path = request_uri.to_s[/\A[^\?]*/]
sn = @env['SCRIPT_NAME']
if (RAILS_ENV == 'production' and
(sn.empty? or sn.starts_with?('/')) and
path == sn + @env['PATH_INFO'])
Base.relative_url_root = sn
end
end
end
end


O único problema que ainda resta é que as imagens definidas no CSS - e se você é um desenvolvedor profissional, ou seja, usa padrões web, vai ter imagens definidas no CSS - é que arquivos CSS, até onde sei, são estáticos e os links serão diferentes nos ambientes development/test e production.

Uma solução que pensei agora rapidamente é criar um script que processe os CSS's e altere os links e que seja incluído nos recipes do Capistrano. Mas vou procurar um pouco mais pra ver se há uma solução dentro do Rails.