Optimiza Apache con mod_expires

,

Comandos:

Activar modulo:

a2enmod expires

Editar fichero de configuración:

vi /etc/apache2/mods-available/expires.conf

Añadir:

<IfModule mod_expires.c>
ExpiresActive on
ExpiresByType image/jpg "access plus 30 days"
ExpiresByType image/png "access plus 30 days"
ExpiresByType image/gif "access plus 30 days"
ExpiresByType image/jpeg "access plus 30 days"
ExpiresByType text/css "access plus 1 days"
ExpiresByType image/svg+xml "access plus 30 days"
ExpiresByType image/x-icon "access plus 60 days"
ExpiresByType application/pdf "access plus 2 days"
ExpiresByType text/javascript "access plus 12 hours"
ExpiresByType application/x-javascript "access plus 12 hours"
ExpiresByType application/javascript "access plus 12 hours"
</IfModule>

Reiniciar:

/etc/init.d/apache2 restart

Certificado SSL en Raspberry Pi

,

Para crear un certificado SSL empezamos por crear un directorio donde almacenaremos los certificados:

sudo mkdir /etc/apache2/certificados

Creamos el certificado:

sudo openssl req -x509 -nodes -days 1095 -newkey rsa:2048 -out /etc/apache2/certificados/server.crt -keyout /etc/apache2/certificados/server.key

SSL

Activamos el modulo:

sudo a2enmod ssl

Creamos un enlace simbolico:

sudo ln -s /etc/apache2/sites-available/default-ssl.conf /etc/apache2/sites-enabled/000-default-ssl.conf

Editamos el fichero:

sudo nano /etc/apache2/sites-enabled/000-default-ssl.conf

Añadimos lo siguiente encima de </VirtualHost>:

SSLCertificateFile /etc/apache2/certificados/server.crt
SSLCertificateKeyFile /etc/apache2/certificados/server.key

Ahora puedes crear un virtualhost en apache y seguidamente agregar la zona SSL:

<IfModule mod_ssl.c>
<VirtualHost *:443>
ServerName 192.168.1.201
DocumentRoot /var/www/html/
<Directory />
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order Allow,Deny
Allow from all
</Directory>
ErrorLog /var/log/apache2/ip/error.log
LogLevel warn
CustomLog /var/log/apache2/ip/access.log combined
SSLEngine on

SSLCertificateFile /etc/apache2/certificados/server.crt
SSLCertificateKeyFile /etc/apache2/certificados/server.key

<IfModule mod_headers.c>
Header always set Strict-Transport-Security «max-age=31536000; includeSubDomains»
</IfModule>

</VirtualHost>
</IfModule>

Reiniciamos Apache:

sudo service apache2 restart

Certificado Let´s Encrypt en Apache

Para comenzar vamos a necesitar:

sudo apt-get install apache2 openssl

Instalamos Certbot:

sudo apt-get install python-certbot-apache

Paramos Apache:

sudo /etc/init.d/apache2 stop

Instalamos certbot-auto:

wget https://dl.eff.org/certbot-auto

Le damos permisos:

chmod a+x ./certbot-auto

Lo ejecutamos:

./certbot-auto certonly –webroot

Accedemos al directorio Apache donde esta tu sitio:

cd /etc/apache2/sites-available/

Ahora editamos el fichero del dominio:

sudo nano /etc/apache2/sites-available/tusitio.conf

Agregamos debajo del VirtualHost ya existente:

<IfModule mod_ssl.c>
<VirtualHost *:443>
ServerName tusitio.com
DocumentRoot /var/www/html/tusitio
<Directory />
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order Allow,Deny
Allow from all
</Directory>
ErrorLog /var/log/apache2/tusitio/error.log
LogLevel warn
CustomLog /var/log/apache2/tusitio/access.log combined
SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/tusitio.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/tusitio.com/privkey.pem

<IfModule mod_headers.c>
Header always set Strict-Transport-Security «max-age=31536000; includeSubDomains»
</IfModule>

</VirtualHost>
</IfModule>

Guardamos el fichero y inciamos apache:

sudo /etc/init.d/apache2 start

Vamos activar la renovación automatica:

sudo ./certbot-auto renew

Se lo decimos a Cron:

sudo crontab -e

Agregamos la siguiente linea:

30 1 * * 1 /usr/bin/certbot renew >> /var/log/le-renew.log

Crear un VirtualHost en Apache

Queremos alojar un sitio web en nuestro servidor Apache, para ello accedemos al directorio:

cd /etc/apache2/sites-available/

En el creamos un fichero:

sudo nano rootz.conf

Insertamos lo siguiente modificandolo a la necesidad de cada uno:

<VirtualHost *:80>

ServerName rootz.ddns.net
ServerAlias www.rootz.ddns.net
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html/blog

<Directory />
Options Includes FollowSymLinks
AllowOverride All
Order Allow,Deny
Allow from all
</Directory>

ErrorLog /var/log/apache2/rootz/error.log
LogLevel warn
CustomLog /var/log/apache2/rootz/access.log combined

</VirtualHost>

Creamos el directorio para Logs:

sudo mkdir /var/log/apache2/rootz

Agregamos el nuevo fichero a Apache:

sudo a2ensite rootz.conf

Reiniciamos Apache:

sudo systemctl reload apache2

Not Found en Apache

Si ves este aviso en el navegador y tienes instalado el servidor Apache …

not found

Es que no tienes el modulo Rewrite instalado en Apache. Para ello ejecutamos lo siguiente:

sudo a2enmod rewrite

Seguidamente editamos el archivo de configuración de Apache:

sudo nano /etc/apache2/apache.conf

Buscamos las siguientes lineas:

<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>

Y modificamos la directiva:

AllowOverride None

por:

AllowOverride All

Finalmente reiniciamos Apache con:

sudo /etc/init.d/apache2 restart