web-dev-qa-db-fra.com

Comment configurer Apache2 avec des liens symboliques dans / var / www /?

Je souhaite configurer un serveur Web local sur mon Ubuntu (14.04). J'ai donc installé tous les logiciels pour obtenir un serveur LAMP.

Le problème est que je fais quelque chose de mal en créant mes hôtes virtuels. Je voulais créer différents sous-domaines sur mon hôte local. Ainsi, par exemple, site1.localhost et site2.localhost.

Dans mon répertoire /var/www/, j'ai créé un lien symbolique "site1" qui va à /home/user/Workspaces/site1.

Dans mon fichier error.log Apache, j'ai eu l'erreur suivante.

[core:error] [pid 12679] [client 127.0.0.1:59006] AH00037: Symbolic link not allowed or link target not accessible: /var/www/site1

Dans ma configuration Apache, j'ai:

<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>

Donc, je pense qu'il y a quelque chose qui ne va pas avec les autorisations des dossiers. J'ai cherché sur Google et j'ai trouvé quelques personnes avec le même problème, mais toutes les réponses fournies n'ont pas fonctionné. J'ai ajouté mon propre nom d'utilisateur au groupe www-data et des choses comme ça.

Donc, ls -la /var/www renvoie:

total 12
drwxrwsr-x  3 user www-data 4096 okt 13 19:08 .
drwxr-xr-x 14 root root     4096 okt  1 22:50 ..
drwxr-xr-x  2 root www-data 4096 okt  1 22:50 html
lrwxrwxrwx  1 root www-data   29 okt 13 19:08 site1 -> /home/user/Workspaces/site1/

et ls -la /home/juul/Workspaces/site1 renvoie:

total 24
drwxrwxr-x 4 user www-data 4096 okt 13 18:21 .
drwxrwx--- 3 user user     4096 okt 13 17:31 ..
-rw-rw-r-- 1 user user        0 okt 13 18:21 index.html
drwxrwxr-x 4 user www-data 4096 okt 13 16:12 .metadata
drwxrwxr-x 5 user www-data 4096 okt 13 16:53 Project

J'espère que quelqu'un pourra m'aider avec ça :-)

14
user300279

Ces autorisations empêchent Apache de vous accéder.

drwxrwx--- 3 user user     4096 okt 13 17:31 ..

Vous devez donner des autorisations d'exécution pour les autres:

chmod o+x /home/juul/Workspaces/

(et peut-être aussi sur /home/juul/).

5
muru

J'ai une installation standard d'Apache sur 14.04. Il n'y a pas de fichiers ou de répertoires spécifiant "www-data". Avez-vous changé tout cela vous-même? Il existe de nombreuses informations obsolètes ou simplement incorrectes sur la configuration des serveurs Web. Soyez donc prudent avec qui vous suivez et annulez ce qui ne fonctionne pas.

Cela dit, "site1" doit se trouver dans le répertoire html et appartenir à vous. Il n'est pas nécessaire que ce soit un lien symbolique. vous pouvez spécifier un répertoire différent dans le fichier de configuration. Quelque chose comme ça:

# Add this to the end of the existing 000-default.conf file (after "</VirtualHost>")
<VirtualHost *:80>
    <Directory  /home/user/Workspaces/site1>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride All
        Order allow,deny
        allow from all
    </Directory>
    DocumentRoot /home/user/Workspaces/site1
    ServerName site1
</VirtualHost>
3
Marty Fried

Solution pour: Lien symbolique non autorisé ou cible de lien non accessible: /var/www/html/mySymbolicLink.

C'est clairement un problème avec les autorisations. Le problème est que le code HTML situé dans votre répertoire de base appartient à votre utilisateur et que le serveur Apache est exécuté par un autre utilisateur. Il ne peut donc pas accéder à votre répertoire de base.

La solution serait alors d'ajouter l'utilisateur exécutant Apache à votre groupe, normalement identique à votre nom d'utilisateur. Donc, dans ma boîte CentOS, je l’ai fait comme:

Sudo usermod -a -G dev Apache

Donc, cela ajoute l'utilisateur Apache au groupe dev. Maintenant, je dois donner des autorisations d'exécution.

Dans /home:

chmod g+x dev -R

Cela accordera une autorisation d'exécution à mon dossier uniquement pour les membres du groupe. Et c'est tout. Vous devrez modifier l'utilisateur Apache pour tout ce qui exécute votre serveur Web. Je crois que pour Ubuntu, l'utilisateur est www-data.

0
Roberto Aguilar