Подтвердить что ты не робот

Виртуальный хост на 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

4b9b3361

Ответ 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