web-dev-qa-db-fra.com

Comment configurer Apache (sites disponibles vs httpd.conf)

J'ai essayé de suivre quelques didacticiels de base expliquant comment installer et exécuter Apache (sur Ubuntu, sur Amazon). J'ai surtout été vide, car tous les tutoriels m'ont dit de configurer httpd.conf (pour ajouter DocumentRoot, etc.).

Je suis maintenant tombé sur un didacticiel qui m'a dit d'ajouter des configurations de site au répertoire des sites disponibles (sous/etc/Apache), puis de créer un lien symbolique vers celui-ci à partir des sites activés. La configuration de cette manière semble fonctionner.

Mais maintenant je suis confus - comment suis-je censé configurer Apache? La plupart des tutoriels semblent toujours dire que je devrais utiliser httpd.conf. Lequel devrais-je utiliser? Quelle est la différence? Pourquoi tous les tutoriels sont-ils "faux" (s'ils le sont)?

27
Edan Maor

La méthode sites-available Est généralement considérée comme la "méthode Debian":

  • configuration "principale" dans /etc/Apache2/Apache2.conf
  • configuration "utilisateur" dans /etc/Apache2/httpd.conf
  • vhosts dans les fichiers /etc/Apache2/sites-available (un par fichier, généralement)
    • vous voudrez peut-être les numéroter, par exemple 00-domain.com, 01-otherdomain.com
  • ports (directives Listen) dans /etc/Apache2/ports.conf
  • mods dans /etc/Apache2/mods-available

Vous pouvez les manipuler avec des liens symboliques ou avec la série de commandes a2:

a2ensite/a2dissite <site_config_filename>
a2enmod/a2dismod <module_name>

Selon vos préférences personnelles, vous pouvez redémarrer Apache à l'aide de apachectl, /etc/init.d/Apache2 (start|stop|reload|restart) ou service Apache2 (start|stop|reload|restart)

Un exemple où vous utiliseriez httpd.conf Au lieu d'une entrée vhost serait pour une règle de redirection ou de réécriture globale, par exemple. Autres informations - en général, vous devez laisser Apache2.conf Seul et vous assurer de configurer un schéma de dénomination cohérent pour les hôtes dans le répertoire sites-available.

37
Sam Halicke

L'emplacement et l'organisation des fichiers de configuration sont configurables et peuvent changer entre les versions principales ou entre les distributions.

Le wiki Apache dispose d'un guide pratique pour les noms et emplacements des fichiers de configuration.

Étant donné que les fichiers de configuration peuvent contenir des directives include, des parties de la configuration peuvent être séparées en fichiers plus petits. Étant donné qu'un fichier de configuration Apache standard contient de nombreux commentaires et de nombreux éléments standard, il est logique de séparer les parties que vous êtes le plus susceptible de modifier.

Le nom du fichier de configuration principal peut être modifié au moment de la compilation et dans les versions récentes, il est passé de httpd.conf à Apache2.conf

Au fil des ans, l'organisation des fichiers de configuration inclus a également évolué.

Par exemple, j'ai installé Apache2 sur un système basé sur Ubuntu en utilisant apt-get install Apache2 - voici les fichiers inclus

/etc/Apache2$ ls
Apache2.conf  envvars     mods-available  ports.conf       sites-enabled
conf.d        httpd.conf  mods-enabled    sites-available

/etc/Apache2$ grep ^Include Apache2.conf
Include /etc/Apache2/mods-enabled/*.load
Include /etc/Apache2/mods-enabled/*.conf
Include /etc/Apache2/httpd.conf
Include /etc/Apache2/ports.conf
Include /etc/Apache2/conf.d/
Include /etc/Apache2/sites-enabled/ 

/etc/Apache2$ ls -l sites-enabled
total 0
lrwxrwxrwx 1 root root 26 Dec 26 12:30 000-default -> ../sites-available/default

Ainsi, les quelques paramètres de configuration qui vous intéresseront probablement le plus sont désormais dans /etc/Apache2/sites-available/default.

Je peux voir que cela est cohérent avec Ubuntu documentation pour Apache que je vous recommande de lire en premier. Si vous avez d'autres documentations pour des versions plus anciennes d'Apache (ou d'autres distributions), vous pouvez adapter ces informations pour qu'elles soient organisées de manière organisée dans Ubuntu.

9
RedGrittyBrick