Настройка Apache для нескольких сайтов с общими файлами

У меня есть около 50 сайтов, которые используют одни и те же файлы, кроме CSS и IMAGES, в настоящее время я дублирую файлы каждый раз, когда создаю новый сайт и загружаю разные CSS и изображения.

Что я хочу сделать, так это настроить каждый виртуальный хост так, чтобы он имел один и тот же DocumentRoot, а затем добавить AliasMatch для css и изображений. папки например:

#Common Files VHOST
<VirtualHost xxx.xxx.xxx.xxx:80>
    ServerName commonfiles.com
    ServerAlias www.commonfiles.com
    DocumentRoot /home/commonfiles/public_html
</VirtualHost>

#Sample vhost for 1 of the 50 sites.
<VirtualHost xxx.xxx.xxx.xxx:80>
    ServerName mytest.com
    ServerAlias www.mytest.com
    DocumentRoot /home/commonfiles/public_html
    ......
    AliasMatch /css/(.*) /home/ftpuser/public_html/mycss/$1
</VirtualHost>

Псевдоним отлично работает для файлов, сделанных на заказ, но доступ к общим файлам невозможен из-за ошибок прав доступа:

[Mon Nov 16 09:31:01 2009] [crit] [client xxx.xxx.xxx.xxx] (13)Permission denied: /home/commonfiles/public_html/.htaccess pcfg_openfile: unable to check htaccess file, ensure it is readable

Это текущая настройка сервера, которая, я думаю, может быть частью проблемы (предыдущая настройка администратора сервера):

  • Apache (Apache/2.2.14 (Unix)
  • PHP 5.2.11
  • Стандарт CentOS 4.8 i686
  • Обработчик PHP 5 — это dso
  • Apache suEXEC включен

Какие-либо предложения?


person Lizard    schedule 16.11.2009    source источник


Ответы (3)


Похоже, что по умолчанию папка public_html имеет разрешения 750, я изменил на 755 и обновил ограничения open_basedir, и все стало отлично работать.

Мне просто нужно убедиться, что у меня все еще есть .htaccess для каждого сайта.

person Lizard    schedule 16.11.2009
comment
Я бы хотел, но вам нужно подождать 48 часов, прежде чем вы сможете принять свой собственный ответ. - person Lizard; 17.11.2009

Не похоже, что проблема в AliasMatch, сообщение об ошибке указывает на ваш файл htaccess. Вы проверили это на наличие разрешений? Какому пользователю он принадлежит?

person Pekka    schedule 16.11.2009
comment
Да, совпадение псевдонимов в порядке, пример: /home/commonfiles/public_html/.htaccess имеет 644 commonfiles:commonfiles - person Lizard; 16.11.2009
comment
Попробуйте указать весь каталог 644. Это поможет? - person Pekka; 16.11.2009
comment
Смена каталога на 644 не помогла, поэтому в качестве теста я установил .htaccess и public_html на 777, это дало мне отдельную ошибку PHP Fatal error: Can't load /home/commonfiles/public_html/index.php, open_basedir restriction. in Unknown on line 0 - person Lizard; 16.11.2009
comment
Я просто добавил правильный путь к php_admin_value open_basedir /home/ftpuser:/usr/lib/php:/usr/local/lib/php:/tmp:/home/commonfiles И с 777 разрешениями он работает - person Lizard; 16.11.2009
comment
Похоже, что у других должны быть разрешения на выполнение, чтобы это работало, какие разрешения я должен использовать? - person Lizard; 16.11.2009
comment
Я не думаю, что вам нужны разрешения на выполнение для других. Разрешения на чтение должны работать нормально. Ограничение open_basedir должно быть другим вопросом. Проверьте свой php.ini, настроен ли open_basedir? Если это так, попробуйте отключить его. - person Pekka; 16.11.2009

Другим решением было бы создание символических ссылок в каждом домене, указывающих на папку, в которой находятся общие файлы.

person Marco Luglio    schedule 16.11.2009