Utilizando o Docker para seu projetos Laravel com Laradock


O laradock é um ambiente de desenvolvimento PHP completo para o docker, contendo algumas imagem docker pré-configuradas. Inicialmente o projeto foi focado em rodar os projetos Laravel no docker, mas veio evoluindo e agora começou a suportar outros projetos PHP como Symfony, CodeIgniter, WordPress, Drupal e outros.

Neste post vamos deixar-lo pronto para utilizar um projeto docker. Primeiramente para que possamos dar seguimento precisamos ter o docker e Git instalado e funcionando na máquina.

O primeiro passo agora é baixar o repositório do laradock no github com o seguinte comando:

$ git clone https://github.com/Laradock/laradock.git laradock

Esse comando baixará o conteúdo para uma pasta chamada laradock. O próximo passo é criar um arquivo .env espelhado pelo env-exemple (Copiando o env-exemple e colando com o nome de .env).

Realizado o passo anterior vamos subir o serviço com o seguinte comando:

$ docker-compose up -d nginx

Quando subimos o nginx automaticamente o PHP sobe pois o servidor web necessita dele.

Pronto o serviço está funcionando e agora podemos testar acessando:

http://localhost

ou no caso de quem estiver usando docker no  OSx acessando:

http://192.168.99.100

Antes de prosseguirmos é importante vermos um pouco sobre algumas configurações no arquivo .env. Algumas mais importantes são:

NGINX_HOST_HTTP_PORT=Porta que vai rodar
NGINX_HOST_HTTPS_PORT=Porta SSL

Existem outras configurações e possibilidades, mas não serão abordadas neste post. Agora vamos rodar uma arquivo teste de php para vermos se vai rodar e qual procedimento devemos tomar para funcionar.

O que vamos fazer primeiramente é criar uma pasta no mesmo nível que a pasta laradock, como mostra a imagem abaixo.

 

 

 

 

Agora que criamos as pasta vamos criar um arquivo chamado index.php dentro da pasta app/ com o seguinte conteúdo:

<?php
 
echo 'Teste laradock';

 

Depois de salvo o arquivo vamos abrir o arquivo default.conf que fica dentro da pasta laradock/nginx/sites/. Altere a linha  root /var/www/app;

Salve o arquivo e volte para a pasta laradock/ e digite os seguintes comando:

$ docker-compose down
 
$ docker-compose up

Pronto podemos testar acessando  http://localhost ou http://192.168.99.100 e verificando que funcionou corretamente.

Agora temos o laradock funcionando corretamente, e o próximo passo é criar/instalar um projeto Laravel.

Primeiramente vamos entrar no diretório do laradock com os seguintes comandos:

$ cd laradock/

Depois vamos subir o container workspace digitando o seguinte comando:

$ docker-compose exec workspace bash

Você notará que o terminal irá mudar, você entrará dentro do container. Algo parecido com o texto logo abaixo:

root@f74b81f6ed26:/var/www#

Se nos rodarmos o comando ls veremos que estamos um diretório anterior do laradock/ dentro desse container, ou seja, instalaremos o projeto Laravel no mesmo nível que o laradock.

Bem para instalarmos um projeto Laravel vamos rodar o seguinte comando:

# composer create-project --prefer-dist laravel/laravel teste-app-laravel

Pronto, depois que o composer baixa e instala temos uma pasta chamada teste-app-laravel/ no mesmo nível que o laradock.

Vamos sair do container utilizando Ctrl + q + p simultaneamente e partir para a criação do virtual host para acessa-lo. Crie um novo arquivo chamado teste-app-laravel.conf no seguinte diretório:

