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.d
doivent être déplacés vers /etc/apache2/conf-available
.
Ils travaillent maintenant de la même manière sites
et mods
fonctionnent. Il suffit de mettre vos fichiers de configuration dans le conf-available
dossier et d'activer celui que vous voulez aveca2enconf <config-file-name>
.
Exemple:
J'ai eu un fichier conf.d/httpd.conf
qui avait la directive ServerName.
Pour que cela fonctionne, je devais le déplacer dans le conf-available
ré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-available
n’avaient aucune extension. Par exemple /etc/apache2/sites-available/default
. Maintenant, une .conf
extension 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.conf
d’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
/ Deny
en 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' MultiViews
option, 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.conf
fichier, niconf.d
répertoire. Mais il y a unapache2.conf
fichier. J'ai essayé de le déplacer dans leconf-available
ré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?httpd.conf
n'était qu'un exemple. Il est possible que vous n'ayez aucun fichier de configuration dans leconf.d
répertoire. Dans ce cas, ignorez simplement cette étape. En ce qui concerneapache2.conf
, il ne devrait pas être déplacé dans leconf-available
répertoire. Il s’agit du fichier de configuration principal d’apache. Son chemin doit être /etc/apache2/apache2.conf et ne doit pas être modifié.config.d
ousites available
dossier. voir tous les fichiers de configuration ici: imgur.com/WczXp3vJe suppose que les sites Web fonctionnent sur votre serveur Ubuntu.
Vérifiez votre httpd.conf pour vous assurer que votre paramètre DocumentRoot pointe au bon endroit.
Vérifiez que les autorisations de fichier sur le dossier référencé par DocumentRoot peuvent être lues par l'utilisateur sous lequel le serveur Web est exécuté.
Vérifiez que vous avez un index.html / index.htm, etc. approprié et que le serveur Web n'essaie pas de créer une liste de répertoires.
la source
J'ai rencontré des problèmes similaires.
Je ne pouvais pas faire fonctionner Apache 2.4 à moins d’utiliser «Allow from All» (Permis de tous), c’était ennuyeux car je voulais fournir une rupture nette entre les versions <2.4. Après de nombreux essais et erreurs et de nombreuses recherches, j'ai repéré une référence à access_compat et réalisé que celle-ci était là uniquement pour des raisons de compatibilité. Bien que la documentation d'Apache indique que les deux peuvent être utilisés, elle vous recommande de ne pas le faire.
J'ai supprimé ce module du fichier de chargement / etc / sysconfig / apache2, ce qui a immédiatement résolu mon problème.
Cordialement Liam
la source
Je sers des fichiers à partir d'un répertoire non standard. Pour que la mise à niveau fonctionne correctement, je devais modifier /etc/apache2/apache2.conf et ajouter: Options Index FollowSymLinks AllowOverride Aucun Require à tous
Après cela et les modifications recommandées ci-dessus, l'erreur 403 s'est envolée.
la source