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
- Acesso ao terminal Linux
- Instalação do Apache 2.4 e PHP 7.3
- Configuração do banco de dados Mysql
- Configuração de um virtual host para uso de diretórios do windows
- Instalação do NodeJs, Ruby, SASS e Compass
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
- Habilite o recurso no Windows acessando o "PowerShell" como administrador e executando o seguinte comando:
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
- Reinicie o computador quando solicitado
- Escolha uma das distribuições Linux listadas abaixo para acessar o download através do Microsoft Store (para o nosso tutorial de instalação de servidor web que será detalhado a seguir, utilizamos a opção 'Debian GNU/Linux')
- Se tiver algum problema na instalação, consulte mais informações na página oficial da Microsoft.
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
- Substitua <Distro> pelo nome da distribuição Linux. Para encontrar o nome, execute o comando
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/
- Você consegue acessar qualquer diretório que esteja dentro da sua unidade principal de arquivos (normalmente 'C'). Para chegar até ela execute o comando:
- 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:
- 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.
- Acessar o explorer do windows e na barra de endereço e colocar '\\wsl$' (sem as aspas)
- Em nossos testes, novamente não funcionou.
- Acessar no terminal do Linux o diretório desejado e executar o comando abaixo:
- 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.
- 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:
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
- Troque '/home/jreidel/' pelo local que deseja salvar e a url pode mudar se quiser baixar de outro local
- Caso não encontre o pacote do php para instalar, baixar ele:
- Realize upgrade do sistema
-
- 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
- Confirme a versão instalada do PHP
- 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.
- Acesse o arquivo de configuração e após a edição
- 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.
- Acesse o diretório .ssh
- Cadastre a chave SHH no seu usuário do Git Lab
- Configure a chave SSH
- OBS: se estiver utilizando o gitlab que exige chave SSH, você pode gerar a chave seguindo os passos:
- 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>
- Acesse o arquivo de configuração
- 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
- Edite o arquivo do apache novamente
- Se ocorrer erro ao reiniciar o apache, execute o comando abaixo para descobrir o erro:
- 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';
- Acesse o terminal para mysql
- 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
- Acesse o arquivo de configuração
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.