En réalité, la syntaxe des fichiers de configuration dans apache2.4 a été modifiée.
Source: Cela m'est aussi arrivé après la mise à niveau vers 13.10.
fichiers conf.d
Tous les fichiers qui étaient dans /etc/apache2/conf.ddoivent être déplacés vers /etc/apache2/conf-available.
Ils travaillent maintenant de la même manière siteset modsfonctionnent. Il suffit de mettre vos fichiers de configuration dans le conf-availabledossier et d'activer celui que vous voulez aveca2enconf <config-file-name> .
Exemple:
J'ai eu un fichier conf.d/httpd.confqui avait la directive ServerName.
Pour que cela fonctionne, je devais le déplacer dans le conf-availablerépertoire et l'activer manuellement.
sudo mv /etc/apache2/conf.d/httpd.conf /etc/apache2/conf-available/httpd.conf
sudo a2enconf httpd
fichiers de sites
Auparavant, les fichiers /etc/apache2/sites-availablen’avaient aucune extension. Par exemple /etc/apache2/sites-available/default. Maintenant, une .confextension est nécessaire.
Exemple:
Si vous aviez /etc/apache2/sites-available/some-site, dans 13.04 vous pouvez simplement l'activer en utilisant sudo a2ensite some-site. Maintenant, il va vous donner une erreur en disant
ERREUR: Certains sites n'existent pas!
Pour résoudre ce problème, ajoutez a .confà tous vos fichiers de configuration dans sites-available. Vous pouvez faire la même chose dans sites-enabled, ou vous pouvez supprimer tous les fichiers et les réactiver chacun manuellement.
Je recommande de les faire manuellement car vous devrez probablement réparer chaque VHost (étape suivante).
sudo find /etc/apache2/sites-available/ ! -iname '*.conf' -type f -exec mv '{}' '{}'.conf \;
si vous avez décidé de les faire manuellement:
sudo rm /etc/apache2/sites-enabled/*
sudo a2ensite your-site-name
Directives de l'hôte virtuel:
autoriser / refuser vs exiger
Si vous aviez:
<Directory /path/to/your/site/>
order allow,deny
allow from all
</Directory>
Il devrait devenir:
<Directory /path/to/your/site/>
Require all granted
</Directory>
Pour plus d'informations, consultez les commentaires de DaveRandom sur une réponse à Stack Overflow.
Autrement dit, si vous avez mis à niveau vers apache2.4 et que vous conservez l’ancienne version httpd.confd’apache2.2, autorisez la directive devrait continuer à fonctionner correctement. Si vous avez mis à jour votre httpd.conf(ce que je suggérerais), vous obtiendrez 403 erreurs jusqu'à ce que vous changiez les directives Order/ Allow/ Denyen leur équivalent.Require .
Options du répertoire
Si vous aviez des options Directory, notez que tous doivent être préfixé avec un +ou -ou aucun d'entre eux du tout. Un mélange des deux n'est pas autorisé:
Exemple:
Ceci est autorisé:
<Directory /path/to/your/site/>
Options +Indexes +FollowSymLinks -MultiViews
</Directory>
Donc, ceci est (notez que ces exemples ne font pas tous les deux la même chose, le précédent désactive l' MultiViewsoption, pas le suivant):
<Directory /path/to/your/site/>
Options Indexes FollowSymLinks MultiViews
</Directory>
Ce n'est plus permis:
<Directory /path/to/your/site/>
Options Indexes FollowSymLinks -MultiViews
</Directory>
La dernière option de configuration génèrera une erreur de syntaxe en disant:
Toutes les options doivent commencer par + ou -, ou aucune option ne le peut.
Redémarrer Apache
Une fois que tout est terminé, vous devez redémarrer votre serveur Apache pour que les modifications prennent effet:
sudo apache2ctl restart
Vous pouvez trouver un guide de mise à niveau détaillé de 2.2 à 2.4 sur la documentation officielle.
httpd.conffichier, niconf.drépertoire. Mais il y a unapache2.conffichier. J'ai essayé de le déplacer dans leconf-availablerépertoire et j'ai obtenu le message d' erreur suivant lorsque j'ai redémarré apache2: apache2: impossible d'ouvrir le fichier de configuration /etc/apache2/apache2.conf: Aucun fichier ou répertoire de ce type - Quelle peut en être la raison?