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
Les étapes seraient (hypothèses: - Nginx installé):
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
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
Définissez les autorisations pour que les pages puissent être servies correctement:
Sudo chmod -R 755 /var/www
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
Créer des blocs de serveur:
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
Editez le fichier copié:
Sudo nano /etc/nginx/sites-available/mytest1.com
root /var/www/html;
par root /var/www/mytest1.com/public_html;
server_name _;
par server_name mytest1.com www.mytest1.com;
index index.html index.htm index.nginx-debian.html;
par ce index index.php index.html index.htm index.nginx-debian.html;
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
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;
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.
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/
Supprimez le lien symbolique pour le blocage de serveur par défaut:
Sudo rm /etc/nginx/sites-enabled/default
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/