APACHE/PHP/MYSQL com Vagrant

Vagrant
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:

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

Compartilhe

Você pode gostar...

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *