APACHE/PHP/MYSQL com Vagrant

Independente da plataforma utilizada (Docker, Vagrant), a versatilidade dos containers é ponto comum em todas as ocasiões. Foi por esse motivo que resolvi falar um pouco sobre o Vagrant e lhes mostrar como criar um ambiente de desenvolvimento WEB.
Para este tutorial iremos utilizar:
- Windows 10
- Virtualbox
- Vagrant
- Apache
- PHP
- MySQL
Instale as seguintes ferramentas:
- VirtualBox 6.1.4
- VirtualBox 6.1.2 Oracle VM VirtualBox Extension Pack
- Vagrant (Selecione o download conforme o OS utilizado, no nosso caso, Windows 10)
- Não vou entrar em detalhes de instalações, pois não há muitas opções é “next,next” e pronto.
Crie uma pasta e acesse-a pelo terminal e rode os seguintes comandos:
- Digite “vagrant init hashicorp/bionic64”
- Isso irá criar um um arquivo chamado “Vagrantfile”
- Esse será o arquivo de configuração do nosso container


INFORMAÇÃO: utilizamos hashicorp/bionic64 por já conhecer sua existência nos repositórios do Vagrant,será a partir dele que iremos customizar o nosso novo container.
Download e acesso SSH ao container
- Digite agora “vagrant up” para iniciar o download do container “hashicorp/bionic64”
- Ao terminar, vamos acessar o container via SSH com “vagrant ssh” (senha: vagrant)
Instalando/Configurando o PHP e o Apache
- Lembrando que o container nada mais é do que um “linux enxugado”, vamos aos próximos passos:
- No Ubuntu 18 a versão do PHP vai até a 7.2 (vamos add a versão 7.4.2)
- Para isso vamos adicionar o repositório não nativo
- sudo apt -y install software-properties-common
- sudo add-apt-repository ppa:ondrej/php
- ENTER para confirmar a adição
- sudo apt update -y

- sudo apt upgrade -y (para atualizar o ubuntu)
- Vai solicitar um “ok” referente a atualizações do grub, nada a configurar, basta “dar ok”

- Para instalar o apache, use sudo apt install apache2 -y
- Depois ative o modo rewrite com sudo a2enmod rewrite
- Reinicie o apache com: systemctl restart apache2

- Neste exemplo, instalarei as libs mais usadas, fique a vontade para adicionar outras ao final do comando:
- sudo apt -y install php7.4 php7.4-curl php7.4-mbstring php7.4-bcmath php7.4-zip php7.4-mysql php7.4-pgsql php7.4-sqlite php7.4-json php7.4-gd
Instalando o MySQL
- Permaneça logado no SSH do Vagrant e siga os passos abaixo:
- sudo apt install mysql-server -y
- No mysql precisamos definir a senha para podermos acessar o banco:
- sudo cat /etc/mysql/debian.cnf
- Nesse arquivo vamos ter o user: debian-sys-maint e password: xxxxxxxx

- Caso queira criar outro usuário ou trocar a senha do usuário root utilize:
- mysql -u debian-sys-maint -p (tecle enter e digite a senha)
- E agora estaremos no terminal do mysql
- mysql> USE mysql;
- mysql> UPDATE user SET plugin=’mysql_native_password’ WHERE User=’root’;
- mysql> UPDATE mysql.user SET authentication_string=PASSWORD(‘new_password’) where user=’root’;
- mysql> commit;
- mysql> FLUSH PRIVILEGES;
- mysql> COMMIT;
- mysql> EXIT;
- E após o “EXIT;”, estaremos de volta ao terminal ssh do nosso container

- sudo service mysql restart (para reiniciar o serviço do mysql)
- E pronto! Temos acesso ao mysql com:
- mysql -u root -p (ENTER)
- digite a senha que você escolheu no update para testar a conexao com o usuário
- exit; (para sair novamente do mysql)
- exit (para sair do acesso ssh)

Exportando e Renomeando um Box
- Antes de mais nada, box = container exportado para um arquivo .box
- Para fins visuais, achei melhor renomear o container e deixar o ambiente mais organizado:
- vagrant halt (para encerrar o container)
- vagrant package –output meu_ambiente_desenvolvimento.box (para exportar)
- vagrant destroy (elimina o atual)
- Solicitará confirmação para excluir, então digite “y” e pressione ENTER)
- vagrant box remove hashicorp/bionic64 (vamos remover a entrada do virtualbox)



Configurando o VagrantFile
- Abra o VagrantFile com um editor de texto
- Altere as linhas a seguir ou crie-as caso não existam:
- Trecho do vagrantFile que nos interessa
config.vm.box = “meu_box_vagrant_customizado.box”
config.vm.provider :virtualbox do |vb|
vb.name = “meu_box_vagrant_customizado”
end
- “config.vm.box” é o nome do arquivo.box criado anteriormente
- A linha que diz “vb.name” é o nome que irá ser exibido na lista de VMs do Virtualbox
- config.vm.network “forwarded_port”, guest: 80, host: 8000 (80 é a porta no container e 8080 será a porta que vamos utilizar para acessar nossa aplicação)
- config.vm.synced_folder “./”, “/var/www/html”, mount_options: [“dmode=777,fmode=777”] (Aqui está o mapeamento com a pasta do apache e permissões de acesso)
- config.vm.provider “virtualbox” (valor default “virtualbox”)
- Feito isso podemos visualizar nosso container carregado na lista de VMs do virtual box


Sugestão: Transportando meu Ambiente
- Copie o .box e o VagrantFile em um pen-drive e sempre terá um ambiente php para uma instalação rápida
- Supondo que você deseja instalar esse ambiente em outro computador:
- copie esses arquivos para um local de sua preferência
- Acesse esse local via terminal e digite:
- vagrant box add –name meu_box_vagrant_customizado .\meu_box_vagrant_customizado.box
Testando a Instalação
- Se tudo correu bem, devemos ter um ambiente php com apache e mysql pronto para utilizarmos.
- Pelo terminal, vamos até nossa pasta e digite “vagrant up” dê um ENTER
- Depois de carregado, acesse no navegador http://127.0.0.1:8000/
- Para fins de teste do ambiente, coloque um index.php com a função phpinfo(); dentro do diretório
- Acesse 127.0.0.1:8000/nome

- Isso irá mostrar todas as configurações e libs carregadas em nosso container.
- Para parar o serviço, basta acessar nossa pasta pelo terminal e digitar: “vagrant suspend”
- PRONTO! TEMOS UM AMBIENTE DE DESENVOLVIMENTO MONTADO EM POUCOS MINUTOS
Considerações Finais
- Para fins práticos, eu enviei esse container para a nuvem
- O container foi disponibilizado em: tiagofick/tiagofickPHP74
- Para utiliza-lo, instale o Virtualbox e o vagrant e via terminal utilize os comandos:
- vagrant init tiagofick/tiagofickPHP74 (ENTER)
- vagrant up (ENTER)
Referências