Table des matières

Remplacer apache par nginx sans coupure sur debian

Publié le 28 janvier 2020 par Le Libre Au Quotidien (site injoignable)

Pré-requis

  1. Une machine sous debian
  2. Avoir suffisamment d’espace disque disponible
  3. Avoir les droits root sur votre machine

Première étape : Installation de nginx et de php-fpm

  1. Installer nginx :

    USER@MACHINE:~$ sudo apt install nginx

    A la fin de l’installation de nginx, un message d’erreur signale qu'il ne peut pas démarrer ; c’est normal,nous verrons comment résoudre ce problème plus tard.

  2. Installer l’implémentation FastCGI de PHP compatible nginx :

    USER@MACHINE:~$ sudo apt install {,php-fpm}

Autres étapes

  1. Configuration provisoire de nginx : éditer avec les droits d'administration le fichier /etc/nginx/sites-available/default pour le modifier comme ceci :
    1. Remplacer le port d’écoute 80 par le port 800 (en début de fichier)
    2. Modfiez le paramètre root pour définir le même rootdir que celui d’apache
    3. Ajoutez index.php à la directive index
    4. Ajoutez juste après index
      /etc/nginx/sites-available/default
      location ~ \.php$ {
        try_files $uri =404;
        fastcgi_pass unix:/run/php/php7.3-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
      }

    5. Démarrer le service nginx :

      USER@MACHINE:~$ sudo systemctl start nginx

  2. Création d’un vhost : créer un vhost pour votre site, par exemple :

    server {
      listen 80;
      server_name domain.tld;
      location '/.well-known/acme-challenge' {
        default_type "text/plain";
        root /tmp/letsencrypt-auto/;
      }
      location / {
        return 301 https://domain.tld$request_uri;
      }
    }

  3. Basculement apache – nginx quasiment sans coupure :
    1. Remettre le port d’écoute 800 → 80
    2. Stopper le service apache :

      USER@MACHINE:~$ sudo systemctl stop apache2

    3. Redémarrer le service nginx (et appliquer la modification de port) :

      USER@MACHINE:~$ sudo systemctl restart nginx

    4. supprimer apache de votre système (les vhosts seront conservés dans /etc/apache2) :

      USER@MACHINE:~$ sudo apt purge apache2

Conclusion

Problèmes connus

Voir aussi


Basé sur « Article » par Auteur.