{"id":3189,"date":"2020-03-19T00:31:53","date_gmt":"2020-03-19T03:31:53","guid":{"rendered":"http:\/\/tiagofick-site.test:30000\/?p=3189"},"modified":"2023-01-18T17:56:12","modified_gmt":"2023-01-18T20:56:12","slug":"ambiente-apache-php-mysql-vagrant","status":"publish","type":"post","link":"https:\/\/tiagofick.com.br\/site\/ambiente-apache-php-mysql-vagrant\/","title":{"rendered":"APACHE\/PHP\/MYSQL com Vagrant"},"content":{"rendered":"\n<p class=\"has-cyan-bluish-gray-color has-text-color has-small-font-size\"><strong>Independente da plataforma utilizada (Docker, Vagrant), a versatilidade dos containers \u00e9 ponto comum em todas as ocasi\u00f5es. Foi por esse motivo que resolvi falar um pouco sobre o Vagrant e lhes mostrar como criar um ambiente de desenvolvimento WEB.<\/strong><\/p>\n\n\n\n<hr class=\"wp-block-separator has-css-opacity is-style-default\"\/>\n\n\n\n<p class=\"has-normal-font-size\"><strong>Para este tutorial iremos utilizar:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Windows 10<\/li>\n\n\n\n<li>Virtualbox<\/li>\n\n\n\n<li>Vagrant<\/li>\n\n\n\n<li>Apache<\/li>\n\n\n\n<li>PHP<\/li>\n\n\n\n<li>MySQL<\/li>\n<\/ul>\n\n\n\n<p class=\"has-normal-font-size\"><strong>Instale as seguintes ferramentas:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a rel=\"noreferrer noopener\" href=\"https:\/\/download.virtualbox.org\/virtualbox\/6.1.4\/VirtualBox-6.1.4-136177-Win.exe\" target=\"_blank\">VirtualBox 6.1.4<\/a><\/li>\n\n\n\n<li><a rel=\"noreferrer noopener\" href=\"https:\/\/download.virtualbox.org\/virtualbox\/6.1.4\/Oracle_VM_VirtualBox_Extension_Pack-6.1.4.vbox-extpack\" target=\"_blank\">VirtualBox 6.1.2 Oracle VM VirtualBox Extension Pack<\/a><\/li>\n\n\n\n<li><a rel=\"noreferrer noopener\" href=\"https:\/\/www.vagrantup.com\/downloads\" target=\"_blank\">Vagrant<\/a> (Selecione o download conforme o OS utilizado, no nosso caso, Windows 10)<\/li>\n\n\n\n<li>N\u00e3o vou entrar em detalhes de instala\u00e7\u00f5es, pois n\u00e3o h\u00e1 muitas op\u00e7\u00f5es \u00e9 &#8220;next,next&#8221; e pronto.<\/li>\n<\/ul>\n\n\n\n<p class=\"has-normal-font-size\"><strong>Crie uma pasta e acesse-a pelo terminal e rode os seguintes comandos<\/strong>:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Digite &#8220;vagrant init hashicorp\/bionic64&#8221;<\/li>\n\n\n\n<li>Isso ir\u00e1 criar um um arquivo chamado &#8220;Vagrantfile&#8221;<\/li>\n\n\n\n<li>Esse ser\u00e1 o arquivo de configura\u00e7\u00e3o do nosso container<\/li>\n<\/ul>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img decoding=\"async\" src=\"http:\/\/tiagofick-site.test:30000\/wp-content\/uploads\/2021\/07\/image.jpeg\" alt=\"\" class=\"wp-image-3460\"\/><\/figure>\n<\/div>\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img decoding=\"async\" src=\"http:\/\/tiagofick-site.test:30000\/wp-content\/uploads\/2021\/06\/image-1024x369.jpeg\" alt=\"\" class=\"wp-image-3219\"\/><\/figure>\n<\/div>\n\n\n<p class=\"has-text-color has-background has-small-font-size\" style=\"color:#666666;background-color:#eeeeee\"><strong>INFORMA\u00c7\u00c3O:<\/strong>&nbsp;utilizamos hashicorp\/bionic64 por j\u00e1 conhecer sua exist\u00eancia nos reposit\u00f3rios do Vagrant,ser\u00e1 a partir dele que iremos customizar o nosso novo container.<\/p>\n\n\n\n<p class=\"has-normal-font-size\"><strong>Download e acesso SSH ao container<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Digite agora &#8220;vagrant up&#8221; para iniciar o download do container &#8220;hashicorp\/bionic64&#8221;<\/li>\n\n\n\n<li>Ao terminar, vamos acessar o container via SSH com &#8220;vagrant ssh&#8221; (senha: vagrant)<\/li>\n<\/ul>\n\n\n\n<p class=\"has-normal-font-size\"><strong>Instalando\/Configurando o PHP e o Apache<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Lembrando que o container nada mais \u00e9 do que um &#8220;linux enxugado&#8221;, vamos aos pr\u00f3ximos passos:<\/li>\n\n\n\n<li>No Ubuntu 18 a vers\u00e3o do PHP vai at\u00e9 a 7.2 (vamos add a vers\u00e3o 7.4.2)<\/li>\n\n\n\n<li>Para isso vamos adicionar o reposit\u00f3rio n\u00e3o nativo<\/li>\n\n\n\n<li>sudo apt -y install software-properties-common<\/li>\n\n\n\n<li>sudo add-apt-repository ppa:ondrej\/php<\/li>\n\n\n\n<li>ENTER para confirmar a adi\u00e7\u00e3o<\/li>\n\n\n\n<li>sudo apt update -y<\/li>\n<\/ul>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img decoding=\"async\" src=\"http:\/\/tiagofick-site.test:30000\/wp-content\/uploads\/2021\/06\/image-1024x369.jpeg\" alt=\"\" class=\"wp-image-3218\"\/><\/figure>\n<\/div>\n\n\n<ul class=\"wp-block-list\">\n<li>sudo apt upgrade -y (para atualizar o ubuntu)<\/li>\n\n\n\n<li>Vai solicitar um &#8220;ok&#8221; referente a atualiza\u00e7\u00f5es do grub, nada a configurar, basta &#8220;dar ok&#8221;<\/li>\n<\/ul>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img decoding=\"async\" src=\"http:\/\/tiagofick-site.test:30000\/wp-content\/uploads\/2021\/06\/image-1024x369.jpeg\" alt=\"\" class=\"wp-image-3220\"\/><\/figure>\n<\/div>\n\n\n<ul class=\"wp-block-list\">\n<li>Para instalar o apache, use <em>sudo apt install apache2 -y<\/em><\/li>\n\n\n\n<li>Depois ative o modo rewrite com <em>sudo a2enmod rewrite<\/em><\/li>\n\n\n\n<li>Reinicie o apache com: <em>systemctl restart apache2<\/em><\/li>\n<\/ul>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img decoding=\"async\" src=\"http:\/\/tiagofick-site.test:30000\/wp-content\/uploads\/2021\/06\/image-1-1024x155.jpeg\" alt=\"\" class=\"wp-image-3221\"\/><\/figure>\n<\/div>\n\n\n<ul class=\"wp-block-list\">\n<li>Neste exemplo, instalarei as libs mais usadas, fique a vontade para adicionar outras ao final do comando:\n<ul class=\"wp-block-list\">\n<li>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<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<p class=\"has-normal-font-size\"><strong>Instalando o MySQL<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Permane\u00e7a logado no SSH do Vagrant e siga os passos abaixo:\n<ul class=\"wp-block-list\">\n<li>sudo apt install mysql-server -y<\/li>\n\n\n\n<li>No mysql precisamos definir a senha para podermos acessar o banco:<\/li>\n\n\n\n<li>sudo cat \/etc\/mysql\/debian.cnf<\/li>\n\n\n\n<li>Nesse arquivo vamos ter o user: <em>debian-sys-maint e password: xxxxxxxx<\/em><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img decoding=\"async\" src=\"http:\/\/tiagofick-site.test:30000\/wp-content\/uploads\/2021\/06\/image-2.jpeg\" alt=\"\" class=\"wp-image-3222\"\/><\/figure>\n<\/div>\n\n\n<ul class=\"wp-block-list\">\n<li>Caso queira criar outro usu\u00e1rio ou trocar a senha do usu\u00e1rio root utilize:\n<ul class=\"wp-block-list\">\n<li>mysql -u debian-sys-maint -p (tecle enter e digite a senha)<\/li>\n\n\n\n<li>E agora estaremos no terminal do mysql\n<ul class=\"wp-block-list\">\n<li>mysql&gt;&nbsp;USE mysql;<\/li>\n\n\n\n<li>mysql&gt;&nbsp;UPDATE user SET plugin=&#8217;mysql_native_password&#8217; WHERE User=&#8217;root&#8217;;<\/li>\n\n\n\n<li>mysql&gt;&nbsp;UPDATE mysql.user SET authentication_string=PASSWORD(&#8216;new_password&#8217;) where user=&#8217;root&#8217;;<\/li>\n\n\n\n<li>mysql&gt;&nbsp;commit;<\/li>\n\n\n\n<li>mysql&gt;&nbsp;FLUSH PRIVILEGES;<\/li>\n\n\n\n<li>mysql&gt;&nbsp;COMMIT;<\/li>\n\n\n\n<li>mysql&gt;&nbsp;EXIT;<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>E ap\u00f3s o &#8220;EXIT;&#8221;, estaremos de volta ao terminal ssh do nosso container<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img decoding=\"async\" src=\"http:\/\/tiagofick-site.test:30000\/wp-content\/uploads\/2021\/06\/image-3.jpeg\" alt=\"\" class=\"wp-image-3223\"\/><\/figure>\n<\/div>\n\n\n<ul class=\"wp-block-list\">\n<li>sudo service mysql restart (para reiniciar o servi\u00e7o do mysql)<\/li>\n\n\n\n<li>E pronto! Temos acesso ao mysql com:\n<ul class=\"wp-block-list\">\n<li>mysql -u root -p (ENTER)<\/li>\n\n\n\n<li>digite a senha que voc\u00ea escolheu no update para testar a conexao com o usu\u00e1rio<\/li>\n\n\n\n<li>exit; (para sair novamente do mysql)<\/li>\n\n\n\n<li>exit (para sair do acesso ssh)<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img decoding=\"async\" src=\"http:\/\/tiagofick-site.test:30000\/wp-content\/uploads\/2021\/06\/image-4.jpeg\" alt=\"\" class=\"wp-image-3224\"\/><\/figure>\n<\/div>\n\n\n<p class=\"has-normal-font-size\"><strong>Exportando e Renomeando um Box<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Antes de mais nada, <em>box = container exportado para um arquivo <strong>.box<\/strong><\/em><\/li>\n\n\n\n<li>Para fins visuais, achei melhor renomear o container e deixar o ambiente mais organizado:\n<ul class=\"wp-block-list\">\n<li>vagrant halt (para encerrar o container)<\/li>\n\n\n\n<li>vagrant package &#8211;output meu_ambiente_desenvolvimento.box (para exportar)<\/li>\n\n\n\n<li>vagrant destroy (elimina o atual) <\/li>\n\n\n\n<li>Solicitar\u00e1 confirma\u00e7\u00e3o para excluir, ent\u00e3o digite &#8220;y&#8221; e pressione ENTER)<\/li>\n\n\n\n<li>vagrant box remove hashicorp\/bionic64 (vamos remover a entrada do virtualbox)<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img decoding=\"async\" src=\"http:\/\/tiagofick-site.test:30000\/wp-content\/uploads\/2021\/06\/image-5.jpeg\" alt=\"\" class=\"wp-image-3225\"\/><\/figure>\n<\/div>\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img decoding=\"async\" src=\"http:\/\/tiagofick-site.test:30000\/wp-content\/uploads\/2021\/06\/image-6.jpeg\" alt=\"\" class=\"wp-image-3226\"\/><\/figure>\n<\/div>\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img decoding=\"async\" src=\"http:\/\/tiagofick-site.test:30000\/wp-content\/uploads\/2021\/06\/image-7.jpeg\" alt=\"\" class=\"wp-image-3227\"\/><\/figure>\n<\/div>\n\n\n<p class=\"has-normal-font-size\"><strong>Configurando o VagrantFile<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Abra o VagrantFile com um editor de texto<\/li>\n\n\n\n<li>Altere as linhas a seguir ou crie-as caso n\u00e3o existam:<\/li>\n\n\n\n<li>Trecho do vagrantFile que nos interessa<\/li>\n<\/ul>\n\n\n\n<p class=\"has-text-color has-background has-small-font-size\" style=\"color:#666666;background-color:#eeeeee\"><strong>config.vm.box = &#8220;meu_box_vagrant_customizado.box&#8221;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br>config.vm.provider :virtualbox do |vb|<br>          vb.name = &#8220;meu_box_vagrant_customizado&#8221;<br>end<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>&#8220;config.vm.box&#8221; \u00e9 o nome do arquivo.box criado anteriormente<\/li>\n\n\n\n<li>A linha que diz &#8220;vb.name&#8221; \u00e9 o nome que ir\u00e1 ser exibido na lista de VMs do Virtualbox<\/li>\n\n\n\n<li>config.vm.network &#8220;forwarded_port&#8221;, guest: 80, host: 8000 (80 \u00e9 a porta no container e 8080 ser\u00e1 a porta que vamos utilizar para acessar nossa aplica\u00e7\u00e3o)<\/li>\n\n\n\n<li>config.vm.synced_folder &#8220;.\/&#8221;, &#8220;\/var\/www\/html&#8221;, mount_options: [&#8220;dmode=777,fmode=777&#8221;] (Aqui est\u00e1 o mapeamento com a pasta do apache e permiss\u00f5es de acesso)<\/li>\n\n\n\n<li>config.vm.provider &#8220;virtualbox&#8221; (valor default &#8220;virtualbox&#8221;)<\/li>\n\n\n\n<li>Feito isso podemos visualizar nosso container carregado na lista de VMs do virtual box<\/li>\n<\/ul>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img decoding=\"async\" src=\"http:\/\/tiagofick-site.test:30000\/wp-content\/uploads\/2021\/07\/image-1.jpeg\" alt=\"\" class=\"wp-image-3476\"\/><\/figure>\n<\/div>\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img decoding=\"async\" src=\"http:\/\/tiagofick-site.test:30000\/wp-content\/uploads\/2021\/06\/image-8.jpeg\" alt=\"\" class=\"wp-image-3228\"\/><\/figure>\n<\/div>\n\n\n<p><strong>Sugest\u00e3o: Transportando meu Ambiente<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Copie o <em>.box<\/em> e o VagrantFile em um pen-drive e sempre ter\u00e1 um ambiente php para uma instala\u00e7\u00e3o r\u00e1pida <\/li>\n\n\n\n<li>Supondo que voc\u00ea deseja instalar esse ambiente em outro computador:\n<ul class=\"wp-block-list\">\n<li>copie esses arquivos para um local de sua prefer\u00eancia<\/li>\n\n\n\n<li>Acesse esse local via terminal e digite:\n<ul class=\"wp-block-list\">\n<li>vagrant box add &#8211;name meu_box_vagrant_customizado .\\meu_box_vagrant_customizado.box<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<p class=\"has-normal-font-size\"><strong>Testando a Instala\u00e7\u00e3o<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Se tudo correu bem, devemos ter um ambiente php com apache e mysql pronto para utilizarmos.<\/li>\n\n\n\n<li>Pelo terminal, vamos at\u00e9 nossa pasta e digite &#8220;vagrant up&#8221; d\u00ea um ENTER<\/li>\n\n\n\n<li>Depois de carregado, acesse no navegador http:\/\/127.0.0.1:8000\/<\/li>\n\n\n\n<li>Para fins de teste do ambiente, coloque um <em>index.php<\/em> com a fun\u00e7\u00e3o phpinfo(); dentro do diret\u00f3rio<\/li>\n\n\n\n<li>Acesse&nbsp;<a rel=\"noreferrer noopener\" href=\"http:\/\/127.0.0.1:8000\/arquivo.php\" target=\"_blank\">127.0.0.1:8000<\/a>\/nome<\/li>\n<\/ul>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img decoding=\"async\" src=\"http:\/\/tiagofick-site.test:30000\/wp-content\/uploads\/2021\/06\/image-9-1024x645.jpeg\" alt=\"\" class=\"wp-image-3230\"\/><\/figure>\n<\/div>\n\n\n<ul class=\"wp-block-list\">\n<li>Isso ir\u00e1 mostrar todas as configura\u00e7\u00f5es e libs carregadas em nosso container.<\/li>\n\n\n\n<li>Para parar o servi\u00e7o, basta acessar nossa pasta pelo terminal e digitar: &#8220;vagrant suspend&#8221;<\/li>\n\n\n\n<li>PRONTO! TEMOS UM AMBIENTE DE DESENVOLVIMENTO MONTADO EM POUCOS MINUTOS<\/li>\n<\/ul>\n\n\n\n<p class=\"has-normal-font-size\"><strong>Considera\u00e7\u00f5es Finais<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Para fins pr\u00e1ticos, eu enviei esse container para a nuvem<\/li>\n\n\n\n<li>O container  foi disponibilizado em:&nbsp;<a rel=\"noreferrer noopener\" href=\"https:\/\/app.vagrantup.com\/boxes\/search?utf8=%E2%9C%93&amp;sort=downloads&amp;provider=&amp;q=tiagofick\" target=\"_blank\">tiagofick\/tiagofickPHP74<\/a><\/li>\n\n\n\n<li>Para utiliza-lo, instale o Virtualbox e o vagrant e via terminal utilize os comandos:\n<ul class=\"wp-block-list\">\n<li>vagrant init tiagofick\/tiagofickPHP74 (ENTER)<\/li>\n\n\n\n<li>vagrant up (ENTER)<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<p class=\"has-normal-font-size\"><strong>Refer\u00eancias<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a rel=\"noreferrer noopener\" href=\"https:\/\/www.vagrantup.com\/\" target=\"_blank\">Vagrant<\/a><\/li>\n\n\n\n<li><a rel=\"noreferrer noopener\" href=\"https:\/\/www.virtualbox.org\/wiki\/Downloads\" target=\"_blank\">VirtualBox<\/a><\/li>\n\n\n\n<li><a rel=\"noreferrer noopener\" href=\"https:\/\/www.vagrantup.com\/downloads.html\" target=\"_blank\">Download e Instala\u00e7\u00e3o do Vagrant<\/a><\/li>\n\n\n\n<li><a rel=\"noreferrer noopener\" href=\"https:\/\/stackoverflow.com\/questions\/33991228\/what-is-the-default-root-pasword-for-mysql-5-7\/50305285#50305285\" target=\"_blank\">Reset Senha do MySQL<\/a><\/li>\n\n\n\n<li><a rel=\"noreferrer noopener\" href=\"https:\/\/app.vagrantup.com\/tiagofick\/boxes\/tiagofickPHP74\" target=\"_blank\">Container j\u00e1 dispon\u00edvel na WEB<\/a><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Independente da plataforma utilizada (Docker, Vagrant), a versatilidade dos containers \u00e9 ponto comum em todas as ocasi\u00f5es. Foi por esse motivo que resolvi falar um pouco sobre o Vagrant e&#46;&#46;&#46;<\/p>\n","protected":false},"author":1,"featured_media":3418,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[2],"tags":[6,18,7],"class_list":["post-3189","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-ambientes-de-desenvolvimento","tag-ambiente","tag-containers","tag-desenvolvimento"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/tiagofick.com.br\/site\/wp-json\/wp\/v2\/posts\/3189","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/tiagofick.com.br\/site\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/tiagofick.com.br\/site\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/tiagofick.com.br\/site\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/tiagofick.com.br\/site\/wp-json\/wp\/v2\/comments?post=3189"}],"version-history":[{"count":1,"href":"https:\/\/tiagofick.com.br\/site\/wp-json\/wp\/v2\/posts\/3189\/revisions"}],"predecessor-version":[{"id":3414,"href":"https:\/\/tiagofick.com.br\/site\/wp-json\/wp\/v2\/posts\/3189\/revisions\/3414"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/tiagofick.com.br\/site\/wp-json\/wp\/v2\/media\/3418"}],"wp:attachment":[{"href":"https:\/\/tiagofick.com.br\/site\/wp-json\/wp\/v2\/media?parent=3189"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/tiagofick.com.br\/site\/wp-json\/wp\/v2\/categories?post=3189"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/tiagofick.com.br\/site\/wp-json\/wp\/v2\/tags?post=3189"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}