Recentemente recebi a tarefa de migrar todas as aplicações PHP que oferecemos na Configr para OpenLiteSpeed, facilitando a vida dos clientes ao oferecer suporte ao .htaccess e melhorando a performance dos sites, principalmente em ambientes com pouca memória.

No geral, não tem sido uma tarefa tão complexa. A primeira aplicação que migramos foi o Wordpress. Desde Junho todo Wordpress criado na plataforma da Configr já vem com OpenLiteSpeed por trás e com o plugin do Litespeed Cache instalado e pronto para ativar. Depois foi a vez do Prestashop e do Opencart. Até que finalmente chegamos no Magento 2. E aí a coisa desandou e tudo deu errado.

Absolutamente TODAS as instalações de Magento2 no OpenLiteSpeed davam erro, entravam em loop e torravam toda a memória do meu servidor de testes. Absolutamente toda configuração e manual disponibilizado pelo OLS falhava.

Afinal, o que estava errado? Por que só eu não conseguia rodar um Magento 2 no OLS? Desisti disso por um tempo e voltei para minhas outras tarefas… até que tive um problema com o Wordpress de um cliente que me lembrou os problemas do Magento, e aí fui investigar mais fundo…

Não tenho certeza de quando o problema apareceu, mas testei nas versões 1.4.47 até a 1.4.49 e ele estava presente. O OpenLiteSpeed estava dando auto-load apenas no .htaccess da raiz e de um sub-diretório. Se houvesse um .htaccess dentro de um sub-diretório dentro de outro, o OLS não conseguia criar o contexto dele e ler as regras.

Fiz vários testes, tentando simplificar cada vez mais o cenário, e o resultado era sempre o mesmo:

DocRoot = /home/testes.configr.com/www/

/home/testes.configr.com/www/.htaccess - Regras aplicadas

/home/testes.configr.com/www/dir1/.htaccess - Regras aplicadas

/home/testes.configr.com/www/dir1/dir2/.htaccess - Regras ignoradas


Como não parecia ser um erro meu, resolvi criar um post no fórum de Bugs do OpenLiteSpeed. Relatei o problema que estávamos encontrando e criei um cenário simplificado para facilitar o debug. Em apenas três dias trocando experiências com um dos desenvolvedores do OpenLiteSpeed, ele me entregou uma versão nova do OLS que ainda não foi oficialmente lançada (1.4.50). Instalei no meu servidor de testes e… Funcionou! Só pra ter certeza de que não era um caso isolado, instalei essa versão em alguns outros clientes que tinham .htaccess em vários níveis diferentes, e de repente o log começou a reportar o carregamento de novas regras de rewrite. Com essa vitória conquistada, resolvi voltar pra sofrência do Magento 2.

Qual a relação disso com os problemas catastróficos do Magento 2? Bom, basicamente o guia oficial de Magento 2 no site do OpenLiteSpeed está desatualizado. Desatualizado e ERRADO. Eles assumem uma estrutura de instalação que vai contra a documentação do Magento 2, e pior: o bug na leitura do .htaccess gera um loop de redirecionamento em que toda imagem gera uma nova requisição para o PHP, estourando a memória do servidor em questão de poucos acessos.

UPDATE: 17 dias depois dessa experiência, já estamos com o Magento 2 rodando perfeitamente na Configr. E inclusive mandei um guia novo para a galera do OpenLiteSpeed e eles atualizaram a postagem no fórum deles com nossas informações. Massa, né?

Ah, lançaram oficialmente a versão 1.4.50 com essa correção e várias outras. Mas nenhum crédito a nós. Nisso, o nginx é melhor. Todo bug descoberto pela comunidade é devidamente creditado.

Tags

comentários (0)

Sem comentários