Para devs PHP (e eventualmente Node) que usam Windows e XAMPP
Salve! 🖖
Primeiramente, esse é meu primeiro post, então perdoem minha timidez kkkkk 😶
Segundamente, esse post é pra compartilhar um projeto "pessoal" que eu montei. 😌
Um pouco de história primeiro 👨🏫
Na empresa que eu trabalho, o pessoal usa bastante o Windows e o XAMPP para desenvolvimento PHP, porém existe um problema que impacta a maioria dos devs no time: o XAMPP não permite múltiplas versões do PHP (pelo menos não de uma forma simples, até onde eu sei), precisando ter várias versões do XAMPP instaladas, e ficar alternando entre elas conforme precisasse de uma versão diferente. Quando se tem projetos antigos com PHP 5, projetos "média-vida" com PHP 7 e projetos novos com PHP 8, isso gera um pouco de caos. 🙅♂️
Eu que sou usuário Linux 🐧, meu ambiente de desenvolvimento local é com o Apache e PHP-FPM, aí eu só preciso mudar pelo .htaccess qual versão do PHP eu quero em um determinado projeto, e pronto. Outra coisa que eu tenho configurado é o dnsmasq, com um esquema para ter subdomínios dinâmicos com base em uma árvore de arquivos (termo difícil de entender? 😵). Ou seja, basicamente se eu tiver uma árvore de pastas assim /cliente/projeto/api/index.php, eu vou ter um domínio api.projeto.cliente.local.host, outro projeto.cliente.local.host e outro cliente.local.host. Isso apenas criando as pastas. Legal, né? 😌
Vendo isso, fiquei pensando: "como fazer isso funcionar no Windows pra ajudar o pessoal do trampo? 🤔". Depois de algumas horas pesquisando, vi o Apache Lounge, onde eu poderia configurar o PHP-CGI, o PHP pra Windows e o Acrylic DNS, que eu consigo fazer uma espécie de "proxy" apontando algo como *.*.*.local.host para o 127.0.0.1, e ter o mesmo esquema de (lá vem o nome grande de novo, mas sério, não sei outro jeito de falar isso 😅) "subdomínios dinâmicos até 3 níveis com base na árvore de arquivos e pastas". Basicamente o mesmo setup que eu tenho no Linux, mas no Windows.
Já tava pronto pra mandar um texto (maior que esse post ✍️) no grupo do trabalho explicando o passo a passo pra configurar isso tudo, até que me bateu a ideia 💡: e se eu fizesse um front-end bonito pra isso, que fosse uma alternativa ao XAMPP? E foi aí que nasceu o Local.Host (conveninente o nome, né 😆?), que é, como eu descrevi ele, uma alternativa ao XAMPP, open source, e com suporte a múltiplas versões do PHP e (pode ir pro ponto final se quiser 🙃) subdomínios dinâmicos até 3 níveis com base na árvore de arquivos e pastas (aqui o ponto final ➡️).
Local.Host
A ideia inicial era que ele fosse uma alternativa ao XAMPP, que tivesse o Apache 🪶 embutido já com o PHP 🐘 5.6, 7.0, 7.2, 7.4, 8.0 e 8.2 configurados (com o 8.2 por padrão, mas podendo alternar apenas trocando o .htaccess de cada projeto), MariaDB 🐬 também embutido e o Acrylic DNS já configurado com a regra do local.host, tudo gerenciável por uma interface simples de usar feita com NextronJS, uma bela mistura de NextJS com Electron., usando a Material UI para a interface ficar legal.
Fiz ele em pouco mais de um fim de semana 📆, e deixei o código aberto no GitHub pra quem quiser fuçar no código-fonte, e sugerir melhorias.
Hoje, ele já tem algumas coisinhas a mais 🤩, como o NVM para instalação de múltiplas versões do NodeJS (é outra situação parecida com a do PHP, que também vi no trabalho), traz o MongoDB embutido também, o MongoDB Compass, HeidiSQL como uma alternativa do phpMyAdmin (que também está embutido), e um acesso fácil pra instalar o Composer e os binários do PHP no %PATH% do Windows, assim você pode rodar composer
, php5.6
, php7.0
, php7.2
, php7.4
, php8.0
e php8.2
de qualquer lugar com o PowerShell ou CMD. Basicamente tentei deixar ele sendo um "tudo-em-um" para montar um ambiente de desenvolvimento PHP e NodeJS.
Quero ir desenvolvendo ele aos poucos, implementando coisas novas conforme eu for vendo a necessidade (e que pareçam úteis e legais de incorporar nele). Uma coisa que eu já estou mexendo é colocar o gerenciamento do NVM na própria interface dele, assim evitando usar a linha de comando para gerenciar as versões do Node.
Decidi agora compartilhar o projeto em uma comunidade mais aberta, a do TabNews, e não antes por um simples motivo: eu não tinha pensado nisso 🤦♂️ kkkk. Mas, é um passo um pouco "grande" pra mim, tentar divulgar de alguma forma esse projeto despretencioso, e ver a aceitação das pessoas em cima dele. ☺️
Espero que conheçam e gostem do Local.Host, e, se alguém quiser testar ou usar ele no dia a dia, pode enviar feedbacks que com certeza vou dar uma olhada e responder.
Ah, se estiver procurando o link, tá ali em cima ☝️ onde eu falei que deixei o código-fonte aberto no GitHub. Mas se você for que nem eu e tem preguiça de procurar, ➡️ Aqui o link pra acessar ele no GitHub ⬅️
Obrigado aos guerreiros que leram o texto inteiro 🤣