Как настроить виртуальные хосты Apache на CentOS 7

Вступление

Веб-сервер Apache является наиболее популярным способом предоставления веб-контента в Интернете. Он обслуживает более половины всех активных веб-сайтов в Интернете и является чрезвычайно мощным и гибким.

Apache разбивает свою функциональность и компоненты на отдельные блоки, которые можно настраивать и настраивать независимо. Базовая единица, которая описывает отдельный сайт или домен, называется * виртуальным хостом *. Виртуальные хосты позволяют одному серверу размещать несколько доменов или интерфейсов с помощью соответствующей системы. Это относится ко всем, кто хочет разместить более одного сайта на одном VPS.

Каждый настроенный домен будет направлять посетителя в конкретный каталог, содержащий информацию об этом сайте, без указания того, что тот же сервер также отвечает за другие сайты. Эта схема расширяема без какого-либо программного ограничения, пока ваш сервер может обрабатывать трафик, который привлекают все сайты.

В этом руководстве мы расскажем, как настроить виртуальные хосты Apache на CentOS 7 VPS. В ходе этого процесса вы узнаете, как предоставлять разный контент разным посетителям в зависимости от того, какие домены они запрашивают.

Предпосылки

Прежде чем вы начнете с этим руководством, необходимо выполнить несколько шагов.

