Servidor web completo em WSL

Configurando um servidor web em seu computador utilizando 'Windows Subsystem para Linux' (WSL)

Introdução

A Microsoft finalmente atendeu o desejo de quem quer rodar um Linux com facilidade dentro do Windows 10, sem necessitar de uma sobrecarga de máquina virtual. Isso é possível a partir do lançamento do 'Windows Subsystem para Linux (WSL)' que está disponível em duas versões:

  • WSL 1: desenvolvido em cima do próprio kernel do windows. Ele permite o uso de várias distribuições linux baixadas no Windows Store.
  • WSL 2: nova versão do subsistema que oferece a mesma experiência do WSL 1, mas com a principal diferença de que foi desenvolvido usando uma arquitetura totalmente nova que é baseada em um kernel real do Linux.

A ideia desta publicação não é ficarmos aprofundando o conceito do WSL. Para obter maiores informações sobre como funciona e os benefícios de cada versão, acesse os links oficiais da Microsoft onde há conteúdos detalhados sobre as soluções desenvolvidas.

Vamos focar a partir de agora em ensinar passo a passo como configurar um servidor completo Web contemplando os seguintes tópicos:

 

 

Instalação do WSL e distribuição Linux

Nesta seção vamos instalar o WSL no seu Windows. Escolha se deseja instalar a versão 1 ou a versão 2.

Windows Subsystem para Linux (WSL) na versão 1

 

 Windows Subsystem para Linux (WSL) na versão 2

  • Habilite o recurso no Windows 'Plataforma da máquina virtual' acessando o "PowerShell" como administrador e executando o seguinte comando:
    Enable-WindowsOptionalFeature -Online -FeatureName VirtualMachinePlatform
  • Reinicie o computador para aplicar as alterações
  • Acesse novamente o "PowerShell" como administrador e execute o comando abaixo para definir a sua distribuição Linux que utilizará o WSL 2:
    wsl --set-version <Distro> 2​
  • Informações importantes sobre o comando acima:
    • Substitua <Distro> pelo nome da distribuição Linux. Para encontrar o nome, execute o comando wsl -l
    • O número '2' representa que você está utilizando a versão 2 do WSL. Se desejar passar a utilizar a versão 1, você pode executar o mesmo comando acima mudando o valor para '1'.
    • Se quiser tornar o WSL 2 a arquitetura padrão para todas as distribuições Linux que instalar, execute o comando abaixo:
      wsl --set-default-version 2
    • Para verificar cada distribuição Linux configurada e saber qual versão do WSL elas utilizam, execute o comando abaixo:
      wsl --list --verbose ou wsl -l -v

 

Acesso ao terminal Linux

Nesta seção vamos apenas dar algumas dicas para iniciar o uso do terminal da distribuição Linux instalada.

Primeiro acesso

  • No primeiro acesso, será solicitado que você preencha algumas informações básicas para criar o seu usuário. Apenas siga os passos informados no terminal.
  • Terminada a configuração do seu usuário, a sua distribuição Linux estará pronta para uso. Nenhum pacote estará pré-carregado ou instalado. Você parte de uma instalação crua, mas poderá instalar qualquer pacote desejado.

 

Compartilhamento de arquivos do Linux com Windows e vice versa

  • Para acessar arquivos do Windows no terminal do Linux
    • Você consegue acessar qualquer diretório que esteja dentro da sua unidade principal de arquivos (normalmente 'C'). Para chegar até ela execute o comando:
      cd /mnt/c/
  • Para acessar arquivos do Linux no Windows
    • Procuramos indicações de possíveis soluções em nossos testes realizados e até 19 de Julho de 2019 não encontramos nada que funcione de forma efetiva. As duas soluções mais citadas em fóruns são apresentadas a seguir:
      1. Acessar no terminal do Linux o diretório desejado e executar o comando abaixo:
        explorer.exe
        • Em nossos testes apenas abriu o explorer do windows na tela que lista as unidades de rede, o que significa que não funcionou. Talvez tenha relação com a versão do Windows 10 que testamos, mas de qualquer forma fica aqui o registro desta possibilidade.
      2. Acessar o explorer do windows e na barra de endereço e colocar '\\wsl$' (sem as aspas)
        • Em nossos testes, novamente não funcionou.
    • Nossa sugestão é manter os arquivos compartilhados em um diretório do Windows. Desta forma é garantido que você consiga acessar os mesmos arquivos tanto do Windows como do Linux.

 

 

