web-dev-qa-db-fra.com

Exécution de plusieurs sites Nginx sur Ubuntu 18.04

Je suis débutant avec Nginx (avec PHP 7.2 également) et je ne sais pas comment accéder à plusieurs sites à l'aide de dossiers séparés.
Donc, comme dossier par défaut, je règle /home/user/php;.
Là, j'ai quelques dossiers nommés: site1, site2, site3 etc.
À l'aide d'un terminal, je lance le serveur sur mon dossier par défaut avec la commande php -S localhost:8000.
Et voici le problème: lorsque je tape dans le navigateur localhost:8000/site1/, il affiche le contenu du fichier index.php, mais gâche les autres fichiers se trouvant à cet emplacement. Par exemple des images. J'ai un dossier avec des fichiers png situés dans /php/site1/images/. Mais ils n'apparaissent pas sur la page du navigateur, car, selon le journal du terminal, il recherche ces fichiers png dans /php/images/ (qui n'existe pas) et non dans /php/site1/images/. Tout est recherché dans le dossier du serveur par défaut, pas dans les sous-dossiers avec les sites. Comment changer le fichier de configuration ou quoi faire pour lui faire lire des dossiers séparés?

Voici ma configuration Nginx (/etc/nginx/sites/available/default): https://Pastebin.com/pZHgPkCZ

1
Victoria

Les étapes seraient (hypothèses: - Nginx installé):

  1. Créez des blocs de serveur pour vos deux sites ou tous dans le dossier /var/www/:

    Sudo mkdir -p /var/www/mytest1.com/public_html
    Sudo mkdir -p /var/www/mytest2.com/public_html
    
  2. Modifiez les autorisations pour autoriser les utilisateurs réguliers à accéder en lecture et en écriture:

    Sudo chown -R $(whoami):$(whoami) /var/www/mytest1.com/public_html
    Sudo chown -R $(whoami):$(whoami) /var/www/mytest2.com/public_html
    
  3. Définissez les autorisations pour que les pages puissent être servies correctement:

    Sudo chmod -R 755 /var/www
    
  4. Créez deux pages pour les sites de test:

    Sudo echo "Welcome to mytest1.com!" > /var/www/mytest1.com/public_html/index.html
    Sudo echo "Welcome to mytest2.com!" > /var/www/mytest2.com/public_html/index.html
    
  5. Créer des blocs de serveur:

    1. Copiez le fichier par défaut de la page d’accueil nginx par défaut:

      Sudo cp /etc/nginx/sites-available/default /etc/nginx/sites-available/mytest1.com
      
    2. Editez le fichier copié:

      Sudo nano /etc/nginx/sites-available/mytest1.com
      
      • Faites défiler la liste et remplacez ce root /var/www/html; par root /var/www/mytest1.com/public_html;
      • Remplacez ce server_name _; par server_name mytest1.com www.mytest1.com;
      • Remplacez ce index index.html index.htm index.nginx-debian.html; par ce index index.php index.html index.htm index.nginx-debian.html;
  6. Définir la valeur pour fastcgi_pass socket chemin est correct:

    • Exécuter: ls /var/run/php/

      • Résultats:

        php7.2-fpm.pid php7.2-fpm.sock
        
      • Ajoutez l'emplacement php7.2-fpm.socket dans le fichier de blocage du serveur si la note est dirigée dans la bonne direction et vérifiez que la partie emplacement du fichier ressemble à celle-ci. Supprimez # pour obtenir ce résultat dans certaines zones:

        ...
            location ~ \.php$ {
                                   include snippets/fastcgi-php.conf;
                  #
                  #                 # With php-fpm (or other unix sockets):
                                    fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
                  #                 # With php-cgi (or other tcp sockets):
                  #                 fastcgi_pass 127.0.0.1:9000;
                   }
         ...
        
    • Fermez l'éditeur et testez la configuration de nginx avec Sudo nginx -t. Voir les erreurs répète les étapes à l'envers. Pour une syntaxe valide, vous verrez:

       nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
       nginx: configuration file /etc/nginx/nginx.conf test is successful
      
  7. Répétez step 5 and 6 pour l'autre site en utilisant mytest2.com où nous avions mytest1.com pour le site un. De plus, pour le deuxième site, procédez comme suit lors de l'édition du fichier /etc/nginx/sites-available/mytest2.com changez ceci:

    listen 80 default_server;
    listen [::]:80 default_server;
    

    pour ça:

    listen 80;
    listen [::]:80;
    
    • Raison:

      Un seul bloc de serveur peut avoir la spécification default_server. Cela indique à Nginx à quel bloc revenir si le nom de serveur demandé ne correspond à aucun des blocs de serveur disponibles.

  8. Créer des liens symboliques:

    Sudo ln -s /etc/nginx/sites-available/mytest1.com /etc/nginx/sites-enabled/
    Sudo ln -s /etc/nginx/sites-available/mytest2.com /etc/nginx/sites-enabled/
    
  9. Supprimez le lien symbolique pour le blocage de serveur par défaut:

    Sudo rm /etc/nginx/sites-enabled/default
    
  10. Redémarrez Nginx:

    Sudo service nginx restart
    

11: Facultatif: Fichier d'édition des hôtes:

 127.0.0.1 mytest1.com
 127.0.0.1 mytest2.com

Maintenant, allez dans votre navigateur et tapez localhost ou mysite1.com si vous avez saisi des entrées dans le fichier /etc/hosts. Notez également que nginx écoute sur le port 80 et non 8080. Pas le serveur php .

Ressource:

https://devanswers.co/installing-nginx-ubuntu-18-04-multiple-domains/

https://devanswers.co/installing-php-nginx-ubuntu-18-04/

2
George Udosen