Вам потребуется доступ к серверу CentOS 7 с пользователем без полномочий root, который имеет права `+ sudo + '. Если вы еще не настроили это, вы можете запустить CentOS 7 Руководство по первоначальной настройке сервера, чтобы создать это учетная запись.

Вам также нужно будет установить Apache, чтобы настроить для него виртуальные хосты. Если вы этого еще не сделали, вы можете использовать + yum + для установки Apache через стандартные репозитории CentOS:

sudo yum -y install httpd

Затем включите Apache как службу CentOS, чтобы он автоматически запускался после перезагрузки:

sudo systemctl enable httpd.service

После выполнения этих шагов войдите в систему под учетной записью пользователя без полномочий root через SSH и продолжайте обучение.

  • Примечание: * Пример конфигурации в этом руководстве создаст один виртуальный хост для ` и другой для `. На них будут ссылаться на протяжении всего руководства, но вы должны заменить свои собственные домены или значения, следуя далее. Чтобы узнать, как настроить доменные имена с помощью DigitalOcean, перейдите по ссылке th link.

Если у вас нет реальных доменов для игры, мы покажем вам, как проверить конфигурацию виртуального хоста с использованием фиктивных значений в конце учебника.

Шаг первый - Создайте структуру каталогов

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

Наш * корневой каталог * (каталог верхнего уровня, на который Apache смотрит, чтобы найти контент для обслуживания) будет настроен на отдельные каталоги в каталоге + / var / www +. Здесь мы создадим каталог для каждого виртуального хоста, который планируем создать.

В каждом из этих каталогов мы создадим каталог + public_html +, в котором будут храниться наши настоящие файлы. Это дает нам некоторую гибкость в нашем хостинге.

Мы можем создать эти каталоги с помощью команды + mkdir + (с флагом + -p +, который позволяет нам создавать папку с вложенной папкой внутри нее):

sudo mkdir -p /var/www//public_html
sudo mkdir -p /var/www//public_html

Помните, что части представляют доменные имена, которые мы хотим обслуживать с нашего VPS.

Шаг второй - предоставить разрешения

Теперь у нас есть структура каталогов для наших файлов, но они принадлежат нашему пользователю + root +. Если мы хотим, чтобы наш обычный пользователь мог изменять файлы в ваших веб-каталогах, мы можем изменить владельца с помощью + chown:

sudo chown -R $USER:$USER /var/www//public_html
sudo chown -R $USER:$USER /var/www//public_html

Переменная + $ USER + примет значение пользователя, под которым вы в данный момент вошли, как при отправке команды. Таким образом, наш обычный пользователь теперь владеет подкаталогами + public_html +, где мы будем хранить наш контент.

Мы также должны немного изменить наши разрешения, чтобы обеспечить доступ для чтения к общему веб-каталогу и всем файлам и папкам внутри, чтобы страницы могли правильно обслуживаться:

sudo chmod -R 755 /var/www

Теперь ваш веб-сервер должен иметь разрешения, необходимые для обслуживания контента, а ваш пользователь должен иметь возможность создавать контент в соответствующих папках.

Шаг третий - создание демонстрационных страниц для каждого виртуального хоста

Теперь, когда у нас есть структура каталогов, давайте создадим некоторый контент для обслуживания.

Поскольку это только для демонстрации и тестирования, наши страницы будут очень простыми. Мы просто создадим страницу + index.html для каждого сайта, которая идентифицирует этот конкретный домен.

Давайте начнем с ++. Мы можем открыть файл + index.html в нашем редакторе, набрав:

nano /var/www//public_html/index.html

В этом файле создайте простой HTML-документ с указанием сайта, к которому подключена страница. Для этого руководства файл для нашего первого домена будет выглядеть следующим образом:

<html>
 <head>
   <title>Welcome to !</title>
 </head>
 <body>
   <h1>Success! The  virtual host is working!</h1>
 </body>
</html>

Сохраните и закройте файл, когда вы закончите.

Мы можем скопировать этот файл для использования в качестве шаблона для нашего второго сайта + index.html +, набрав:

cp /var/www//public_html/index.html /var/www//public_html/index.html

Теперь давайте откроем этот файл и изменим соответствующую информацию:

nano /var/www//public_html/index.html
<html>
 <head>
   <title>Welcome to !</title>
 </head>
 <body>
   <h1>Success! The  virtual host is working!</h1>
 </body>
</html>

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

Шаг четвертый - Создание новых файлов виртуальных хостов

Файлы виртуального хоста определяют конфигурацию наших отдельных сайтов и определяют, как веб-сервер Apache будет реагировать на различные запросы домена.

Для начала нам нужно настроить каталог, в котором будут храниться наши виртуальные хосты, а также каталог, который сообщает Apache, что виртуальный хост готов обслуживать посетителей. В каталоге + sites-available + будут храниться все наши файлы виртуальных хостов, в то время как каталог + sites-enabled + будет содержать символические ссылки на виртуальные хосты, которые мы хотим опубликовать. Мы можем сделать обе директории, набрав:

sudo mkdir /etc/httpd/sites-available
sudo mkdir /etc/httpd/sites-enabled
  • Примечание: * Этот макет каталога был представлен участниками Debian, но мы включили его здесь для дополнительной гибкости в управлении нашими виртуальными хостами (так как проще временно включать и отключать виртуальные хосты таким образом).

Далее мы должны указать Apache искать виртуальные хосты в каталоге + sites-enabled +. Для этого мы отредактируем основной файл конфигурации Apache и добавим строку, объявляющую необязательный каталог для дополнительных файлов конфигурации:

sudo nano /etc/httpd/conf/httpd.conf

Добавьте эту строку в конец файла:

IncludeOptional sites-enabled/*.conf

Сохраните и закройте файл, когда закончите добавлять эту строку. Теперь мы готовы создать наш первый файл виртуального хоста.

Создайте первый файл виртуального хоста

Начните с открытия нового файла в вашем редакторе с правами root:

sudo nano /etc/httpd/sites-available/.conf
  • Примечание: * Из-за конфигураций, которые мы обрисовали в общих чертах, все файлы виртуального хоста must заканчиваются на + .conf +.

Сначала начните с создания пары тегов, обозначающих контент как виртуальный хост, который прослушивает порт 80 (порт HTTP по умолчанию):

<VirtualHost *:80>

</VirtualHost>

Далее мы объявим имя основного сервера. Мы также создадим псевдоним сервера для указания, чтобы запрашивать и доставлять один и тот же контент:

<VirtualHost *:80>
   ServerName
   ServerAlias
</VirtualHost>
  • Примечание: * Для правильной работы версии домена «+ www » в конфигурации DNS домена потребуется запись A или CNAME, которая направляет запросы « www » на IP-адрес сервера. Подстановочный знак (` * +`) также будет работать. Чтобы узнать больше о DNS-записях, посетите наш https://www.digitalocean.com/community/tutorials/how-to-set-up-a-host-name-with-digitalocean#step-three%E2%80% 94configure-your-domain [руководство по настройке имени хоста].

Наконец, мы закончим, указав на корневой каталог наших общедоступных веб-документов. Мы также сообщим Apache, где хранить ошибки и запрашивать журналы для этого конкретного сайта:

<VirtualHost *:80>

   ServerName
   ServerAlias
   DocumentRoot /var/www//public_html
   ErrorLog /var/www//error.log
   CustomLog /var/www//requests.log combined
</VirtualHost>

Когда вы закончите записывать эти элементы, вы можете сохранить и закрыть файл.

Скопируйте первый виртуальный хост и настройте дополнительные домены

Теперь, когда у нас установлен первый файл виртуального хоста, мы можем создать наш второй, скопировав этот файл и настроив его по мере необходимости.

Начните с копирования с помощью + cp +:

sudo cp /etc/httpd/sites-available/.conf /etc/httpd/sites-available/.conf

Откройте новый файл с правами суперпользователя в текстовом редакторе:

sudo nano /etc/httpd/sites-available/.conf

Теперь вам нужно изменить все части информации, чтобы ссылаться на ваш второй домен. Когда вы закончите, ваш второй файл виртуального хоста может выглядеть примерно так:

<VirtualHost *:80>
   ServerName
   DocumentRoot /var/www//public_html
   ServerAlias
   ErrorLog /var/www//error.log
   CustomLog /var/www//requests.log combined
</VirtualHost>

Когда вы закончите вносить эти изменения, вы можете сохранить и закрыть файл.

Шаг пятый - Включите новые файлы виртуального хоста

Теперь, когда мы создали наши файлы виртуального хоста, нам нужно включить их, чтобы Apache знал, как обслуживать их для посетителей. Для этого мы можем создать символическую ссылку для каждого виртуального хоста в каталоге + sites-enabled +:

sudo ln -s /etc/httpd/sites-available/.conf /etc/httpd/sites-enabled/.conf
sudo ln -s /etc/httpd/sites-available/.conf /etc/httpd/sites-enabled/.conf

Когда вы закончите, перезапустите Apache, чтобы изменения вступили в силу:

sudo apachectl restart

Шаг шестой - настройка файла локальных хостов (необязательно)

Если вы использовали примерные домены вместо реальных доменов для тестирования этой процедуры, вы все равно можете проверить работоспособность ваших виртуальных хостов, временно изменив файл + hosts + на вашем локальном компьютере. Это будет перехватывать любые запросы для доменов, которые вы настроили, и направлять их на ваш VPS-сервер, как это делала бы система DNS, если вы использовали зарегистрированные домены. Это будет работать только с вашего компьютера, и просто полезно для тестирования.

  • Примечание: * Убедитесь, что вы выполняете эти шаги на локальном компьютере, а не на своем VPS-сервере. Вам понадобится доступ к административным учетным данным для этого компьютера.

Если вы работаете на компьютере Mac или Linux, отредактируйте локальный файл + hosts + с правами администратора, набрав:

sudo nano /etc/hosts

Если вы работаете на компьютере под управлением Windows, вы можете найти инструкции по изменению файла хоста here.

Детали, которые вам нужно добавить, это публичный IP-адрес вашего VPS, за которым следует домен, который вы хотите использовать для доступа к этому VPS:

127.0.0.1   localhost
127.0.1.1   guest-desktop

Это будет направлять любые запросы для ` и ` на наш локальный компьютер и отправлять их на наш сервер по адресу ++.

Шаг седьмой - проверь свои результаты

Теперь, когда у вас настроены виртуальные хосты, вы можете легко протестировать их, перейдя к доменам, которые вы настроили в веб-браузере:

http://

Вы должны увидеть страницу, которая выглядит следующим образом:

Изображение: https: //assets.digitalocean.com/articles/apache_virt_hosts_centos7/virtual_host_success.png [Success! Виртуальный хост example.com работает!]

Аналогично, если вы зайдете на другие свои домены, вы увидите файлы, которые вы создали для них.

Если все настроенные вами сайты работают нормально, вы успешно настроили свои новые виртуальные хосты Apache на том же сервере CentOS.

Если вы откорректировали файл + hosts на своем домашнем компьютере, вы можете удалить строки, которые вы добавили сейчас, когда вы убедились, что ваша конфигурация работает. Это предотвратит заполнение вашего файла hosts записями, которые на самом деле не нужны.

Заключение

Теперь у вас должен быть один сервер CentOS 7, который обрабатывает несколько сайтов с разными доменами. Вы можете расширить этот процесс, выполнив шаги, описанные выше, чтобы позже создать дополнительные виртуальные хосты. Не существует программного ограничения на количество доменных имен, которые может обрабатывать Apache, поэтому не стесняйтесь делать столько, сколько способен обработать ваш сервер.

Related