Instalando o Apache2
sudo apt install apache2
Copie os arquivos do seu projeto para o Document root do Apache: /var/www/html
Altere as permissões de dono e grupo para o usuário do apache:
sudo chown -R www-data:www-data /var/www/html/
Aplicando URL Rewriting
Avalie se para o seu caso o rewrite
é aplicável.
Ativando o mod_rewrite
sudo a2enmod rewrite
Apache rodando sem SSL/TLS, edite o arquivo:
/etc/apache2/sites-available/000-default.conf
Dentro do bloco de código <VirtualHost *:80> </VirtualHost>
, insira a configuração a seguir. O bloco deve ficar mais ou menos assim:
<VirtualHost *:80>
<Directory />
Options FollowSymLinks
AllowOverride All
</Directory>
<Directory /var/www/html>
Options FollowSymLinks
AllowOverride All
Order Allow,Deny
Allow from all
</Directory>
</VirtualHost>
Apache rodando com SSL/TLS, edite o arquivo:
/etc/apache2/sites-available/000-default-ssl.conf
Obs: Pode haver variação no nome desse arquivo dependendo de como foi configurado o ssl/tls.
Dentro do bloco de código <VirtualHost *:443> </VirtualHost>
, insira a configuração abaixo:
<VirtualHost *:443>
<Directory />
Options FollowSymLinks
AllowOverride All
</Directory>
<Directory /var/www/html>
Options FollowSymLinks
AllowOverride All
Order Allow,Deny
Allow from all
</Directory>
</VirtualHost>
Reinicie o Apache2
sudo systemctl restart apache2
Configurando a criptografia na comunicação (certificado digital/HTTPS/TLS/SSL)
Com Let’s Encrypt
Siga os passos descritos no site da organização https://letsencrypt.org/getting-started/ .Geralmente instalar usando o https://certbot.eff.org/ dá certo.
Observação
Quando tentei instalar o certificado em instâncias da AWS, utilizando o DNS público da instância, exemplo ec2-52-548-54-242.compute-1.amazonaws.com, não deu certo.
Criando o seu certificado
Habilitando o módulo ssl
sudo a2enmod ssl
Reiniciando o Apache2
sudo systemctl restart apache2
Criando a pasta onde ficará armazenado os arquivos do certificados:
sudo mkdir /etc/apache2/ssl
Criando os arquivos da chave e certificado
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/apache2/ssl/apache.key -out /etc/apache2/ssl/apache.crt
Durante o processo de criação, irão aparecer algumas perguntas para você responder, a mais importante é “Common Name (e.g. server FQDN or YOUR name)”, insira o nome do seu domínio ou o IP público do seu servidor WEB.
Edite o arquivo de configuração do ssl:
sudo vim /etc/apache2/sites-available/default-ssl.conf
Sem os comentários, ele deve estar mais ou menos assim:
<IfModule mod_ssl.c>
<VirtualHost _default_:443>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
SSLEngine on
SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem
SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key
<FilesMatch "\.(cgi|shtml|phtml|php)$">
SSLOptions +StdEnvVars
</FilesMatch>
<Directory /usr/lib/cgi-bin>
SSLOptions +StdEnvVars
</Directory>
</VirtualHost>
</IfModule>
Edite o arquivo para ele ficar assim:
<IfModule mod_ssl.c>
<VirtualHost default:443>
ServerAdmin admin@example.com
ServerName your_domain.com
ServerAlias www.your_domain.com
DocumentRoot /var/www/html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
SSLEngine on SSLCertificateFile /etc/apache2/ssl/apache.crt
SSLCertificateKeyFile /etc/apache2/ssl/apache.key
<FilesMatch ".(cgi|shtml|phtml|php)$">
SSLOptions +StdEnvVars
</FilesMatch>
<Directory /usr/lib/cgi-bin>
SSLOptions +StdEnvVars
</Directory>
</VirtualHost>
</IfModule>
Habilitando a configuração
sudo a2ensite default-ssl.conf
Reiniciando o Apache2
sudo systemctl restart apache2
Ativando redirecionamento HTTP para HTTPS
Ativando o redirecionamento usando virtualHost
Edite o arquivo:
sudo vim /etc/apache2/sites-available/000-default.conf
Adicione a linha no bloco <VirtualHost *:80> </VirtualHost>
e salve.
Redirect / https://seu-dominio-aqui.com
Reiniciando o Apache2
sudo systemctl restart apache2
Trabalhando as permissões de arquivo
Alterando a propriedade e grupo da pasta /var/www/html/
para o usuário do apache:
sudo chown -R www-data:www-data /var/www/html/
Alterando as permissões de acesso da pasta.
Obs: Esse nível de acesso pode variar conforme a sua necessidade.
sudo chmod -R 750 /var/www/html/
Debugando problemas
Para acompanhar as requisições que estão chegando:
tail -f /var/log/apache2/access.log
Para acompanhar os erros:
tail -f /var/log/apache2/error.log