Como instalar e otimizar o Apache no Ubuntu
Published: 2020-03-13 01:35:59

Essas instruções devem funcionar em qualquer distribuição baseada no Ubuntu, incluindo Ubuntu 14.04, Ubuntu 16.04, Ubuntu 18.04 e etc. Eles foram testados e escritos para o Ubuntu 16.04.

O Apache (também conhecido como httpd) é o servidor web mais popular e mais usado, portanto, isso deve ser útil para todos.
## Antes de começarmos a instalar o Apache

Alguns requisitos e notas antes de começarmos:

* O Apache já pode estar instalado no seu servidor, então verifique se é o primeiro. Você pode fazer isso com o comando “apachectl -V” que gera a versão do Apache que você está usando e algumas outras informações.
* Você precisará de um servidor Ubuntu. Você pode comprar um da [DigitalOcean](https://www.digitalocean.com/), eles são um dos melhores e mais baratos provedores de hospedagem na nuvem.
* Você precisará do usuário root ou de um usuário com acesso sudo. Todos os comandos abaixo são executados pelo usuário raiz, por isso, não precisamos acrescentar “sudo” a cada comando.
* Você precisará do SSH ativado se usar o Ubuntu ou um cliente SSH como o MobaXterm, se usar o Windows.
Isso é mais do que isso. Vamos para a instalação.
## Instale o Apache no Ubuntu
A primeira coisa que você sempre precisa fazer é atualizar o Ubuntu antes de fazer qualquer outra coisa. Você pode fazer isso executando:
```shell
apt-get update && apt-get upgrade
```
Em seguida, para instalar o Apache, execute o seguinte comando:
```shell
apt-get install apache2
```
Se você quiser, também pode instalar a documentação do Apache e alguns utilitários do Apache. Você precisará dos utilitários do Apache para alguns dos módulos que instalaremos posteriormente.
```shell
apt-get install apache2-doc apache2-utils
```
E é isso. Você instalou o Apache com sucesso.

Você ainda precisará configurá-lo.
## Configure and Optimize Apache on Ubuntu
Existem várias configurações que você pode fazer no Apache, mas as principais e mais comuns são explicadas abaixo.
## Verifique se o Apache está em execução
Por padrão, o Apache é configurado para iniciar automaticamente na inicialização, então você não precisa ativá-lo. Você pode verificar se ele está em exibição e outras informações relevantes com o seguinte comando:
```shell
systemctl status apache2
```
![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/by67qlykzlgnbuu134o6.png)
E você pode verificar qual versão você está usando
```shell
apachectl -V
```
Uma maneira mais simples de verificar isso é visitando o endereço IP do seu servidor. Se você obtiver a página padrão do Apache, tudo estará funcionando bem.
## Atualize seu firewall
Se você usa um firewall (o que deve), provavelmente precisará atualizar suas regras de firewall e permitir o acesso às portas padrão. O firewall mais comum usado no Ubuntu é o UFW, então as instruções abaixo são para o UFW.

Para permitir o tráfego através das portas 80 (http) e 443 (https), execute o seguinte comando:
```shell
ufw allow 'Apache Full'
```
## Instalar módulos comuns do Apache
Alguns módulos são frequentemente recomendados e você deve instalá-los. Incluiremos instruções para as mais comuns:
## Acelere seu website com o módulo PageSpeed
O módulo PageSpeed irá otimizar e acelerar o seu servidor Apache automaticamente.

Primeiro, vá para a página de download do PageSpeed e escolha o arquivo que você precisa. Estamos usando um servidor Ubuntu de 64 bits e instalaremos a versão estável mais recente. Faça o download usando wget:
```shell
wget https://dl-ssl.google.com/dl/linux/direct/mod-pagespeed-stable_current_amd64.deb
```
Em seguida, instale-o com os seguintes comandos:
```shell
dpkg -i mod-pagespeed-stable_current_amd64.deb 
apt-get -f install
```
Reinicie o Apache para que as alterações entrem em vigor:
```shell
systemctl restart apache2
```
## Ative reescritas / redirecionamentos usando o módulo mod_rewrite
Este módulo é usado para reescrever (redirecionamentos), como o nome sugere. Você precisará disso se usar o WordPress ou qualquer outro CMS para esse assunto. Para instalá-lo, basta executar:
```shell
a2enmod rewrite
```
E reinicie o Apache novamente. Você pode precisar de algumas configurações extras, dependendo do CMS que estiver usando, se houver. Google-lo para instruções específicas para a sua configuração.
## Proteja seu Apache com o módulo ModSecurity
ModSecurity é um módulo usado para segurança, mais uma vez, como o nome sugere. Ele basicamente atua como um firewall e monitora seu tráfego. Para instalá-lo, execute o seguinte comando:
```shell
apt-get install libapache2-modsecurity
```
E reinicie o Apache novamente:
```shell
systemctl restart apache2
```
O ModSecurity vem com uma configuração padrão que é suficiente por si só, mas se você quiser estendê-lo, você pode usar o conjunto de regras [OWASP](https://www.owasp.org/index.php/Category:OWASP_ModSecurity_Core_Rule_Set_Project).

## Bloquear ataques DDoS usando o módulo mod_evasive
Você pode usar o módulo mod_evasive para bloquear e impedir ataques DDoS em seu servidor, embora seja discutível como é útil na prevenção de ataques. Para instalá-lo, use o seguinte comando:
```shell
apt-get install libapache2-mod-evasive
```
Por padrão, mod_evasive está desabilitado, para ativá-lo, edite o seguinte arquivo:
```shell
nano /etc/apache2/mods-enabled/evasive.conf
```
E descomente todas as linhas (remove #) e configure-as conforme suas necessidades. Você pode deixar tudo como está se não souber o que editar.
![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/fl42uo7f68z6jumnl62o.png)
E crie um arquivo de log:
```shell
mkdir /var/log/mod_evasive 
chown -R www-data:www-data /var/log/mod_evasive
```
É isso aí. Agora reinicie o Apache para que as alterações entrem em vigor:
```shell
systemctl restart apache2
```
Existem módulos adicionais que você pode instalar e configurar, mas tudo depende de você e do software que você está usando. Eles geralmente não são obrigatórios. Mesmo os 4 módulos que incluímos não são necessários. Se um módulo for necessário para um aplicativo específico, ele provavelmente notará isso.

## Otimize o Apache com o script Apache2Buddy
O Apache2Buddy é um script que ajusta automaticamente sua configuração do Apache. A única coisa que você precisa fazer é executar o seguinte comando e o script faz o resto automaticamente:
```shell
curl -sL https://raw.githubusercontent.com/richardforth/apache2buddy/master/apache2buddy.pl | perl
```
Pode ser necessário instalar o curl se você ainda não o instalou. Use o seguinte comando para instalar o curl:
```shell
apt-get install curl
```

## Configurações adicionais
Há algumas coisas extras que você pode fazer com o Apache, mas as deixaremos para outro tutorial. Coisas como ativar o suporte a http / 2, desativar (ou ativar) o KeepAlive, ajustando ainda mais o seu Apache. Você não precisa fazer nada disso, mas pode encontrar tutoriais on-line e fazê-lo se precisar.

## Crie seu primeiro site com o Apache
Agora que terminamos todos os ajustes, vamos começar a criar um site real. Siga nossas instruções para criar uma página HTML simples e um host virtual que será executado no Apache.

A primeira coisa que você precisa fazer é criar um novo diretório para o seu site. Execute o seguinte comando para fazer isso:
```shell
mkdir -p /var/www/example.com/public_html
```
Claro, substitua example.com pelo seu domínio desejado. Você pode obter um nome de domínio barato na [GoDaddy](https://br.godaddy.com/).

Não se esqueça de substituir example.com em todos os comandos abaixo.
Em seguida, crie uma página da web simples e estática. Crie o arquivo HTML:
```shell
nano /var/www/example.com/public_html/index.html
```
E cole isto:
```html
<html>
     <head>
       <title>Simple Page</title>
     </head>
     <body>
       <p>If you're seeing this in your browser then everything works.</p>
     </body>
</html>
```
Salve e feche o arquivo.
Configure as permissões do diretório:
```shell
chown -R www-data:www-data /var/www/example.com 
chmod -R og-r /var/www/example.com
```
Crie um novo host virtual para o seu site:
```shell
nano /etc/apache2/sites-available/example.com.conf
```
E cole o seguinte:
```
<VirtualHost *:80>
     ServerAdmin admin@example.com
     ServerName example.com
     ServerAlias www.example.com
    
     DocumentRoot /var/www/example.com/public_html
     
     ErrorLog ${APACHE_LOG_DIR}/error.log
     CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
```
Este é um host virtual básico. Você pode precisar de um arquivo .conf mais avançado, dependendo da sua configuração.

Salve e feche o arquivo depois de atualizar tudo de acordo.
Agora, ative o host virtual com o seguinte comando:
```shell
a2ensite example.com.conf
```
E, finalmente, reinicie o Apache para que as alterações entrem em vigor:
```shell
systemctl restart apache2
```
É isso aí. Você está feito. Agora você pode visitar example.com e visualizar sua página.