Arquivos da Categoria: deploying

Há bastante tempo eu (lonefreak) e krateria temos batido cabeça tentando entender porque uma aplicação em Rails, que rodava tranquila com Mongrels estava com problemas de lentidão no Apache (em ambos os casos dentro de um FreeBSD. Hoje, enfim, encontramos a solução.

Ao que parece, todo o problema residia na forma como o FastCGI, módulo utilizado pelo Apache, estava tendo problemas para iniciar uma instância do módulo, estivesse ele em modo Dynamic, Static ou External. Depois de fuchar e mexer um bocado, acabamos topando com este tutorial, realmente muito útil e que sugere a utilização de outro módulo, o fcgid. E não é que funcionou mesmo?

E foi relativamente simples de resolver. Leve em consideração que já tínhamos aqui um ambiente estável rodando Rails no Apache, com FastCGI, apenas muito lento. Então as mudanças não foram tantas. Instalamos o pacote do fcgid pelo ports e não pelo gem (o que por si só pode salvar você de muita dor de cabeça) e usamos a biblioteca fcgi_handler, ao invés da fcgi (com ou sem rubygems), como indicado no tutorial.

O fcgid não foi muito comentado e há pouca documentação disponível, mas pareceu muito mais robusto e estável que o FastCGI. Além disso, nos livrou do problema de tentar o Rails com o LigHTTPD.

See ya

Ao tentar subir um serviço no Windows, pode aparecer uma mensagem indicando que o serviço iniciou e parou, e que muitos serviços fazem isso por não terem tarefas a realizar naquele momento. Não se deixe enganar por esse engano estúpido de tratamento de erro do Windows.

Vá ao event log e procure pelo erro ao subir o serviço. Se encontrar algo desse tipo:

Service cannot be started. System.Configuration.ConfigurationErrorsException: Configuration system failed to initialize —> System.Configuration.ConfigurationErrorsException: Invalid character in the given encoding. Line 4, position 33. (C:\path\to\service\config.exe.config line 4) —> System.Xml.XmlException: Invalid character in the given encoding. Line 4, position 33.
at System.Xml.XmlTextReaderImpl.Throw(Exception e)
at System.Xml.XmlTextReaderImpl.Throw(String res, String arg)
at System.Xml.XmlTextReaderImpl.InvalidCharRecovery(Int32& bytesCount, Int32& charsCount)
at System.Xml.XmlTextReaderImpl.GetChars(Int32 maxCharsCount)
at System.Xml.XmlTextReaderImpl.ReadData()
at System.Xml.XmlTextReaderImpl.ParseCDataOrComment(XmlNodeType type, Int32& outStartPos, Int32& outEndPos)
at System.Xml.XmlTextReaderImpl.ParseCDataOrComment(XmlNodeType type)
at System.Xml.XmlTextReaderImpl.ParseComment()
at System.Xml.XmlTextReaderImpl.ParseElementContent()
at System.Xml.XmlTextReaderImpl…

Trata-se certamente do encoding do arquivo de configuração em questão (ou qualquer outro arquivo envolvido no processo). Talvez você tenha alterado o encoding acidentalmente ao editar o arquivo, ou então algum desenvolvedor já tenha repassado o artigo pra você com o encoding incorreto.

Enfim, basta que você altere o encoding do(s) arquivo(s) (nesse caso, utilizei o encoding UTF-8, que deve funcionar na maioria das vezes) e voilá.

Service started successfully.

Particularmente eu gosto de usar o ActiveState Komodo para esta tarefa, mas existem montes de aplicativos para se fazer isso.

See ya