Configurer un site Web avec Apache 2

Prérequis :

  • Apache 2.4.10
  • Debian 8

Avant de commencer, il faut définir les informations suivantes :

  • dossier racine du site Web : (par ex. /home/www-master/perdu.com)

Il faut également savoir où se trouve :

  • les fichiers de configuration du site
  • les fichiers de configuration du site www
/etc/apache2/sites-available/perdu.com.conf
/etc/apache2/sites-available/www.perdu.com.conf

*. Créer un user

useradd -g www-data -m www-master

*. Se logguer avec ce user

sudo su - www-master

*. Création les dossiers des sites

mkdir -p perdu-podcast.com/www
mkdir -p perdu-podcast.com/logs

*. recupérer podcastgenerator

wget https://downloads.sourceforge.net/project/podcastgen/podcastgen/podcastgen-2.7/podcastgen-2.7.zip?r=https%3A%2F%2Fsourceforge.net%2Fprojects%2Fpodcastgen%2Ffiles%2Flatest%2Fdownload&ts=1519074206
mv podcastgen-2.7.zip?r=https%3A%2F%2Fsourceforge.net%2Fprojects%2Fpodcastgen%2Ffiles%2Flatest%2Fdownload podcastgen-2.7.zip

*. décompresser podcastgenerator

unzip podcastgen-2.7.zip -d perdu-podcast.com/www

mv perdu-podcast.com/www/PodcastGenerator-2.7/* perdu-podcast.com/www/.

rmdir burgertech.fr/www/PodcastGenerator-2.7/

Dans le fichier /etc/apache2/sites-available/100-com.perdu-podcast.www.conf

<VirtualHost *:80>
        ServerName www.perdu-podcast.com
        ServerAdmin contact@perdu-podcast.com
        
        ErrorLog /home/www-master/perdu-podcast.com/logs/http-error.log
        LogLevel warn
        CustomLog /home/www-master/perdu-podcast.com/logs/http-access.log combined

#       DocumentRoot /home/www-master/perdu-podcast.com/www/

        <Location />
                Require all granted
                Order Deny,Allow
                Allow from all
                Options FollowSymLinks MultiViews
                 #interdiciton de .htaccess
                AllowOverride None
        </Location>

        <If "%{HTTP_HOST} != 'wwww.perdu-podcast.com'">
                Redirect "/" "https://wwww.perdu-podcast.com/"
        </If>

        <If "%{SERVER_PROTOCOL} != 'HTTPS'">
                Redirect "/" "https://wwww.perdu-podcast.com/"
        </If>
</VirtualHost>

Le but de cette configuration est d'accepter une connexion sur le port http (80) pour rediriger les visiteurs vers le https (443).

Activer la configuration du site en utilisant le binaire a2ensite

sudo a2ensite 100-com.perdu-podcast.www.conf

Recharger la configuration dans Apache 2 :

sudo service apache2 reload

Le module UserDir est utilisé dans le configuration multi utilisateurs. Ne l'activez pas si vous en n'avez pas besoin.

Utilisation du binaire a2enmod pour activer le module UserDir :

sudo a2enmod userdir

Si vous avez activer par défaut le module UserDir en utilisant le binaire a2enmod :

sudo a2dismod userdir

Redémarrer Apache 2 pour prendre en compte vos modifications.

sudo service apache2 restart

Le module headers est utilisé dans le configuration SSL.

Utilisation du binaire a2enmod pour activer le module headers

sudo a2enmod headers

Redémarrer Apache 2 pour prendre en compte le nouveau module.

sudo service apache2 restart

Récupérer CERTBOT, l'utilitaire de génération et récupération des certificats :

sudo apt-get install python-certbot-apache -t jessie-backports

Exécution de l'utilitaire pour récupérer les certificats uniquement :

certbot certonly --manual --agree-tos --renew-by-default --preferred-challenges=dns -d www.perdu-podcast.com -d perdu-podcast.com

La méthode utilisée repose sur un enregistrement à ajouter dans le DNS :

_acme-challenge.perdu-podcast.com. 300 IN TXT "gfj9Xq...Rg85nM"

Ajouter dans le fichier de configuration /etc/apache2/sites-available/100-com.perdu-podcast.www.conf

<IfModule mod_ssl.c>
<VirtualHost *:443>
        ServerName perdu-podcast.com
        
        SSLCertificateFile /etc/letsencrypt/live/www.perdu-podcast.com/fullchain.pem
        SSLCertificateKeyFile /etc/letsencrypt/live/www.perdu-podcast.com/privkey.pem
        Include /etc/letsencrypt/options-ssl-apache.conf

        Redirect "/" "https://www.perdu-podcast.com/"
</VirtualHost>

<VirtualHost *:443>
        ServerName www.perdu-podcast.com
        ServerAdmin contact@perdu-podcast.com

        <If "%{HTTP_HOST} != 'www.perdu-podcast.com'">
                Redirect "/" "https://www.perdu-podcast.com/"
        </If>

        ErrorLog /home/www-master/perdu-podcast.com/logs/https-error.log
        LogLevel warn
        CustomLog /home/www-master/perdu-podcast.com/logs/https-access.log combined

        SSLCertificateFile /etc/letsencrypt/live/www.perdu-podcast.com/fullchain.pem
        SSLCertificateKeyFile /etc/letsencrypt/live/www.perdu-podcast.com/privkey.pem
        Include /etc/letsencrypt/options-ssl-apache.conf

        DocumentRoot /home/www-master/perdu-podcast.com/www/

        <Directory /home/www-master/perdu-podcast.com/www/>
                Require all granted
                Order Deny,Allow
                Allow from all
                Options FollowSymLinks MultiViews
                 #interdiciton de .htaccess
                AllowOverride None
        </Directory>

</VirtualHost>
</IfModule>

Les options dans /etc/letsencrypt/options-ssl-apache.conf sont les suivantes :

SSLEngine on

# intermediate configuration, tweak to your needs
SSLProtocol             all -SSLv2 -SSLv3

SSLCipherSuite          ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS

SSLHonorCipherOrder     on

SSLCompression          off
#SSLSessionTickets       off

# -- Securité supplémentaire

SSLOptions +StrictRequire

# HSTS (mod_headers is required) (15768000 seconds = 6 months)
Header always set Strict-Transport-Security "max-age=15768000"

Et on recharge la configuration de Apache 2 :

sudo service apache2 reload
  • informatique/configurer_un_site_web_apache_2.txt
  • Dernière modification: 2018/03/04 18:34
  • par Cedric ABONNEL