В следующей статье мы рассмотрим виртуальные хосты Apache. Прежде всего, необходимо пояснить, что виртуальный хост - это директива конфигурации Apache, которая позволит нам запускать более одного веб-сайта на одном сервере. Тот факт, что они работают на одном физическом сервере, не очевиден для конечного пользователя.
С помощью виртуальных хостов мы сможем указать корень сайта (каталог, содержащий файлы сайта), создать отдельную политику безопасности для каждого сайта, использовать разные сертификаты SSL и многое другое.
В следующих строках мы увидим как настроить виртуальные хосты Apache в Ubuntu 20.04, и для этого мы должны выполнить следующие требования, прежде чем продолжить: одно или несколько доменных имен, указывающих на IP-адрес вашего общедоступного сервера и Apache, установленного в Ubuntu.
Создайте структуру каталогов
Корневой каталог документа - это каталог, в котором файлы веб-сайта для доменного имени хранятся и обслуживаются в ответ на запросы. Мы можем установить рут в интересующем нас месте. Каждый домен размещен на сервер apache будет иметь корень документа, установленный на / var / www / имя-домена / public_html.
Позволять начните с создания корневого каталога для двух доменов который я собираюсь использовать в этом примере:
sudo mkdir -p /var/www/dominio1.com/public_html sudo mkdir -p /var/www/dominio2.com/public_html
также мы создадим файл index.html в корневом каталоге документов каждого домена. Это будет показано, когда мы зайдем на домен из браузера:
sudo vim /var/www/dominio1.com/public_html/index.html
Внутри файла мы собираемся вставить следующий контент:
<!DOCTYPE html> <html lang="es"> <head> <meta charset="utf-8">dominio1</title> </head> <body> <h1>Home del dominio1</h1> </body> </html>
Для второго домена мы отредактируем его файл index.html и добавим его следующее содержание:
sudo vim /var/www/dominio2.com/public_html/index.html
<!DOCTYPE html> <html lang="es"> <head> <meta charset="utf-8">dominio2</title> </head> <body> <h1>Home del dominio2</h1> </body> </html>
Поскольку приведенные выше команды запускаются с помощью sudo, вновь созданные файлы и каталоги принадлежат пользователю root. Чтобы избежать проблем с разрешением, мы собираемся изменить владельца корневого каталога доменов и всех файлов в этих каталогах на пользователя apache (www-data):
sudo chown -R www-data: /var/www/dominio1.com sudo chown -R www-data: /var/www/dominio2.com
Создать виртуальные хосты
В системах Ubuntu Файлы конфигурации виртуальных хостов для Apache находятся в каталоге / и т.д. / apache2 / сайты-доступные. Их можно включить, создав символические ссылки на каталог. / и т.д. / apache2 / сайты с поддержкой, который Apache читает во время запуска.
Мы можем называть файлы конфигурации как угодно. Но Лучше всего использовать доменное имя в качестве имени файла конфигурации виртуального хоста.. Теперь мы собираемся открыть наш любимый текстовый редактор и создать основные файлы конфигурации. В этом примере я просто покажу код для домена 1:
sudo vim /etc/apache2/sites-available/dominio1.com.conf
Внутри мы добавим что-то вроде следующего, но для домена 2 нам нужно будет изменить домен 1 на домен 2 в следующем коде:
<VirtualHost *:80> ServerName dominio1.com ServerAlias www.dominio1.com ServerAdmin webmaster@dominio1.com DocumentRoot /var/www/dominio1.com/public_html <Directory /var/www/dominio1.com/public_html> Options -Indexes +FollowSymLinks AllowOverride All </Directory> ErrorLog ${APACHE_LOG_DIR}/dominio1.com-error.log CustomLog ${APACHE_LOG_DIR}/dominio1.com-access.log combined </VirtualHost>
- Название сервера → Вы собираетесь указать домен, который должен соответствовать этой конфигурации виртуального хоста. Восток должно быть доменное имя.
- ServerAlias → Все другие домены или субдомены, которые должны соответствовать этому виртуальному хосту, например www.
- DocumentRoot → Вот укажет каталог, из которого Apache будет обслуживать файлы.
- Опции → Эта директива контролирует, какие функции сервера доступны в определенном каталоге.
- Индексы → Избегайте списков каталогов.
- СледоватьSymLinks → Когда эта опция включена, Apache будет переходить по символическим ссылкам.
- Аллововеррайд → Вы собираетесь указать, что директивы, объявленные в файле .htaccess, могут переопределять директивы конфигурации.
- Журнал ошибок, Пользовательский журнал → Здесь вы указываете расположение файлов журнала.
После сохранения файлов, чтобы включить новый файл виртуального хоста, мы собираемся создать символическую ссылку из файла виртуального хоста в каталог с поддержкой сайта. Сделаем это с помощью скрипта a2ensite:
sudo a2ensite dominio1.com
Другой вариант вручную создать символическую ссылку как показано ниже:
sudo ln -s /etc/apache2/sites-available/dominio1.com.conf /etc/apache2/sites-enabled/
Как только это будет сделано, мы сможем проверить конфигурацию на наличие синтаксических ошибок с:
sudo apachectl configtest
Если ошибок нет, в терминале мы увидим такой результат:
Мы продолжаем перезапуск службы Apache чтобы изменения вступили в силу:
sudo systemctl restart apache2
Наконец, чтобы убедиться, что все работает должным образом, мы откроем URL http://dominio1.com в браузере, и мы должны увидеть содержимое страницы index.html домена 1:
С помощью виртуальных хостов мы можем разместить несколько доменов на одном сервере Ubuntu.. Мы можем повторить шаги, описанные в предыдущих строках, для создания дополнительных виртуальных хостов для всех наших доменов.
В этой статье раскрывается только базовое объяснение виртуального хоста и его конфигурации в Ubuntu. Может получить больше информации на Веб-сайт Apache.
Здравствуйте, мне очень помогло создание виртуальных хостов, но при запуске apachectl confitest я получил следующую ошибку: «AH00558: apache2: Не удалось достоверно определить полное доменное имя сервера, используя 127.0.1.1. Установите директиву 'ServerName' глобально, чтобы подавить это сообщение.
Синтаксис ОК»
Я не знаю, что может быть не так