Se você acompanha meu blog, deve ter percebido que, nas últimas semanas, ele ficou terrivelmente lento e instável. Digo “nas últimas semanas” porque foi quando eu percebi o problema, mas ele já dava desde antes sinais de que algo vinha errado. Cada nova atualização do Wordpress o tornava ainda mais lento e criava novas incompatibilidades com os “plug-ins” que eu usava.
Há muito tempo eu estava insatisfeito com o desempenho geral do blog, mas hesitava em tomar providências porque, vinculado ao Wordpress, havia todo um histórico desde 2013. Eram quase oito anos ininterruptos utilizando o mais famoso sistema de gerenciamento de conteúdo de todo o mundo — e isso não é algo que se possa jogar fora da noite para o dia. Isso começou a mudar, no entanto, em meados de fevereiro, quando eu perdi o histórico do meu contador de visitas.
Eu gostava de exibir na homepage que o meu blog tinha quase 300.000 visitantes desde dezembro de 2013 (quando eu instalara o contador). Ainda mantive o contador, mesmo sem o histórico, porque me era útil saber quantas pessoas visitavam o meu blog, mas essa perda já me quebrara um pouco o encanto.
Então, no fim do mês de março, percebi que a lentidão que se
instalara tinha chegado a um ponto extremo. A homepage dava erro
504
e não carregava. Ocasionalmente o blog voltava a
funcionar, então eu percebia, pelo contador de visitas, que a minha
média diária de visitantes caíra de mais de 200 (no auge, entre
2017 e 2018) para menos de 70 ao dia. Desde 2010, quando este
humilde blog ainda residia no Blogspot, eu não tinha uma média
diária de visitas tão ruim.
Isto, claro, me impactou negativamente em visibilidade de anúncios e em relevância de pesquisas no Google. Finalmente eu me via diante da necessidade de tomar providências definitivas.
Junto ao meu serviço de hospedagem as opções eram inaceitáveis: para resolver o problema da lentidão eu teria de optar entre rodar uma versão mais antiga do Wordpress, sobre uma versão mais antiga do PHP, ou pagar um valor mensal a mais para ter o direito de usar um servidor mais robusto.
Eu até poderia pagar pelo servidor, mas esta solução me pareceu tão absurda quanto a outra, evocando o provérbio de que não se resolve um problema queimando dinheiro diante dele. A causa de meu problema não era o servidor (a menos que meu serviço de hospedagem esteja limitando deliberadamente o acesso ao processador, a fim de ter argumentos para me exigir um “upgrade” do plano, mas não vejo motivos para pensar que seja assim). Como eu vinha há muito tempo notando, a causa do problema era a degradação da base de dados do Wordpress e da própria qualidade do código deste. Além disso, existe a possibilidade de meu site estar sofrendo algum tipo de ataque de DDoS — não seria a primeira vez.
Este blog não nasceu com 899 posts e 17 páginas, não nasceu com mais de 472 arquivos de imagens em seu diretório e nem recebia mais de 200 visitas por dia. O crescimento do conteúdo trouxe uma lentidão gradual, que só poderia ser resolvida recriando a base de dados. Algo complexo e arriscado de se fazer, especialmente para alguém, como eu, que não tem conhecimento algum de base de dados.
Além dos problemas relacionados à base de dados, notei que o Wordpress foi vítima de um processo gradual de inchaço, com a adição de funcionalidades que me eram pouco úteis, algumas delas inadequadas para mim. O editor Gutenberg, por exemplo, nunca o consegui usar com a facilidade do editor antigo. Minha dificuldade com ele até me desestimulou a postar com frequência, porque se tornou mais trabalhoso escrever os artigos.
Finalmente houve a minha decepção com a interatividade. Por muito tempo eu achei que os meus visitantes se sentiriam estimulados a comentar as postagens. Cheguei até a instalar um “plug-in” chamado “Commenters Can Add Tags” que permitia aos visitantes classificar os artigos por assunto e disponibilizar sua classificação. Os resultados da interatividade no meu site sempre foram ruins: 492 comentários até hoje (depois que tive de deletar mais de 70 que haviam sido feitos por um único usuário, que depois ameaçou me processar se eu não os deletasse, pois ele se arrependera de ter feito), nenhuma mensagem enviada pelo formulário de contato, seis inscritos na lista de e-mail e um número desconhecido de assinantes do “feed” em RSS. Para uma coisa, porém, toda a interatividade serviu: para eu receber uma média de 900 spams, por semana, o que me obrigou a pagar por um serviço anti-spam, e para usuários engraçadinhos criarem tags pornográficas ou absurdas para alguns de meus artigos… A conclusão é simples: os leitores não gostam de interatividade e ela custa muito caro em termos de desempenho e segurança.
A propósito, embora eu tenha conseguido deletar a maioria das tags absurdas, fiz questão de preservar algumas como testemunhas: alozuku, bobice, ifufatet e ikuyebnid. Se os links estão quebrados, é porque eu já consertei…
Quando todos esses problemas surgiram, começaram a parecer mais graves os outros problemas do Wordpress, para os quais eu sempre fechara os olhos conformado: - Dificuldade para trabalhar com links relativos. - Impossibilidade de mover a instalação de uma subpasta para a raiz: - o que me obrigava a manter o blog com um “lit” nas URL e - impedia-me de usar https, embora tivesse pago para isso. - Lentidão, que já existia antes, só não era tão perceptível, - Dificuldade para reutilizar o conteúdo do blog, porque ficava preso em uma base de dados SQL. - As cópias de segurança eram demoradas, resultavam em downloads longos e produziam que eu não sabia usar. - Dificuldade para recolocar o site no ar em caso de problema. - Tamanho enorme do código HTML gerado pelo Wordpress, por causa da formatação do código e do encadeamento de arquivos CSS.
Na verdade, há pelo menos dois anos e meio eu convivia o tempo todo com o receio constante de que meu site poderia, a qualquer momento, desaparecer e que, se isto acontecesse, seria muito difícil para mim recuperar tudo e colocar no ar.
Pesando tudo isto, concluí que não valia a pena batalhar para restaurar o site em Wordpress, nem pagar um caro plano de hospedagem para utilizar mais capacidade de processamento, se esta seria usada para aguentar ataques de negação de serviço, bombardeamento com spam e outros tipos de coisas que não fazem parte dos objetivos de um blog literário. Era a hora de mudar.
Minha primeira ideia foi exportar o blog para um sistema chamado
Jekyll, que gera sites estáticos, e hospedá-lo em html. Tive de
desistir porque não consegui instalar esse Jekyll em meu Arch
Linux. Os pacotes não são fornecidos pela distribuição, mas por
usuários do AUR. As
funcionalidades do Jekyll dependem de pacotes (“ruby gems”) que
sequer estão disponíveis no Arch, o que me obrigava a instalá-los
manualmente atráves do programa “gem install”, o que criava
arquivos em meu sistema raiz que não eram gerenciados pelo
pacman
. Esta situação me pareceu inaceitável, então
desisti do Jekyll e comecei a buscar alternativas.
Quando já estava considerando diversos programas menos
conhecidos (e alguns bem estranhos), conheci a ideia de um belga
chamado Jilles van Gurp, que migrou seu blog do Wordpress em 2015 e
o atualiza utilizando alguns “scripts” que recorrem a um programa
chamado pandoc
, que eu já conheço muito bem. Bastou-me
uma leitura do post
de Jilles no site dev.to para eu perceber o potencial da ideia
e começar a desenvolvê-la, já que “shell script” é a única
linguagem de programação que eu consigo mais ou menos entender e
“para quem tem um martelo, tudo no mundo começa a parecer
prego”.
Levei duas semanas para implementar em “shell script” as
funcionalidades mais óbvias e mais úteis de um típico blog, para
isto recorrendo a outros programas de linha de comando, além do
pandoc
. Embora meu novo site ainda não tenha
comentários, caixa de busca e contador de visitas (coisas que
pretendo algum dia implementar), ele já consegue pegar um conjunto
de arquivos em markdown e
transformar em um site bastante interativo e fácil de navegar,
incluindo:
- uma lista de postagens recentes na página inicial;
- algumas páginas de contéudo fixo;
- postagens classificadas em categorias (tipo de conteúdo) e rótulos (assuntos)
- ligações cruzadas para permitir ao leitor navegar com facilidade pelo blog;
- postagens ordenadas cronologicamente;
- páginas geradas dinamicamente que listam as postagens de cada categoria e de cada assunto, além dos arquivos;
- feed de notícias no formato Atom (o mesmo do blogspot);
- mapa do site em formato XML;
Ainda há algumas funcionalidades que eu gostaria de implementar, principalmente recuperar os comentários do Wordpress, mas acredito que já consegui realizar algo incrível ao compilar este blog.