Instalação do Apache 2.4 e PHP 7.3

Nesta seção vamos instalar o apache na versão 2.4, PHP 7.3 e realizar as principais configurações para utilizar o servidor Web.

  • Primeiro realize atualização do sistema executando os dois comandos abaixo
    sudo apt-get update
    sudo apt-get upgrade
  • Execute os comandos abaixo para instalar o apache e seus utilitários
    sudo apt-get install apache2
    sudo apt-get install apache2-utils
    sudo apt-get install ssl-cert
    sudo /etc/init.d/apache2 restart
    • Observação: o comando 'sudo' irá solicitar a senha de root criada no servidor.

 

  • Execute a sequência de comandos abaixo para instalar o PHP 7.3 e os pacotes principais relacionados
    • Realize upgrade do sistema
      sudo apt update
      sudo apt upgrade -y
    • Instale o wget
      sudo apt-get install wget
    • Adicione o repositório PHP 7.3 PPA
      sudo apt -y install lsb-release apt-transport-https ca-certificates 
      sudo wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg
      echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" | sudo 
    • Instale o PHP 7.3
      sudo apt update
      sudo apt -y install php7.3
      • Caso não encontre o pacote do php para instalar, baixar ele:
        • Troque '/home/jreidel/' pelo local que deseja salvar e a url pode mudar se quiser baixar de outro local
          sudo wget -P /home/jreidel/ http://debian.mirror.ac.za/debian/pool/main/p/php7.3/php7.3_7.3.4-2_all.deb
        • Acesse o diretório onde salvou o arquivo e instale o pacote
          cd /home/jreidel/
          sudo dpkg -i php7.3_7.3.4-2_all.deb
        • Instale o PHP 7.3
          sudo apt update
          sudo apt -y install php7.3
        • Resolva problemas de dependências
          apt-get -f install
        • Se ainda assim der erro, execute a instalação a partir de outra url
          sudo apt update
          sudo apt install apt-transport-https lsb-release ca-certificates
          sudo wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg
          sudo apt -y install php7.3
          apt-get -f install
          • OBS: neste caso vamos estar baixando de uma fonte não oficial 

  •  
    • Confirme a versão instalada do PHP
      php -v
    • Instale as extensões principais do PHP 7.3
      sudo apt install php7.3-cli php7.3-fpm php7.3-json php7.3-pdo php7.3-mysql php7.3-zip php7.3-gd  php7.3-mbstring php7.3-curl php7.3-xml php7.3-bcmath php7.3-json
      sudo apt install libapache2-mod-php7.3
      apt policy php7.3-cli
    • Remova os lixos da instalação
      sudo apt-get autoremove
    • Habilite o módulo do php
      a2enmod php7.3
    • Reinicie o apache
      sudo /etc/init.d/apache2 restart
  • Habilite o módulo que permite utilizar groups para autenticações em htaccess
    sudo a2enmod authz_groupfile
  • Ajuste as configurações do apache
    • Acesse o arquivo de configuração e após a edição
      cd /etc/apache2/
      sudo nano apache2.conf​
    • Ir na parte do arquivo que possui configurações de diretórios (<Directory ...>) que fica +/- na linha 249
    • Caso já não haja configurações para home dos usuários, insira o código abaixo:
      <Directory /home/*/public_html/>
         Options Indexes FollowSymLinks
         AllowOverride All
         Require all granted
      </Directory>​
    • Nas configurações do diretório '/var/www/', modifique o valor de 'AllowOverride' de 'None' para 'All'.
    • Caso já não haja configurações para '/var/www/html/', insera o código todo abaixo:
      <Directory /var/www/html/>
          Options Indexes FollowSymLinks
          AllowOverride All
          Require all granted
      </Directory>​
    • Salve o arquivo e saia.
  • Instale SSH e atualize o sistema
    sudo apt-get install ssh
  • Instale GIT
  • sudo apt-get install git
    • OBS: se estiver utilizando o gitlab que exige chave SSH, você pode gerar a chave seguindo os passos:
      • Configure a chave SSH
        • Acesse o diretório .ssh
          • cd .ssh
        • Execute o comando abaixo onde "email@example.com" deve ser alterado por um identificador da chave sem espaço em branco (ex: 'gitlab')
          ssh-keygen -o -t rsa -b 4096 -C "email@example.com"
          • Observação: gere a chave sem senha e sem modificar o local e nome da chave
        • Copie a chave do diretório do terminal para um diretório comum do windows. Ex (troque o nome da chave):
          cp /home/demolidor/.ssh/id_rsa.pub /mnt/c/localhost/
        • Via explorer do windows abra o arquivo com um editor comum (Ex: notepad ++) e copie todo conteúdo do arquivo.
      • Cadastre a chave SHH no seu usuário do Git Lab
  • Atualize o sistema
    sudo apt update
    sudo apt upgrade

 

  • Ajuste as configurações da versão do php no apache
    • Acesse o arquivo de configuração
      sudo nano /etc/apache2/mods-enabled/php7.3.conf
    • Dentro do arquivo, edite dentro da tag <Directory /home/*/public_html> para que fique conforme o exemplo abaixo:
      <Directory /home/*/public_html>
          #php_admin_flag engine Off
          AllowOverride All
      </Directory>
  • Reinicie o apache
    sudo /etc/init.d/apache2 restart
    • Se ocorrer erro ao reiniciar o apache, execute o comando abaixo para descobrir o erro:
      sudo apachectl configtest
    • Se o erro não aparecer no comando acima, tente ajustar a seguinte configuração:
      • Edite o arquivo do apache novamente
        sudo nano /etc/apache2/apache2.conf
      • Adicione a linha abaixo no final do arquivo e após reinicie o apache novamente
        AcceptFilter http none
  • Ative o módulo rewrite
    sudo a2enmod rewrite
    sudo /etc/init.d/apache2 restart

 Configuração do banco de dados Mysql

Nesta seção vamos instalar e configurar o banco de dados Mysql

  • Instale o servidor mysql
    sudo apt install mariadb-server
  • Instale o pacote que permite acessar os dados e fazer modificações no banco de dados
    sudo apt-get install mariadb-client​
  • Crie a base 'mysql' e 'test' necessárias para o funcionamento
  • mysql_install_db --user=mysql
  • Ative o servidor
    sudo /etc/init.d/mysql start​
  • Defina uma senha para o usuário root (troque a senha exibida)
    sudo mysqladmin -u root password 123456
  • Reinicie o Apache
  • sudo /etc/init.d/apache2 restart​
  • Libere o uso do mysql para softwares clientes (ex: Navicat)
    • Acesse o terminal para mysql
    • sudo mysql
    • Conceda privilégio para acesso por qualquer rede para usuário root e na rede localhost
      GRANT ALL ON *.* TO 'root'@'%' IDENTIFIED BY '[senhaDoRoot]' WITH GRANT OPTION;
      GRANT ALL ON *.* TO 'root'@'localhost' IDENTIFIED BY '[senha]' WITH GRANT OPTION;
    • Execute o comando abaixo
      FLUSH PRIVILEGES;
  • Crie novos usuários para acesso Mysql
    • Acesse o terminal para mysql
      sudo mysql
    • Execute o SQL abaixo trocando 'user' pelo seu usuário e 'pass' pela sua senha
      CREATE USER 'user'@'localhost' IDENTIFIED BY 'pass';
    • Execute o SQL abaixo para adicionar todos os privilégios ao usuário, trocando 'user' pelo seu usuário
      GRANT ALL PRIVILEGES ON * . * TO 'user'@'localhost';
  • Pronto, pode acessar o mysql a partir do seu software cliente desejado.
    • OBS: utilize o usuário e senha criados e para o host coloque 'localhost'

  

 

Configuração de um virtual host para uso de diretórios do windows

Em um servidor Web você vai provavelmente precisar acessar os seus arquivos fonte a partir de um software que rode em cima do Windows. Neste caso, você vai precisar acessar arquivos do Linux a partir do Windows, certo? O problema, conforme sinalizamos no tópico "Acesso ao terminal Linux", é que isso normalmente não é possível. Para contornar isso, nossa dica é você manter o repositório de arquivos fontes dos seus sites e sistemas em um diretório do windows e ajustar o virtualhost do seu linux para executar a partir do local escolhido.

Vamos aos passos para configurar o seu virtualhost:

  • Crie yn arquivo para o host local
    sudo nano /etc/apache2/sites-available/localhost.conf
  • Coloque no arquivo o conteúdo abaixo mudando '/mnt/c/localhost/' pelo caminho que você definiu no Windows para salvar seus arquivos fonte (lembre-se que até '/mnt/c/' você estará na raiz da unidade C do seu windows).
    <VirtualHost *:80>
    	ServerName localhost
    	ServerAlias localhost
    	ServerAdmin contato@noboss.com.br
    	DocumentRoot /mnt/c/localhost/
    
    	ErrorLog ${APACHE_LOG_DIR}/error.log
    	CustomLog ${APACHE_LOG_DIR}/access.log combined
    </VirtualHost>​
  • Adicione o arquivo de configuração ao apache
    sudo a2ensite localhost.conf
  • Reinicie o apache
    sudo /etc/init.d/apache2 restart
  • Adicione autorização de acesso ao apache para o diretório criado no windows
    • Acesse o arquivo de configuração
      sudo nano /etc/apache2/apache2.conf
    • Adicione o código abaixo junto com outras configurações similares, mudando '/mnt/c/localhost/' pelo caminho que você definiu o diretório no Windows (o mesmo informado anteriormente).
      <Directory /mnt/c/localhost/>
              Options Indexes FollowSymLinks
              AllowOverride All
              Require all granted
      </Directory>
    • Reinicie o apache
      sudo /etc/init.d/apache2 restart

 

Instalação do NodeJs, Ruby, Sass e Compass

Nesta seção vamos mostrar como instalar os principais pacotes necessários para trabalhar com compilação de arquivos JS, SASS e CSS, além de outras possibilidades. Se você não precisa disso, pule essa etapa.

  • Instale o python
    sudo apt-get install make python g++
  • Instale nodejs
    mkdir ~/nodejs && cd $_
    git clone https://github.com/nodejs/node.git
    cd node
    sudo apt install python3-distutils -y
    
    # os dois comandos abaixo executa só se tiver problemas na versao baixada
    #git tag
    #git checkout v13.10.1 
    
    sudo ./configure
    sudo make
    sudo make install
    
  • Instale o Ruby
    sudo apt-get install ruby
    sudo apt-get install ruby-dev
  • Instale o sass
    su -c "gem install sass"
  • Instale o compass
    sudo gem update --system
    sudo gem install compass
  • Instale o bootstrap sass
    sudo gem install bootstrap-sass

 

Finalizando

Toda instalação está concluída. Agora reinicie o computador e execute os passos abaixo:

  •  Abra o console do Debian instalado
  • Inicialize o apache
    sudo /etc/init.d/apache2 start
  • Inicialize o mysql
    sudo /etc/init.d/mysql start

Pronto! Você já pode utilizar o seu servidor. No browser utilize http://localhost/

Observações:

  • Caso após inicializar o apache e o mysql, ainda não esteja carregando os seus arquivos no browser, reinicie os dois serviços
    sudo /etc/init.d/apache2 restart
    sudo /etc/init.d/mysql restart
  • Os passos desta seção (abrir o console e inicializar os dois serviços) devem ser executados sempre que inicializar o computador para poder utilizar o servidor.

 

 

 

Gostou da publicação? Tem sugestões de atualizações no conteúdo? Alguma dúvida? Deixe um comentário logo abaixo.

Escrito por

Web Developer since 2005 and owner of the company No Boss Technology.

Publicação anterior

5 técnicas de SEO que poucos sabem