server {
 
    listen 80;
    listen [::]:80;
 
    server_name teste-app-laravel.local;
    root /var/www/teste-app-laravel/public;
    index index.php;
 
    location / {
         try_files $uri $uri/ /index.php$is_args$args;
    }
 
    location ~ \.php$ {
        try_files $uri /index.php =404;
        fastcgi_pass php-upstream;
        fastcgi_index index.php;
        fastcgi_buffers 16 16k;
        fastcgi_buffer_size 32k;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
}

Nessas linhas o que devemos atentar é nas linhas server_name e root, onde o primeiro é o nome do virtual host e o segundo é o caminho de onde está a aplicação Laravel. 

Com o terminal dentro da pasta laradock/ rode o seguinte comando:

$ docker-compose restart

Bem, e por último, vamos adicionar no virtualhost de nosso OS a configuração para que possamos acessar a aplicação através da url: teste-app-laravel.local em um navegador localmente. Para que funcione vamos abrir o arquivo de virtualhost /etc/hosts e adicionar a seguinte linha:

127.0.0.1 teste-app-laravel.local

Salve e feche o arquivo e pronto, feito isso temos nosso projeto Laravel funcionando corretamente.

Exibir branch atual GIT no terminal Linux

Já perdeu em qual branch estava enquanto utilizava o terminal para realizar algum procedimento? Então, a dica de hoje

é bastante simples. Vamos mostrar no nosso terminal em qual branch estamos. Para isso basta entrar no seu arquivo .bashrc que fica no seu diretório padrão, com o seguinte comando:  nano ~/.bashrc e adicionar as seguintes linhas no final do arquivo:

Pronto. Salve o arquivo, reabra o terminal e pronto.

Caso queira ver o resultado sem ter que fechar e abrir o terminal basta digitar o comando: source ~/bashrc

 

Instalando e Configurando MySQL no Ubuntu Server

O MySQL é um sistema de gerenciamento de banco de dados open-source bastante utilizado. Ele é um banco de dados relacional e usa SQL (Structured Query Language) para gerenciar seus dados.

Neste post vamos instala-lo em um servidor Ubuntu Server. Primeiramente vamos atualizar o repositório e depois instalar o MySQL.

$ sudo apt-get update
$ sudo apt-get install  mysql_server

No procedimento acima será pedido uma senha do usuário mysql root. Defina uma, repita a senha e prossiga.

O próximo passo é utilizar um comando onde realiza alguns procedimentos de segurança:

$ mysql_secure_installation

Algumas perguntas serão feitas. A primeira é se queremos alterar a senha do usuário root do mysql, depois vem algumas perguntas sobre remover usuário Anônimo e se deseja remover os privilégios de acesso remoto do usuário root. Escolha entre Y ou N e aperte enter.

Pronto nosso  MySQL está instalado, agora precisamos configurar. Vamos começar acessando o MySQL e criando um usuário para acesso remoto:

$ mysql -u root -p

Aperte enter e sera pedido a senha do usuário root do MySQL. Dentro dele vamos digitar os seguintes comandos:

mysql>  CREATE USER 'remoto'@'%'  IDENTIFIED BY 'senhaUsuarioRemoto';
mysql>  GRANT ALL ON * . * TO 'remoto'@'%'  IDENTIFIED BY 'senhaUsuarioRemoto';
mysql> FLUSH PRIVILEGES;
mysql> \q

Pronto usuário criado e privilegios concedidos.  Agora precisamos entrar no arquivo de configuração do MySQL e comentar duas linhas.

$ sudo vi /etc/mysql/my.cnf

Comente as linhas

#bind-address = 127.0.0.1
#skip-external-locking

Salve e feche o arquivo  ( :wq ). Reinicie o serviço mysql

$ sudo service mysql restart

Por último altere as regras o firewall. O servido utilizado para este post possui o ufw, e foram necessários os seguintes comandos:

$ sudo ufw allow 3306/udp
$ sudo ufw allow 3306/tcp
$ sudo ufw reload

Pronto nosso MySQL já está funcionando e preparado para receber conexão remota.

Instalar PHPStorm no linux manualmente

O PHPStorm é uma IDE comercial, multi plataforma, para PHP construído na plataforma JetBrains’ IntelliJ IDEA. Neste post vamos instalar o mesmo manualmente em nossa distribuição Linux.

Primeiro passo, vamos remover qualquer vestígio do PHPStorm de nossa maquina, com os seguintes comandos:

 

$ sudo rm -Rf /opt/phpstorm*
$ sudo rm -Rf /usr/bin/phpstorm
$ sudo rm -Rf /usr/share/applications/phpstorm.desktop

Pronto agora podemos baixar-lo e instala-lo com os seguintes comandos:

$ wget https://download.jetbrains.com/webide/PhpStorm-2017.3.tar.gz \ 
-O phpstorm.tar.gz

Descompactando em pasta /opt/:

$ sudo tar vzxf phpstorm.tar.gz

Alterando o nome da pasta:

$ sudo mv /opt/PHPStorm*/  /opt/phpstorm

Criando Link simbólico para pasta /usr/bin:

$ sudo ln -sf /opt/phpstorm/bin/phpstorm.sh /usr/bin/phpstorm

Criar lançador para o programa:

$ echo -e '[Desktop Entry]\n Version=1.0\n Name=phpstorm\n \ 
Exec=/opt/phpstorm/bin/phpstorm.sh\n Icon=/opt/phpstorm/bin/phpstorm.png\n \
 Type=Application\n Categories=Application' \ 
| sudo tee /usr/share/applications/phpstorm.desktop

Concedendo permissão para executar o lançador:

$ sudo chmod +x /usr/share/applications/phpstorm.desktop

Pronto agora você já pode utilizar o programa (caso tenha a licença).

Compactando e Descompactando com tar no Linux

O comando tar é uma ferramenta utilizada para compactar e descompactar arquivos, diretórios, discos inteiros, etc. Ele consegue aguentar trabalho pesado, ou seja, compactar arquivos e volumes grandes com responsabilidade. Vamos ver neste post alguns comandos que podemos usar para criar arquivos compactados e descompactar arquivos de diversos formatos.

Primeiro vamos ver algumas opções importantes que o comando possui.

  • -c: (create) cria um novo arquivo tar;
  • -v: (verbose) detalha o procedimento que está acontecendo;
  • -f: define o nome do arquivo;
  • -j ou –bzip2: compacta/descompacta os arquivos usando o bzip2;
  • -J ou –xz: descompacta os arquivos .xz e .Izma;
  • -x: extrai o conteúdo do arquivo;
  • -z ou –gzip ou –gunzip: compacta/descompacta os arquivos usando o compress;
  • -C: diretório onde será descompactado o arquivo.

 

Compactando arquivo

No código abaixo vamos realizar a compactação .tar a parti do diretório arquivos/

$ tar -cvf arquivos.tar arquivos/

 

Descompactando Arquivo

No código abaixo vamos descompactar um arquivo .tar especificando o diretório que o mesmo irá ficar.

$ tar -xvf arquivos.tar -C /opt/

 

Formatando e criando pendrive bootável pelo terminal Linux

Uma das formas que mais gosto de fazer a formatação e a criação de pendrive bootável é utilizando o terminal no linux. Em poucos comandos e minutos consigo criar um pendrive com os dados necessários para instalar um sistema operacional (neste caso o linux).

Primeiro vamos listar os discos que estão na nossa máquina, com o comando:

$ sudo fdisk -l

Identificado o nosso pendrive de 8GB (7,6GB), que no caso é o /dev/sdb. O próximo passo é desmontá-lo. Neste caso temos o /dev/sdb1 e /dev/sdb2 então vamos desmontar os dois com os seguintes comandos:

$ sudo umount /dev/sdb1
$ sudo umount /dev/sdb2

Com o pendrive desmontado vamos agora formatar (só faça este procedimento caso tenha plena certeza do que está fazendo) o mesmo, com o seguinte comando:

$ sudo mkfs.vfat -I /dev/sdb

Com o pendrive formatado vamos agora colocar nossa imagem do sistema no pendrive.

$ sudo dd if=CentOS-6.5-x86_64-bin-DVD1.iso of=/dev/sdb && sync

Espere ate o terminal sinalizar que terminou e pronto, já pode ser usado.

Configurando Rede no Debian

Para realizar a configuração de rede no Debian pelo terminal precisamos acessar o arquivo /etc/network/interfaces. Neste arquivo colocamos as informações de IP, Mascara, Gateway, entre outras.

Vamos emular a configuração da placa de rede eth0 com as seguintes características:

IP: 10.10.10.122
Máscara: 255.255.255.0
Gateway: 10.10.10.1
Network: 10.10.10.0
Broadcast: 10.10.10.255

Acesse o terminal com usuário root e utilize o seguinte comando:

Adicione estes linha no seu arquivo:

Salve (ctrl o) e saia (ctrl x) do arquivo. Pronto agora precisamos somente reiniciar a placa de rede com o comando:

 

Fazendo deploy com Deployer

deployer

 

Deployer é um pacote em PHP que tem como características realizar o deploy de aplicações e como principal vantagem a economia de tempo, melhor desempenho e desenvolvimento.

Neste post vamos desde do primeiro passo a instalação ate a execução do deploy em um servidor, tudo em um ambiente linux, no meu caso a distribuição Debian. Primeiramente precisamos baixar o arquivo .phar disponível no site do projeto.

Download do deployer.phar

Depois de realizado o download vamos move-lo e para a pasta /usr/local/bin e conceder permissão de execução com o seguinte comando:

$ mv deployer.phar /usr/local/bin/dep
$ chmod +x /usr/local/bin/dep

Depois deste passo teste o comando dep no terminal e veja se aparece mais ou menos como a tela abaixo.

Comando dep

O próximo passo é a criação do arquivo deploy.php onde setaremos algumas configurações para que possamos executar nosso delpoy da melhor maneira. No nosso casso vamos realizar o acesso via identityFile a um servidor e passar os arquivos de uma branch especifica de um repositório git.

<?php require 'recipe/symfony.php'; 
server('prod', '10.10.10.213')->user('byteslv')
->identityFile('/home/btllv/.ssh/id_rsa.pub', '/home/btllv/.ssh/id_rsa')
->env('deploy_path', '/var/www/html')
->stage('production');
 
set('repository', 'git@github.com:usuario/tests.git');
env('branch', 'master');
 
task('deploy:vendors', function () {
});
 
task('deploy:assetic:dump', function () {
});
 
task('deploy:cache:warmup', function () {
});

Pronto agora podemos executar nosso comando pra realizar o deploy na nossa maquina de production. Para rodar basta utilizar o seguinte comando:

$ dep deploy production

O processo começara, e tudo dando certo aparecerá  uma tela mais ou menos como esta abaixo.

dep

Processo realizado com sucesso!

É possível ir bem alem do que mostrei aqui. Entre no site do projeto e veja sua documentação e veja como o que mais pode se fazer com o Deployer.

http://deployer.org/

 

Sudo e Debian 8

O Debian 8 não vem com sudo instalado para o uso no terminal de padrão, mais caso queira usar o processo de instalação é muito simples e se resume em três passos.

Primeiro é necessário instalar o sudo utilizando o apt-get:

# apt-get install sudo

Depois de instalado o segundo passo é utilizar o usermod para modificar a conta do seu usuário:

# usermod -a -G sudo seu_usuario_aqui

O terceiro e ultimo passo é reiniciar ou realizar logoff para que possa usufruir deste comando.