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

14

Je veux 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 avec la création de 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 /var/www/annuaire j'ai créé un lien symbolique "site1" vers /home/user/Workspaces/site1.

Dans mon fichier Apache error.log, 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>

Je pense donc qu'il y a un problème avec les autorisations des dossiers. J'ai recherché 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.

ls -la /var/wwwRetourne donc :

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/site1retourne:

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 :-)

user300279
la source

Réponses:

5

Ces autorisations empêchent apached'accéder à vous

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 /home/juul/aussi).

muru
la source
selon la réponse @muru, assurez-vous que tous les répertoires contenant ont le jeu d'autorisations "x". Si on n'en a pas alors ça ne marchera jamais
dawez
3

J'ai une installation standard d'apache le 14.04. Il n'y a aucun fichier ou répertoire spécifiant "www-data". Avez-vous changé tout cela vous-même? Il y a beaucoup d'informations obsolètes ou tout simplement incorrectes sur la façon de configurer les serveurs Web, alors faites attention à qui vous suivez et annulez ce qui ne fonctionne pas.

Cela dit, "site1" devrait être dans le htmlrépertoire et vous appartenir. Il n'a pas vraiment besoin d'être 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>
Marty Fried
la source
1

Solution: lien symbolique non autorisé ou la cible du lien non accessible: /var/www/html/mySymbolicLink.

Il s'agit clairement d'un problème avec les autorisations. Le problème est que le html sous votre répertoire personnel appartient à votre utilisateur et que le serveur apache est géré par un autre utilisateur et ne peut donc pas accéder à votre répertoire personnel.

La solution serait alors d'ajouter l'utilisateur exécutant apache à votre groupe, normalement le même que 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 l'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 pense que pour Ubuntu, l'utilisateur l'est www-data.

Roberto Aguilar
la source