Apache2 www1 вместо www

Таким образом, я создал очень простой сайт, содержащий только index.html с текстом 'приветствие'. виртуальный хост этого сайта следующие:

ServerAdmin email@email.com
ServerName name.com
ServerAlias www.name.com
DocumentRoot /var/www/name.com/public_html

Это работает просто великолепно. Затем я делаю другой сайт, которым я хочу быть www1.name.com с текстом www1.

Я делаю practicly то же, я делаю папку /var/www1/name.com/public_html с index.html в нем я копирую предыдущий файл и изменяю его

ServerAlias www1.name.com
DocumentRoot /var/www1/name.com/public_html

но при движении в www1.name.com, я получаю текст 'Прием' и не 'www1'. Кто-либо может помочь мне с этим?

И да я всегда делаю a2ensite/a2dissite и service apache2 restart

0
задан 23 August 2017 в 07:52

2 ответа

Принятие VirtualHost теги прекрасны. Это, вероятно, потому что ServerAlias не используется, если существует нет ServerName существующий. Попробуйте его снова после изменения ServerAlias кому: ServerName в Вашу секунду VirtualHost.

Хорошее напоминание состоит в том, чтобы установить ServerName для имени и использования ServerAlias для любых дополнительных псевдонимов.

Действительно отметьте хотя, если Вы собираетесь использовать другой каталог (за пределами/var/www), что полномочия установлены правильно. Также, если SELinux используется, соответствующий контекст должен быть установлен для того каталога. Но это - правильно не проблема, если Вы не включаете SELinux самостоятельно.

1
ответ дан 2 November 2019 в 09:31

Разъяснение немногих основных пунктов:

  • В рамках Ubuntu, /var/www каталог по умолчанию, где веб-контент пользователя должен быть сохранен. Это определяется в конфигурационный файл глобального Apache: /etc/apache2/apache2.conf, согласно директивам:

    <Directory /var/www/>
        Options Indexes FollowSymLinks
        AllowOverride None
        Require all granted
    </Directory>
    
  • Нет никакой прямой ссылки между названием VirtualHost и DocumentRoot имя каталога.

  • Директива ServerName определяет название общего сервера или название определенного VirtualHost, когда это помещается в его определение - между <VirtualHost> теги.

  • В целях эффективного управления VHS, обычно, определение каждого отдельного VirtualHost помещается в отдельный конфигурационный файл.

  • Директива ServerName требуется для каждого VirtualHost.

  • Директива ServerAlias не требуется. Мы можем думать об этом как место, где мы можем ввести один или несколько синонимов ServerName.

Согласно этим точкам, мое предложение является следующим:

  • Создайте два отдельных каталога, расположенные в /var/www, как пример от вопроса они могли быть:

    sudo mkdir -p /var/www/www.name.com/public_html
    sudo mkdir -p /var/www/www1.name.com/public_html
    
  • Создайте конфигурационный файл для первого VirtualHost:

    sudo nano /etc/apache2/sites-available/www.name.com.conf
    

    Его содержание должно быть чем-то как:

    <VirtualHost *:80>
        ServerName www.name.com
        ServerAlias name.com 
        ServerAdmin email@email.com
        DocumentRoot /var/www/www.name.com/public_html
        <Directory /var/www/www.name.com/public_html>
            Options None FollowSymLinks
            # Enable .htaccess Overrides:
            AllowOverride All
            DirectoryIndex index.html index.php
            Order allow,deny
            Allow from all
            Require all granted
        </Directory>
    </VirtualHost>
    
  • Создайте конфигурационный файл для второго VirtualHost:

    sudo nano /etc/apache2/sites-available/www1.name.com.conf
    

    Его содержание должно быть чем-то как:

    <VirtualHost *:80>
        ServerName www1.name.com
        ServerAdmin email@email.com
        DocumentRoot /var/www/www1.name.com/public_html
        <Directory /var/www/www1.name.com/public_html>
            Options None FollowSymLinks
            # Enable .htaccess Overrides:
            AllowOverride All
            DirectoryIndex index.html index.php
            Order allow,deny
            Allow from all
            Require all granted            
        </Directory>
    </VirtualHost>
    
  • Отключите конфигурации всего существующего VirtualHost, если это необходимо: sudo a2dissite "*.conf".

  • Включите новые конфигурационные файлы:

    sudo a2ensite www.name.com.conf www1.name.com.conf
    
  • Apache перезапуска:

    • Ubuntu 14.04: sudo service apache2 restart

    • Ubuntu 16.04: sudo systemctl restart apache2.service

  • Поместите некоторые страницы index.html в public_html/ папки и попытка получить доступ к этим двум доменам (http://www... и http://www1...) через браузер.

0
ответ дан 2 November 2019 в 09:31

Другие вопросы по тегам:

Похожие вопросы: