Я просто хочу поместить простой веб-сайт PHP в пользовательский каталог на моей машине (скажите, что/home/znorg/foobar), и получают доступ к нему хотя apache2 на Ubuntu через что-то как http://localhost/foobar/
Извините, если это - повторное или слишком тривиальный вопрос, но я просто не могу найти простой ответ о том, как сделать просто это где угодно.
Другой подход к: URL Карт к местоположениям файловой системы с помощью конфигурации Apache. С этой целью необходимо использовать директиву Alias
. Синтаксис:
Alias [URL-path] file-path|directory-path
Обратите внимание на то, что mod_alias
требуется, но это идет с Apache2 по умолчанию. Можно проверить, установлено ли это через:
sudo apache2ctl -M | grep alias
Псевдоним может использоваться для каталогов и для файлов. Также это может использоваться на обоих уровнях:
/etc/apache2/apache2.conf
или в /etc/apache2/conf-avaliable/myAlias.conf
) - псевдоним будет доступен для каждого активного Virtualhost;/etc/apache2/sites-avaliable/someVH.conf
; промежуточный <VirtualHost >
теги) - псевдоним будет доступен только для текущего VirtualHost.Обратите внимание, что Вы, возможно, должны указать дополнительный
<Directory>
разделы, которые покрывают место назначения псевдонимов. Искажение происходит прежде<Directory>
разделы проверяются, поэтому только место назначения псевдонимов затронуто.В частности, если Вы создаете Псевдоним к каталогу за пределами Вашего
DocumentRoot
, Вы, возможно, должны явно разрешить доступ к целевому каталогу.
Вот, пожалуйста список некоторых за и против двух подходов: Псевдоним и SymLinks. Также проверьте этот комментарий.
Давайте предположим, что Вы хотите сделать Псевдоним на VirtualHost-уровне, и Ваш конфигурационный файл СПИДОБАРОГРАФА /etc/apache2/sites-available/000-default.conf
. В этом случае конфигурационный файл должен выглядеть примерно так:
<VirtualHost *:80>
# other VirtualHost directives
Alias /foobar /home/znorg/foobar
<Directory /home/znorg/foobar>
Require all granted
</Directory>
</VirtualHost>
Не забывайте перезапускать (или перезагрузка) сервер:
sudo systemctl restart apache2.service
Давайте предположим, что Вы хотите сделать Псевдоним на уровне Сервера, и Вы не хотите затрагивать apache2.conf
. В этом случае необходимо создать и включить дополнительный конфигурационный файл. В нашем примере это foobarAlias.conf
, который должен быть помещен в каталог /etc/apache2/conf-available/
.
Можно создать этот файл через (используйте ctrl+o для сохранения и ctrl+x для выхода):
sudo nano /etc/apache2/conf-available/foobarAlias.conf
И его содержание должно выглядеть примерно так:
Alias /foobar /home/znorg/foobar
<Directory /home/znorg/foobar>
Require all granted
</Directory>
Не забывайте включать новую конфигурацию и перезапуск (или перезагрузка) сервер:
sudo a2enconf foobarAlias && sudo systemctl restart apache2.service
На основе комментария @George выше, это - то, что работало на меня:
1) Создают символьную ссылку в /var/www/html
к желаемому каталогу:
sudo ln -s /home/znorg/foobar /var/www/html/foobar
2) конфигурационный файл шаблона Copy:
sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/foobar.conf
3) Затем в foobar.conf, ищите строку как:
DocumentRoot /var/www/html
И замена /var/www/html
с /home/znorg/foobar
4) Включают новую конфигурацию:
sudo a2ensite foobar
5) Перезагрузка сервер:
service apache2 reload
Hope это полезно для кого-то еще.