Всем привет!
Знаю, что этот вопрос поднимался неоднократно в интернетах, но ни одно решение мне не помогло.
Поставил на систему Ubuntu 16.04 apache2 из репозитория - версия Apache/2.4.18 (Ubuntu).
Установил скрипт управления виртуальными хостами. Он немного изменен мной, в отличии от
оригинала, но в свою защиту скажу, что именно такой листинг у меня работал на других машинах. Вот сам скрипт (оставил только создание и удаление хоста):
#!/bin/bash
projects="/home/user/web/www";
hosts="/home/user/web/hosts";
enabled_hosts='/etc/apache2/sites-enabled';
user=$(whoami);
action=$1;
name=$2
db=$3;
add_folders() {
mkdir -p "$projects/$name/www";
mkdir -p "$projects/$name/logs"
mkdir -p "$projects/$name/tmp"
chown -R $user\: "$projects/$name/"
chmod -R 777 "$projects/$name";
mkdir -p $hosts
}
add_host() {
echo "
<VirtualHost *:80>
ServerName $name
ServerAlias www.$name
DocumentRoot $projects/$name/www
<Directory $projects/$name/www>
Options Indexes FollowSymlinks
AllowOverride All
Require all granted
</Directory>
ErrorLog $projects/$name/logs/error.log
CustomLog $projects/$name/logs/access.log combined
</VirtualHost>" > $hosts/$name
ln -s $hosts/$name $enabled_hosts/$name.conf
# a2ensite $name.conf
echo "127.0.0.1 $name" >> /etc/hosts
}
add_index_file() {
echo "<html>
<body>
<h1>$name works!</h1>
</body>
</html>" > $projects/$name/www/index.html
chown $user\: "$projects/$name/www/index.html"
chmod 777 "$projects/$name/www/index.html"
}
create_host() {
if [ -z $name ]; then
echo 'No name for vhost given.';
exit 1;
fi
if [ -f "$hosts/$name" ]; then
echo 'Virtual host already exists.';
exit 0;
fi
echo 'All is ok, fast forward -->';
add_folders;
echo '* Folders created';
add_host;
echo '* Host created';
add_index_file;
reload_apache;
}
delete_all() {
if [ -z $name ]; then
echo 'No name for vhost given. Exit.';
exit 1;
fi
if [ -f "$hosts/$name" ]; then
echo "Remove vhost $name?";
echo "This action will remove all files and directories from this project (y/n)";
read confirm;
if [ $confirm = 'y' ]; then
echo "* Removing files and directories from $projects/$name";
rm -rf $projects/$name
echo "* Removing vhost file from $hosts/$name";
rm $hosts/$name
echo "* Removing link from $enabled_hosts/$name"
rm $enabled_hosts/$name.conf
echo "* Cleaning up /etc/hosts"
sed "/$name/d" /etc/hosts > /tmp/tmp-hosts;
mv -f /tmp/tmp-hosts /etc/hosts
echo "* Done. The matrix has project $name";
reload_apache;
else
echo "Skipped.";
fi
else
echo 'No such vhost.';
exit;
fi
}
reload_apache() {
service apache2 restart
}
if [ $(whoami) != "root" ]; then
echo 'You must be root.'
exit 1;
fi
case $action in
add)
create_host;
;;
delall)
delete_all;
;;
*)
echo "Usage: `basename $0` (create|delete|enable|disable) vhostname";
exit 0;
;;
esac
В итоге не могу попасть на созданный хост. В ответ получаю:
Права на директорию как только не менял. Целый день сижу.
Вот что выдает эрор лог хоста:
[Wed Sep 21 21:32:52.550133 2016] [core:error] [pid 20651:tid 140047573829376] (13)Permission denied: [client 127.0.0.1:41466] AH00035: access to / denied (filesystem path '/home/user/web') because search permissions are missing on a component of the path
[Wed Sep 21 21:33:10.450348 2016] [core:error] [pid 20651:tid 140047582222080] (13)Permission denied: [client 127.0.0.1:41476] AH00035: access to /favicon.ico denied (filesystem path '/home/user/web') because search permissions are missing on a component of the path
Не понятно, почему апач останавливается на полпути. Повторюсь, менял руками права на папку
~/web и глубже как только можно.