Виртуальные хосты Apache2 в Ubuntu 16.04 и Ubuntu 14.04

Во время разработки, одним хостом не обойдешься. На одном можно разрабатывать, на другом тестировать, а на третьем еще один проект.

Плюс ко всему, в Apache2 по умолчанию файлы сайта хранятся в /var/www, у меня же они будут находиться в моей домашней папке, /home/goodigy/sites.

Apache2 может определять хосты по ip-адресам, по доменным именам и по портам.

Мы будем использовать второй вариант, то есть определение хостов по доменным именам.

В Apache2, установленном в Ubuntu 16.04 и Ubuntu 14.04, для этого уже почти все готово.

В папке **/etc/apache2/**sites-available будут храниться все конфигурационные файлы виртуального хоста.
Затем мы его просто будем включать и выключать по надобности. Один файл там уже есть, на основе его мы и сделаем свой.

Скопируем под именем example (наш хост будет называться example, и в браузере станет доступен по ссылке https://example)

    sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/example.conf

В предыдущих версиях apache2 (до версии 2.4), не использовались расширения файлов .conf. В новых версиях (с версии 2.4) это приведет к ошибке.

Теперь надо отредактировать, вновь созданный, файл

    sudo nano /etc/apache2/sites-available/example.conf

Файл приводим к следующему виду:

    <VirtualHost *:80>
            ServerName example        
            DocumentRoot /home/goodigy/sites/example
    
            <Directory /home/goodigy/sites/example>
                Options Indexes FollowSymlinks
                AllowOverride All
                Require all granted
            </Directory>
    
            ErrorLog /home/goodigy/sites/example/error.log
            CustomLog /home/goodigy/sites/example/access.log combined
    </VirtualHost>

Разъяснение настроек:

  • ServerName example - указание доменного имени по которому будет определяться хост.
  • DocumentRoot /home/goodigy/sites/example - привязывает папку к хосту.
  • < Directory /home/goodigy/sites/example>
    Options Indexes FollowSymlinks
    AllowOverride All
    Require all granted
    < /Directory> - это настройки папки,
  • Options Indexes FollowSymlinks - если нет индексного файла (index.html, index.php), показывать список файлов, удобно на локальном сервере.
  • AllowOverride All - разрешает переопределять настройки в .htaccess.
  • Require all granted - доступ разрешен всем.
  • ErrorLog - указывает расположение файла с логом ошибок, я их храню в папке с сайтом.
  • CustomLog - указывает расположение файла с логом доступа, я их храню в папке с сайтом.

Сохраняем.
Создаем папки, указанные в конфигурационном файле

    mkdir /home/goodigy/sites 
    mkdir /home/goodigy/sites/example

Включаем сайт

    sudo a2ensite example.conf

И отключаем тот, который по умолчанию

    sudo a2dissite 000-default.conf

Перезапускаем Apache2

    sudo service apache2 restart

Далее, нам нужно добавить доменное имя в файл /etc/hosts. Открываем его на редактирование

    sudo nano /etc/hosts

Выглядит он, примерно, так

    127.0.0.1       localhost
    127.0.1.1       googidy-comp
    
    # The following lines are desirable for IPv6 capable hosts
    ::1     ip6-localhost ip6-loopback
    fe00::0 ip6-localnet
    ff00::0 ip6-mcastprefix
    ff02::1 ip6-allnodes
    ff02::2 ip6-allrouters

Туда надо добавить указание на наш домен example

    127.0.0.1       localhost
    127.0.1.1       igy-nout
    127.0.0.1       example
    
    # The following lines are desirable for IPv6 capable hosts
    ::1     ip6-localhost ip6-loopback
    fe00::0 ip6-localnet
    ff00::0 ip6-mcastprefix
    ff02::1 ip6-allnodes
    ff02::2 ip6-allrouters

Сохраняем.
Все, теперь по адресу https://example доступен наш новый хост. В браузере должна отобразиться папка с файлами, так как там отсутствует индексный файл.