Виртуальный хост на ubuntu 13.10 и apache 2.4.6
У меня есть следующая проблема:
Мой файл hosts выглядит следующим образом:
127.0.0.1 localhost
127.0.1.1 barbala4o-HP-ProBook-4530s
127.0.1.1 mysite.localhost
Мой файл в /etc/apache2/sites-available/mysite.localhost.conf
выглядит следующим образом:
<VirtualHost *:80>
ServerAdmin [email protected]
ServerName mysite.localhost
DocumentRoot /var/www/mysite
<Directory /var/www/mysite/>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
ErrorLog /var/log/apache2/mysite-error.log
CustomLog /var/log/apache2/mysite-access.log common
</VirtualHost>
После do sudo a2ensite mysite.localhost.conf
и перезапустите apache на mysite.localhost/и только на localhost я получаю следующее (например, перечисляя в него каталог без индексного файла):
Index of /
[ICO] Name Last modified Size Description
[DIR] apache_logs/ 2013-09-24 10:15 -
[DIR] mysql/ 2013-10-22 10:05 -
[DIR] tools/ 2013-10-22 10:05
И в любой другой папке в каталоге /var/www/
, например, при вводе localhost/test
вместо загрузки файла index.php
он показывает:
Not Found
The requested URL /adlantic was not found on this server.
Apache/2.4.6 (Ubuntu) Server at localhost Port 80
Если я делаю sudo a2dissite mysite.conf
и перезапускаю apache, все загружается нормально. Я предполагаю, что проблема находится где-то в mysite.localhost.conf
, но я не могу найти где. Есть идеи? 10x
Ответы
Ответ 1
Ubuntu 13.10 и варианты переместились в Apache 2.4. Apache 2.4 хочет, чтобы файлы конфигурации виртуального хоста, по умолчанию, заканчивались на .conf.
Решение
Теперь, чтобы исправить эту проблему, вы можете использовать два метода для достижения того же результата.
-
Первое решение и простое решение - добавить расширение .conf для всего вашего виртуального хоста. Новый Apache 2.4 читает каждый виртуальный хост в каталоге доступных сайтов с расширением .conf, описанным в новом файле конфигурации Apache 2.4.
-
Второе решение - удалить расширение .conf в конфигурационном файле Apache 2.4, расположенном в файле /etc/apache 2/apache2.conf
В старом файле Apache 2.2 файл .conf содержал Include sites-enabled/, тогда как новый .conf файл имел
# Include the virtual host configurations:
IncludeOptional sites-enabled/*.conf
Измените эту строку следующим образом:
# Include the virtual host configurations:
IncludeOptional sites-enabled/
Результаты: команда a2ensite yourdomain теперь работает так, как ожидалось. Если вы используете второй метод; вашим виртуальным файлам хоста не требуется расширение .conf.
Note: Configuration file is "/etc/apache2/apache2.conf" in new Apache, so please copy document root path and other configurations from "/etc/apache2/sites-available/000-default.conf" to "/etc/apache2/apache2.conf"
Ответ 2
Я нашел проблему после 3-х экспериментов. По-видимому, в новом Ubuntu 13.10 по какой-то глупой причине файл conf для виртуального хоста должен выглядеть примерно так:
<VirtualHost mysite.localhost>
ServerAdmin [email protected]
ServerName mysite.localhost
ServerAlias mysite.localhost
# Indexes + Directory Root.
DocumentRoot /var/www/mysite/public_html
<Directory /var/www/mysite/public_html/>
DirectoryIndex index.php
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
# Logfiles
ErrorLog /var/log/apache2/mysite-error.log
CustomLog /var/log/apache2/mysite-access.log common
</VirtualHost>
По-видимому, ребята, которые разработали Ubuntu 13.10, решили, что больше не стоит использовать
<VirtualHost *:80>
при создании виртуального хоста, и вместо этого он должен быть
<VirtualHost mysite.localhost>
смешанный с конкретным указанием DirectoryIndex. Это фиксировало проблему, с которой я столкнулся, и теперь все работает (надеюсь, как и должно быть, что-то может возникнуть в конце концов). Очевидно, файл конфигурации apache отличается.
Ответ 3
У меня была одна и та же проблема, но ни одна из этих вышезаписей не работала для меня. Позже я прочитал и просмотрел все файлы конфигурации Apache и PHP.
Я мог бы выяснить, что в apache2.conf(в ubuntu 13.10) есть флаг под названием
HostnameLookups off
По умолчанию это будет отключено, я изменил это на
HostnameLookups on
Таким образом, Apache начал хорошо подбирать записи моего хоста и конфигурацию vhost.
Также ниже мой фактический файл Vhost. который я использовал, чтобы заставить его работать
Отключение Я также рекомендую добавить Require all granted
в директиве Vhost.
<VirtualHost *:80>
ServerName test.yoursite.domain.in
DocumentRoot path_to_code_base/public
<Directory path_to_code_base/public>
Options -Indexes
Require all granted
DirectoryIndex index.php
AllowOverride All
</Directory>
ErrorLog /path_to_code_base/logs/error.log
LogLevel warn
CustomLog /path_to_code_base/logs/access.log combined
</VirtualHost>
Я публикую это, чтобы помочь другим, которые не хотят тратить время на то, чтобы понизить Ubuntu до 13.04 с 13.10.
Я не вижу этих блогов, я также не мог понять, что на самом деле имеет значение hostnameLookups.
Надеюсь, это поможет.
Ответ 4
Для Apache 2.4.6
в Ubuntu 13.10
,
У вас будет
/etc/apache2/apache2.conf
/etc/apache2/sites-available/000-default.conf
и
/etc/apache2/sites-enabled/000-default.conf
указывает на /etc/apache2/sites-available/000-default.conf
Теперь отредактируйте apache2.conf
и добавьте
<Directory /home/my_site/public_html/>
#YOUR SETTINGS
</Directory>
и отредактируйте sites-available/000-default.conf
и измените <VirtualHost *:80>
на <VirtualHost localhost:80>
, чтобы apache прослушивал localhost (на порту 80) для ваших настроек по умолчанию.
Теперь, чтобы сделать работу mysite.localhost
, добавьте ее в sites-available/000-default.conf
<VirtualHost mysite.localhost:80>
ServerName mysite.localhost
ServerAdmin [email protected]
DocumentRoot /home/my_new_site_public_html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
Теперь отредактируйте файл /etc/hosts/
и измените IP
на mysite.localhost
с 127.0.1.1
на 127.0.0.1
Теперь посетите http://mysite.localhost
и http://localhost
:)
Ответ 5
<VirtualHost *:80>
ServerAdmin [email protected]
ServerName mysite.localhost
DocumentRoot /var/www/mysite
<Directory /var/www/mysite/>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
ErrorLog /var/log/apache2/mysite-error.log
CustomLog /var/log/apache2/mysite-access.log common
</VirtualHost>
В моем случае я просто заменил <VirtualHost *:80>
на <VirtualHost mysite.localhost:80>
после долгих проб и ошибок
Надеюсь, это поможет.
Привет,
Ответ 6
Execute:
vim может быть изменен с помощью вашего любимого текстового редактора, такого как nano, pico и т.д.
vim/etc/apache2/apache2.conf
Исходный файл:
# Sets the default security model of the Apache2 HTTPD server. It does
# not allow access to the root filesystem outside of /usr/share and /var/www.
# The former is used by web applications packaged in Debian,
# the latter may be used for local directories served by the web server. If
# your system is serving content from a sub-directory in /srv you must allow
# access here, or in any related virtual host.
<Directory />
Options FollowSymLinks
AllowOverride None
Require all denied
</Directory>
<Directory /usr/share/>
AllowOverride None
Require all granted
</Directory>
<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
Изменить "Нет" на "Все"
Редактировать файл:
# Sets the default security model of the Apache2 HTTPD server. It does
# not allow access to the root filesystem outside of /usr/share and /var/www.
# The former is used by web applications packaged in Debian,
# the latter may be used for local directories served by the web server. If
# your system is serving content from a sub-directory in /srv you must allow
# access here, or in any related virtual host.
<Directory />
Options FollowSymLinks
AllowOverride All
Require all denied
</Directory>
<Directory /usr/share/>
AllowOverride All
Require all granted
</Directory>
<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
Ответ 7
Для Kubuntu 14.04 и Apache 2.4.7
После прочтения вышеприведенных предложений и по-прежнему сталкивающихся с проблемами разрешений, для меня работал "chmod 755 $HOME".
Не использовать в многопользовательской системе.
Ответ 8
Просто для людей, которые вытягивают волосы по этой теме, вам нужно использовать sudo для всех этих настроек, если вы используете экземпляр AWS.
sudo a2ensite example.com
Помните, что вам нужно сделать это для перезапуска apache. Если вы не видите, что ваши изменения происходят, это, скорее всего, виновник.
sudo service apache2 restart