Gerer plusieurs site web (Multi site web apache ou nginx)

Pour avoir plusieurs sites web sur un VPS (Virtual Private Server), il est nécessaire de configurer un serveur web capable d’héberger plusieurs sites. Voici les étapes générales pour accomplir cela :

### Étapes Préliminaires

1. **Choix du serveur web** : Apache ou Nginx sont les deux choix les plus courants pour les serveurs web. Choisissez celui qui convient le mieux à vos besoins.
2. **Accès SSH** : Assurez-vous d'avoir un accès SSH à votre VPS.
3. **DNS** : Configurez les enregistrements DNS pour les domaines que vous souhaitez héberger sur le VPS. Chaque domaine doit pointer vers l'adresse IP de votre VPS.

### Installation du Serveur Web

#### Apache

1. **Installation d’Apache** :
   ```bash
   sudo apt update
   sudo apt install apache2
   ```

2. **Configurer des hôtes virtuels (Virtual Hosts)** :
   Créez un fichier de configuration pour chaque site web dans `/etc/apache2/sites-available/`.

   Exemple de fichier de configuration pour un site (`/etc/apache2/sites-available/example1.com.conf`) :
   ```apache
   <VirtualHost *:80>
       ServerName example1.com
       ServerAlias www.example1.com
       DocumentRoot /var/www/example1.com

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

       ErrorLog ${APACHE_LOG_DIR}/example1.com-error.log
       CustomLog ${APACHE_LOG_DIR}/example1.com-access.log combined
   </VirtualHost>
   ```

   Répétez cette opération pour chaque site web.

3. **Activer les hôtes virtuels** :
   ```bash
   sudo a2ensite example1.com.conf
   sudo a2ensite example2.com.conf
   ```

4. **Redémarrer Apache** :
   ```bash
   sudo systemctl restart apache2
   ```

#### Nginx

1. **Installation de Nginx** :
   ```bash
   sudo apt update
   sudo apt install nginx
   ```

2. **Configurer des hôtes virtuels (Server Blocks)** :
   Créez un fichier de configuration pour chaque site web dans `/etc/nginx/sites-available/`.

   Exemple de fichier de configuration pour un site (`/etc/nginx/sites-available/example1.com`) :
   ```nginx
   server {
       listen 80;
       server_name example1.com www.example1.com;

       root /var/www/example1.com;
       index index.html index.htm;

       location / {
           try_files $uri $uri/ =404;
       }

       error_log /var/log/nginx/example1.com-error.log;
       access_log /var/log/nginx/example1.com-access.log;
   }
   ```

   Répétez cette opération pour chaque site web.

3. **Activer les server blocks** :
   ```bash
   sudo ln -s /etc/nginx/sites-available/example1.com /etc/nginx/sites-enabled/
   sudo ln -s /etc/nginx/sites-available/example2.com /etc/nginx/sites-enabled/
   ```

4. **Redémarrer Nginx** :
   ```bash
   sudo systemctl restart nginx
   ```

### Finalisation

1. **Permissions des fichiers** : Assurez-vous que les répertoires et fichiers de vos sites web ont les permissions correctes :
   ```bash
   sudo chown -R www-data:www-data /var/www/example1.com
   sudo chmod -R 755 /var/www/example1.com
   ```

2. **Sécurisation (HTTPS)** : Il est recommandé d’obtenir des certificats SSL pour vos sites web. Vous pouvez utiliser Let's Encrypt pour obtenir des certificats gratuits.

   Installation de Certbot pour Apache :
   ```bash
   sudo apt install certbot python3-certbot-apache
   sudo certbot --apache
   ```

   Installation de Certbot pour Nginx :
   ```bash
   sudo apt install certbot python3-certbot-nginx
   sudo certbot --nginx
   ```

### Conclusion

En suivant ces étapes, vous pourrez héberger plusieurs sites web sur votre VPS en utilisant Apache ou Nginx. Assurez-vous de toujours vérifier les configurations spécifiques à vos besoins et de maintenir votre serveur à jour pour des raisons de sécurité.