# Configuração WSL

# Instalar o WSL


  • Siga o guia da Microsoft (opens new window)
  • No próprio guia, não se esqueça de fazer o tópico Atualizar a versão do WSL 1 para o WSL 2, pois utilizaremos a versão 2 do WSL.
  • Obs.: O serviço do WSL não é encerrado apenas fechando os terminais. Caso necessite, abra um terminal do Windows Power Shell ou um CMD e execute o comando:
wsl --shutdown

# Limitar recursos do WSL


Se tem recurso pra usar, então eu vou usar!

  • Para não conviver com problemas de travamento, siga esse tutorial (opens new window).
  • Caso tenha 8GB de memória RAM, recomendamos limitar a 3GB. Caso tenha 12GB, limite a 5GB, por exemplo, ou o que for o seu caso.

# Instalar o VS Code


extensao

# Instalar Windows Terminal (opcional)


  • É recomendável instalar o Windows Terminal (opens new window).
    • O terminal do Ubuntu que será instalado tem algumas limitações. Uma bem notável é não poder abrir mais abas.
  • Após a instalação, para facilitar, vá em Configurações e modifique o terminal padrão para o Ubuntu.

config-windows-terminal

padrao-ubuntu

# Configurações do Git


  • Configure seu usuário local com os comandos:
git config --global user.email "seu@email.com"
git config --global user.name "Seu Nome"

# Instalar o Docker


  • Execute os comandos a seguir para instalar o docker dentro do seu linux (alguns comandos poderão demorar)
sudo apt update
sudo apt install apt-transport-https ca-certificates curl software-properties-common
sudo apt install build-essential
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
sudo apt update
sudo apt install docker-ce
sudo service docker start
  • Se der problema de NO_PUBKEY, conforme o print abaixo, pegue o ID informado na mensagem de erro após o NO_PUBKEY e execute o comando: sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys <PUBKEY>

error-no-pubkey

  • No caso acima, o comando seria: sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 7EA0A9C3F273FCD8
  • O serviço do docker não inicia junto com o Ubuntu (existem formas de fazer isso, nada que uma "googlada" não ajude), então é necessário executar o comando abaixo ao ligar seu WSL:
sudo service docker start

# Docker sem sudo (opcional)


  • Se você é um dev preguiçoso (como a maioria) e deseja executar os comandos do docker sem informar sudo todas as vezes, execute os comandos:
sudo gpasswd -a $USER docker
newgrp docker
  • Feche o terminal e abra novamente.

# Pasta u01 (bibliotecas do oracle)


  • Baixe a pasta desse link (opens new window) no seu computador.
  • Extraia e cole dentro do diretório do Ubuntu.
    • Verifique se a pasta u01 está duplicada, ou seja, se dentro da u01 existe outra u01. Dependendo de qual programa utilizado para extrair isso pode acontecer.
    • Para abrir a pasta do seu Ubuntu dentro do WSL, abra um terminal e execute os comandos:
cd
explorer.exe .

Nota

Sim, é um cd sem diretório. Isso irá te levar para a pasta do seu usuário do Ubuntu.

# Container Teknisa


  • Baixe a imagem que for utilizar. Nesse tutorial usaremos a c9-php7
sudo docker login -u teknisa -p teknisa2020 dockerhub.teknisa.com
sudo docker pull dockerhub.teknisa.com/c9-php7
  • Exemplo de comando para criar o container
sudo docker run --restart=always -d --name php7 -p 80:80 -v /home/phillipesilva/workfolder:/home/developer/workfolder -v /home/phillipesilva/.ssh:/home/phillipesilva/.ssh -v /home/phillipesilva/workfolder/u01:/u01 -it dockerhub.teknisa.com/c9-php7
  • Atenção nos diretórios informados, pois você deve informar o usuário que foi criado no seu Ubuntu! No exemplo acima o usuário criado foi phillipesilva.
  • Parâmetros:
    • --restart=always: Para o container já ser iniciado assim que o serviço do docker iniciar;
    • --name: Nome a ser utilizado para acessar o container. Nesse exemplo utilizamos php7;
    • -p: Mepear portas do container para serem utilizadas externamente;
    • -v: Volumes para serem compartilhados do Ubuntu com o Container;
      • Nesse exemplo, foi compartilhada a pasta workfolder, já criada previamente, onde os projetos estarão.
      • A chave do git também foi compartilhada para não precisar gerar novamente dentro do container.
      • Aponte corretamente o volume da u01 para a pasta que você extraiu no passo anterior. Nesse exemplo, ela está localizada dentro de workfolder.

# Usuário no container Teknisa


  • Antes de entrar no container execute o comando:
$UID

UID

  • Aparentemente vai gerar um erro, mas vai mostar o seu ID no início. Acreditamos que seja 1000 também.
  • Entre no container com o comando:
docker exec -it php7 bash
  • Lembrando que nosso container foi criado com o nome php7. Se o seu for diferente, altere no comando.
  • No container da Teknisa já existe um usuário com o ID 1000, que precisará ser alterado.
    • Abra o arquivo com o comando vim /etc/passwd (se preferir, utilize o nano ou outro editor).
    • Altere o ID do usuário developer para 999.

user-developer

  • Crie seu usuário com o comando:
adduser -u 1000 seu_usuario
  • Caso seu ID não for 1000, altere no comando.
  • Informe uma senha.
  • Para os demais parâmetros, basta teclar Enter que não serão importantes.
  • Altere o dono da pasta do seu usuário (pode ser que esteja com o root) com o comando:
chown -R 1000:1000 /home/seu_usuario
  • Saia do container. A partir de agora, todas as alterações nos arquivos dos seus projetos dentro do container (como um composer update) deve ser feita com seu usuário. Dessa forma, não haverá nenhum problema acessar os arquivos tanto fora quanto dentro do container.
    • Para configurações do linux que roda dentro do seu container, pode ser que haja a necessidade de serem feitas com o usuário root, como as feitas até aqui.
  • Para entrar no container já com seu usuário, utilize o comando:
docker exec -it -u seu_usuario php7 bash

# Apache do Container


  • Caso o apache do seu container pare ou não esteja rodando após iniciar por qualquer motivo que seja, execute os comandos:
apachectl stop
/etc/init.d/apache2 start

# Utilizando o VS Code dentro do WSL


  • Para abrir o VS Code a partir do WSL, no terminal (fora do container), vá até a pasta do seu projeto e execute o comando:
code .
  • Você também pode executar o comando informando o diretório do seu projeto como parâmetro:
code /home/seu_usuario/workfolder/projeto
  • Se o comando code não for reconhecido, algo deu errado durante a instalação e o VS Code não foi adicionado no path do Windows.
  • Após aberto uma vez pelo comando, você poderá abrir o VS Code normalmente através do seu executável, mas o seu Ubuntu dentro do WSL deve estar rodando previamente.

# Considerações Finais


  • Como agora estamos em ambiente local, você poderá instalar o que for necessário no seu Ubuntu, fora do container, como node (para executar o pmCli, por exemplo), o npm (para executar o zeedhi next, por exemplo), o grunt e etc...
  • A única necessidade real de execução dentro do container é o composer update, porque somente o container possui php instalado (e já totalmente configurado com apache, não recomendamos perder tempo instalando no Ubuntu).
  • Preciso instalar tudo no Ubuntu mesmo? Não! Acreditamos que é mais prático utilizar assim. Se desejar apenas criar o container e utilizá-lo para tudo, também pode.

Lembre-se, é um ambiente local seu, utilize da melhor maneira que desejar!

Nunca se esqueça...

O Google é meu pastor e nada me faltará!