Executando verificação de segurança...
2

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

Local.Host Logo

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 🤣

Carregando publicação patrocinada...
1

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.

1

@user1 beleza?

Cara, eu nunca tinha ouvido falar desse asdf. Dei uma olhada rápida nele aqui e achei bem interessante. Com certeza vou testar ele :D Valeu muito pela dica!

Sobre usar o XAMPP, LAMP, EasyPHP etc hoje em dia, eu entendo muito a sua opinião, e de certa forma até concordo. O ponto é que, como eu respondi pro @oliveirarennan ali em cima, ainda tem bastante gente que usa o XAMPP simplesmente por não conhecer outras tecnologias (como Docker, WSL etc), e/ou até mesmo pela simplicidade em instalar e já ter ele rodando, enquanto um Docker ou WSL exigiriam alguns passos a mais para ter o ambiente 100% funcional. Geralmente devs mais novos que estão em um nível júnior ou de estágio, ou até mesmo devs bem mais antigos e conservadores, e meu objetivo com o projeto é justamente tentar atingir esse público.

1

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!

1

Fala @oliveirarennan!

Cara, concordo plenamente contigo! Docker é vida haha... Eu uso ele para alguns outros casos na minha máquina, geralmente quando pego um projeto que já vem com o Docker configurado, ou coisas em Java, projetos que usam o Postgres ao invés de outro banco (o Postgres eu deixo no Docker), coisas mais pontuais... Mas, principalmente quando vou gerenciar algum servidor para fazer deploy, eu já uso o Docker nele sem nem pensar, seja pra rodar um projeto PHP ou qualquer outra coisa. Só no meu ambiente local mesmo que, principalmente pra evitar conflito de virtualização (já tive problema em rodar Docker e VirtualBox ao mesmo tempo, por exemplo) eu prefiro deixar "roots" mesmo rs... É o velho ditado: "em casa de ferreiro o espeto é de pau".

Agora, sobre o projeto, eu também recomendo bastante Windows e WSL2 (quando o dev é resistente a migrar pro Linux kk), mas uma coisa que eu ainda percebo é o uso do XAMPP principalmente para devs iniciantes (estagiários ou nível júnior, que é o caso da empresa que eu trabalho), que a maioria ainda não chegou no patamar de entender como funciona um Docker e/ou um WSL, por exemplo. Também quem usa bastante o XAMPP são devs mais "antigos e conservadores". Conheço devs PHP que usam Windows e programam há mais de 10 anos, época do Windows 7 ainda, e continuam usando o XAMPP.

E, mesmo sendo a minoria, ainda existem devs "novos" que acabam usando o XAMPP simplesmente por ser simples de instalar e funcionar. Eu mesmo, quando comecei minha carreira lá em meados de 2016, acabei aprendendo PHP sozinho, e quando jogava no Google algo como "como rodar sites PHP no meu computador", a primeira coisa que aparecia era algum tutorial falando sobre o XAMPP. E até hoje ainda tem isso.

Minha tentativa com o Local.Host é tentar atingir justamente esse pessoal, que acaba usando o XAMPP por não conhecer muito outras tecnologias ou meios de montar um ambiente.

1
1

eu uso php 7 e php 8 é só instalar outro xampp em outro diretório.. entendo quem ainda usa xampp no Windows, não entendo quem usa no Linux.

1

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.

1

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.