Как настроить apache2 с символическими ссылками в / var / www /?


14

Я хочу настроить локальный веб-сервер на моем Ubuntu (14.04). Поэтому я установил все программное обеспечение, чтобы получить сервер LAMP.

Проблема в том, что я делаю что-то не так с созданием своих виртуальных хостов. Я хотел создать разные субдомены на моем локальном хосте. Так, например, site1.localhost и site2.localhost.

В моем /var/www/каталоге я создал символическую ссылку "site1", которая ведет на /home/user/Workspaces/site1.

В моем файле Apache error.log я получил следующую ошибку.

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

В моей конфигурации Apache у меня есть:

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

Поэтому я думаю, что что-то не так с разрешениями папок. Я искал в Google и нашел несколько человек с такой же проблемой, но все ответы, представленные там, не сработали. Я добавил свое имя пользователя в группу www-data и тому подобное.

Итак, ls -la /var/wwwвозвращается:

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/

и ls -la /home/juul/Workspaces/site1возвращает:

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

Надеюсь, кто-то может помочь мне с этим :-)

Ответы:


5

Эти разрешения не позволяют apacheполучить доступ к вам

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

Вы должны дать права на выполнение для других:

chmod o+x /home/juul/Workspaces/

(и, возможно, /home/juul/также).


в соответствии с ответом @muru, убедитесь, что у всех содержащихся каталогов есть набор разрешений "x". Если у кого-то его нет, он никогда не сработает
dawez

3

У меня стандартная установка apache на 14.04. Нет файлов или каталогов с указанием "www-data". Вы сами изменили все это? Существует много устаревшей или просто неверной информации о том, как настроить веб-серверы, поэтому будьте осторожны, следите за тем, кто следует, и отмените то, что не работает.

Тем не менее, "site1" должен находиться в htmlкаталоге и принадлежать вам. Это не обязательно должна быть символическая ссылка; Вы можете указать другой каталог в файле конфигурации. Что-то вроде этого:

# 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>

1

Решение для: символической ссылки не допускается или целевая ссылка не доступно: /var/www/html/mySymbolicLink.

Это явно проблема с разрешениями. Проблема в том, что HTML-файл в вашем домашнем каталоге принадлежит вашему пользователю, а сервер apache запущен другим пользователем, поэтому он не может получить доступ к вашему домашнему каталогу.

Решением будет добавление пользователя, работающего с Apache, в вашу группу, обычно совпадающего с вашим именем пользователя. Итак, в моей коробке CentOS я сделал это как:

sudo usermod -a -G dev apache

Так что добавьте пользователя apache в группу dev. Теперь мне нужно дать разрешение на исполнение.

В /home:

chmod g+x dev -R

Это даст разрешение на выполнение моей папки только для членов группы. Вот и все. Вам нужно будет изменить пользователя Apache для всего, что работает на вашем веб-сервере, я полагаю, что для Ubuntu это пользователь www-data.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.