Criando um ambiente de desenvolvimento PHP com WSL \| TreinaWeb               Promoção no ar   Matricule-se agora e garanta **54% de desconto**  

  Termina em   Tempo restante da oferta: 03 Horas 

 17 Min 

 11 Seg 

   Tempo restante da oferta: 03 17 11 

  [Assinar →](https://www.treinaweb.com.br/checkout/pagamento/plano/anual?cupom=TW-SCLIENTE26) 

   [                ](https://www.treinaweb.com.br)  Explorar  

 [ Quanto custa? ](#assinatura) [ FAQ ](https://www.treinaweb.com.br#faq) [Matricule-se](#assinatura) [ Entrar ](https://www.treinaweb.com.br/login) 

     [ Início ](https://www.treinaweb.com.br) [ Artigos ](https://www.treinaweb.com.br/blog) Criando um ambiente de desenvolvimento PHP com WSL  [ PHP ](https://www.treinaweb.com.br/blog/categoria/php) 

# Criando um ambiente de desenvolvimento PHP com WSL

 Nesse artigo vamos criar um ambiente de desenvolvimento PHP completo, com MySQL e Nginx dentro do WSL.

 [ Gabriel Machado ](https://www.treinaweb.com.br/blog/autor/gabriel-machado) 7 anos atrás

  ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2019/07/03181535/WINDOWS-PHP.png)  

O WSL é uma alternativa interessante para quem precisa configurar um ambiente de desenvolvimento em Linux dentro do Windows. Com ele você pode escolher a sua distribuição Linux preferida e configurar seu ambiente exatamente da mesma forma que você configuraria em uma máquina Linux ou em um servidor, por exemplo.

Nesse artigo vamos criar um ambiente de desenvolvimento PHP completo, com MySQL e Nginx dentro do WSL.

## Instalação do WSL

Antes de mais nada, é preciso habilitar o WSL na sua máquina e instalar a distribuição de sua escolha. Se você ainda não conhece o WSL ou tem dúvidas se sua máquina tem suporte a ele, recomendo a leitura do artigo [O que é Windows Subsystem for Linux (WSL)?](https://www.treinaweb.com.br/blog/o-que-e-windows-subsystem-for-linux-wsl) para saber mais e acompanhar o processo de instalação.

Para esse tutorial vou utilizar o Ubuntu 18.04. Os comandos apresentados aqui podem não funcionar com outras distribuições, mas você pode utilizar esse artigo para ter uma ideia geral.

[  ![Nginx - Fundamentos](https://d2knvm16wkt3ia.cloudfront.net/assets/svg-icon/nginx.svg)   Curso Nginx - Fundamentos Conhecer o curso ](https://www.treinaweb.com.br/curso/ngnix-fundamentos)

## Instalando o Nginx

Para iniciar vamos iniciar nosso terminal com o WSL e instalar o Nginx. Ele está disponível via `apt-get` e pode ser instalado com os comandos abaixo como sudo:

```
sudo apt-get update
sudo apt-get install nginx

```

Aproveite esse momento e instale utilitários como o git para versionamento de código e um editor de textos de sua preferência, como o vim:

```
sudo apt-get install git vim

```

Depois é necessário habilitar o serviço do Nginx dentro do WSL, antes disso verifique se a porta 80 da sua máquina está liberada. Você pode executar o seguinte comando PowerShell como administrador para descobrir isso:

```
Get-Process -Id (Get-NetTCPConnection -LocalPort 80).OwningProcess

```

Se o comando retornar erro, a porta 80 está liberada para uso:

![Verificando a porta 80 com PowerShell](https://dkrn4sk0rn31v.cloudfront.net/2019/07/04030306/verificar-porta-80.png)

Feito isso, volte para seu terminal do WSL e execute o comando:

```
sudo service nginx start

```

Com isso seu localhost já estará funcionando:

![Página inicial do nginx](https://dkrn4sk0rn31v.cloudfront.net/2019/07/04030307/welcome-nginx.png)

Como o WSL [não suporta o gerenciamento de serviços usando systemd](https://github.com/microsoft/WSL/issues/511), sempre que você reiniciar a máquina e iniciar uma nova sessão com o WSL, você precisa iniciar o serviço do Nginx novamente. Veremos como resolver isso logo mais.

[  ![MySQL - Desenvolvedor](https://d2knvm16wkt3ia.cloudfront.net/assets/svg-icon/mysql.svg)   Curso MySQL - Desenvolvedor Conhecer o curso ](https://www.treinaweb.com.br/curso/mysql-desenvolvedor)

## Instalando o MySQL

O MySQL 5.7 pode ser instalado a partir do `apt-get` no Ubuntu 18.04:

```
sudo apt-get install mysql-server

```

Como também aconteceu com o Nginx, é preciso iniciar o serviço do MySQL manualmente:

```
sudo service mysql start

```

Para acessar sua instância do MySQL, é preciso criar um novo usuário no seu banco de dados para ser utilizado junto com sua aplicação. No seu terminal inicie o cliente do MySQL executando `sudo mysql` e execute a seguinte query:

```
GRANT ALL ON *.* TO 'admin'@'localhost' IDENTIFIED BY 'password' WITH GRANT OPTION;

```

Isso irá criar um usuário chamado admin com a senha password. Esse usuário será acessível apenas pelo endereço localhost. Troque o usuário e senha para algo mais seguro e digite `exit` para sair do cliente do MySQL.

Teste a conexão com o MySQL utilizando algum cliente, você pode utilizar o [MySQL Workbench](https://dev.mysql.com/downloads/workbench/) por exemplo:

![Teste da conexão com o MySQL](https://dkrn4sk0rn31v.cloudfront.net/2019/07/04030305/mysql-teste-conexao.png)

[  ![Joomla - Criação de Temas](https://d2knvm16wkt3ia.cloudfront.net/assets/svg-icon/joomla.svg)   Curso Joomla - Criação de Temas Conhecer o curso ](https://www.treinaweb.com.br/curso/joomla-criacao-de-temas-completo)

## Instalando o PHP

Agora vamos de fato instalar o PHP e configurá-lo para funcionar com o Nginx. É preciso instalar o PHP-FPM (FastCGI Process Manager) para que o Nginx consiga delegar as requisições recebidas para as páginas a serem interpretadas com PHP. Como estamos utilizando o MySQL como banco de dados, é interessante instalar a extensão do MySQL também:

```
sudo apt-get install php-fpm php-mysql

```

Com isso será instalado a versão 7.2 do PHP juntamente com o FPM e as extensões do MySQL:

![Versão do php](https://dkrn4sk0rn31v.cloudfront.net/2019/07/04030307/versao-php.png)

Depois de instalado, inicie o serviço do PHP-FPM:

```
sudo service php7.2-fpm start

```

## Configurando nosso site

Por fim, vamos configurar nosso site para ser executado com PHP. Crie um arquivo em `/etc/nginx/sites-available/localhost` com o seguinte conteúdo:

```
server {
  listen 80;
  root /var/www/html;
  index index.php index.html index.htm index.nginx-debian.html;
  server_name localhost;

  location / {
    try_files $uri $uri/ =404;
  }

  location ~ .php$ {
    include snippets/fastcgi-php.conf;
    fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
  }

  location ~ /.ht {
    deny all;
  }
}

```

Habilite o site criado para utilizar a nova configuração através de um link simbólico (conhecido também como symlink) no diretório `/etc/nginx/sites-enabled` e remova a configuração de site padrão com os seguintes comandos:

```
sudo ln -s /etc/nginx/sites-available/localhost /etc/nginx/sites-enabled/
sudo unlink /etc/nginx/sites-enabled/default

```

Reinicie o serviço do Nginx para ler essas novas configurações:

```
sudo service nginx restart

```

E crie o arquivo `/var/www/html/index.php` com o seguinte conteúdo:

```
