Nous savons tous comment activer un site Web en utilisant Apache sur Linux. Je suis à peu près sûr que nous sommes tous d'accord pour utiliser la commande a2ensite.
Malheureusement, aucune commande équivalente par défaut n’est fournie avec Nginx, mais il est arrivé que j’ai installé un paquet sur Ubuntu qui m’a permis d’activer / désactiver des sites et de les lister.
Le problème est que je ne me souviens pas du nom de ce paquet.
Quelqu'un sait de quoi je parle?
S'il vous plaît dites-moi le nom de ce paquet et le nom de la commande.
nginx
command-line-interface
website
command
Ghassen Telmoudi
la source
la source
Réponses:
Si vous avez installé le
nginx
paquet à partir des référentiels Ubuntu, vous aurez deux répertoires./etc/nginx/sites-enabled
et/etc/nginx/sites-available
.Dans la configuration principale de nginx
/etc/nginx/nginx.conf
, vous avez la ligne suivante:En résumé, pour répertorier tous les hôtes virtuels disponibles, vous pouvez exécuter la commande suivante:
Pour activer l'un d'entre eux, exécutez la commande suivante:
Les scripts fournis avec Apache sont fondamentalement de simples wrappers de shell qui font quelque chose de similaire à ce qui est décrit ci-dessus.
Après avoir lié les fichiers, n'oubliez pas de lancer
sudo service nginx reload
/service nginx reload
la source
Il suffit de créer ce script
/usr/bin/nginx_modsite
et de le rendre exécutable.Comment ça fonctionne:
Pour lister tous les sites
Pour activer le site "test_website"
Pour désactiver le site "test_website"
la source
Faites-vous allusion à
nginx_ensite
etnginx_dissite
?la source
NGINX
Si vous utilisez l' un des packages en amont officiels de nginx à partir de http://nginx.org/packages/ , la meilleure méthode consiste à naviguer dans le
/etc/nginx/conf.d
répertoire et à renommer le fichier concerné, qui porte un.conf
suffixe différent. désactiver le site:sudo mv -i /etc/nginx/conf.d/default.conf{,.off}
Ou l'inverse pour l'activer:
sudo mv -i /etc/nginx/conf.d/example.com.conf{.disabled,}
Cela est dû au
/etc/nginx/nginx.conf
fait que lainclude
directive par défaut contient les instructions suivantes :Debian / Ubuntu
Cependant, si vous utilisez un dérivé de Debian / Ubuntu
conf.d
, vous pouvez également avoir les répertoires non standard maléfiquessites-available
etsites-enabled
certains répertoires, dont certains fichiers peuvent être inclus sans le savoir, sans tenir compte de leur extension:En tant que tel, dans Debian / Ubuntu, vous devrez d’abord déterminer l’emplacement de la configuration du site.
Vous pouvez utiliser la commande suivante pour obtenir une liste de tous les sites disponibles en exécutant
find(1)
pour rechercher tous les fichiers normaux correspondant au masque donné:find /etc/nginx -maxdepth 2 -type f \( -path "*/conf.d/*.conf" -or -path "*/sites-*/*" \)
Vous pouvez utiliser la commande suivante pour obtenir une liste de tous les sites activés :
find /etc/nginx -maxdepth 2 \( -path "*/conf.d/*.conf" -or -path "*/sites-enabled/*" \)
Ensuite, pour désactiver / activer les sites sur Debian / Ubuntu:
Pour désactiver un site: si la configuration est active
conf.d
, renommez simplement le fichier pour qu’il n’ait plus de.conf
suffixe; ou si danssites-enabled
, déplacez-lesites-enabled
.Pour activer un site, le meilleur moyen consiste à le déplacer
/etc/nginx/conf.d
et à le renommer en.conf
suffixe.PS Pourquoi je pense que Debian
include /etc/nginx/sites-enabled/*;
est diabolique? Essayez d’éditer quelques fichiers dans ce répertoire et deemacs
créer les fichiers de sauvegarde (avec le~
suffixe), puis redemandez.la source
conf.d
annuaire est une configuration à l'échelle du serveur comme celle des modules, plugins, gestionnaires fastcgi, etc. et explicitement de ne pas stocker l'hôte. / vhost configurations in et 2) On ne devrait éditer aucun fichier danssites-enabled
serverfault.com/a/825297/86189conf.d
, car il est inclus dans le même contexte que le contexte àsites-enabled
unhttp
niveau, les directives module et plugin peuvent donc ne pas s'appliquer. De même, votre hypothèse qu'il ne faut pas éditer de fichierssites-enabled
est simplement un vœu pieux - il n'y a pas d'instructions de ce type dans la distribution, ni dans le répertoire. ont toutes sortes de problèmes, par exemple, stackoverflow.com/q/45852224/1122270 .conf.d
tel quel, probablement, le mainteneur Debian de Nginx (ou peut-être est-il conservé pour la compatibilité avec l'amont). Ne pas éditer de fichierssites-enabled
, ce n’est pas un voeu pieux, mais le flux de travail supposé sous Apache qu’ils ont essayé d’imiter sur Nginx. Dans apache , il est tout à fait évident en raison de l' existance dea2ensite
eta2dissite
scripts. Malheureusement, rien de la sorte n'est fourni pour Nginx, ce qui montre à quel point la qualité de maintenance de ce paquet est basse sur Debian. Les deux manquent de documentation, c'est vrai.ls -al sites-enabled
dans les deux Apache ou Nginx montre que les fichiers existants dans le répertoire sont des liens symboliques de-available
, idem pour les modules sous Apache, ainsi fourniesa2enmod
/a2dismod
scirpts.conf.d
tel quel .Une autre méthode consiste simplement à renommer le fichier de configuration du site en quelque chose qui se termine sans .conf
Par exemple
sudo mv mysite.conf mysite.conf.disabled
Rechargez ensuite nginx, et vhost reviendra à la valeur par défaut.
la source
include /etc/nginx/sites-enabled/*;
il ne comprend que les dir conf*.conf
sites-available
etsites-enabled
comme ils ont du mérite et de l'utilisation. Quelqu'un devrait probablement simplement créer un rapport de bogue sur la véritable ligne incriminée dans nginx conf/etc/nginx/sites-enabled/*.conf;
et ils le feront probablement, car c'est probablement un oubli. Mais si vous respectez le flux de travail Debian, vous allezsites-available
quand même éditer des fichiers et créer des liens symboliques avec ceux pour lesquels vous souhaitez activersites-enabled
.