Para devs PHP (e eventualmente Node) que usam Windows e XAMPP
Salve! :vulcan_salute:
Primeiramente, esse é meu primeiro post, então perdoem minha timidez kkkkk :no_mouth:
Segundamente, esse post é pra compartilhar um projeto "pessoal" que eu montei. :relieved:
Um pouco de história primeiro :man_teacher:
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. :ng_man:
Eu que sou usuário Linux :penguin:, 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? :dizzy_face:). 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é? :relieved:
Vendo isso, fiquei pensando: "como fazer isso funcionar no Windows pra ajudar o pessoal do trampo? :thinking:". 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 :sweat_smile:) "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 :writing_hand:) no grupo do trabalho explicando o passo a passo pra configurar isso tudo, até que me bateu a ideia :bulb:: 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é :laughing:?), 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 :upside_down_face:) subdomínios dinâmicos até 3 níveis com base na árvore de arquivos e pastas (aqui o ponto final :arrow_right:).
Local.Host
A ideia inicial era que ele fosse uma alternativa ao XAMPP, que tivesse o Apache :feather: embutido já com o PHP :elephant: 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 :flipper: 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 :calendar:, 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 :star_struck:, 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 :man_facepalming: 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. :relaxed:
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 :point_up: 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, :arrow_right: Aqui o link pra acessar ele no GitHub :arrow_left:
Obrigado aos guerreiros que leram o texto inteiro :rofl:
Se você usa Linux, uma ferramenta interessante nesse mesmo conceito é o asdf, eu a uso principalmente com Node, mas há plugins da comunidade para várias outras linguagens, plataformas e sdks.
Para PHP usar XAMPP, LAMP, EasyPHP... em 2023 não faz sentido. Infelizmente ainda existem "instrutores" que apresentam essas ferramentas para os iniciantes.
Fala @RBFraphael, tudo certo ? Então, achei bastante interessante o seu projeto. Eu já tive problemas semelhantes quando trabalhava com PHP e usava Windows.
Atualmente eu utilizo mais o node e python, porem vira e mexe aparece algum software legado em php pra eu ressucitar aqui.
Eu utilizo docker pra montar os ambientes de desenvolvimento e tem dado tudo certo até o momento. Inclusive ele é bem agnostico com relação ao sistema operacional.
Para os meus colegas que usam Windows eu recomendo o uso do WSL2 .
Valeu!
Show de bola. Parabéns pela iniciativa e pelo conteúdo.
Atualmente trabalho também com o PHP e utilizo o Laragon, tem suporte a múltiplas versões para PHP, Apache, MySQL, Node e Python - podendo escolher qual versão irá utilizar em cada momento - basta baixar o pacote desejado nos sites oficiais.
Também cria automaticamente o dominínio pasta.test (configurável) ao adicionar uma pasta dentro do diretório www.
É um canivete suiço, nunca mais utilizei outro haha.
Abraços.
Um poruco fora do mundo open source temos o MAMP PRO que alterna entre versões do php e do MySQL. configura ambientes apache ou nginx paralalamente. DNS dinâmico configuravel publico/privado. Gera certificados SSL automaticamente. entre outros detalhes via interface. Vale a pena conferirele em funcionament.