One place for hosting & domains

      хостов

      Настройка виртуальных хостов Apache в Ubuntu 18.04 [Краткое руководство]


      Введение

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

      Более подробную версию настоящего обучающего руководства с более подробным описанием каждого действия можно найти в статье Настройка виртуальных хостов Apache в Ubuntu 18.04.

      Предварительные требования

      Для выполнения этого обучающего руководства вам потребуется доступ к следующим компонентам на сервере Ubuntu 18.04:

      • Пользователь sudo на сервере
      • Веб-сервер Apache2, который можно установить с помощью команды sudo apt install apache2

      Шаг 1 — Создание структуры директорий

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

      • sudo mkdir -p /var/www/example.com/public_html
      • sudo mkdir -p /var/www/test.com/public_html

      Шаг 2 — Предоставление разрешений

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

      • sudo chown -R $USER:$USER /var/www/example.com/public_html
      • sudo chown -R $USER:$USER /var/www/test.com/public_html

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

      • sudo chmod -R 755 /var/www

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

      Давайте создадим содержимое для отображения, мы создадим демонстрационную страницу index.html для каждого сайта. Мы можем открыть файл index.html в текстовом редакторе для нашего первого сайта с помощью, например, nano.

      • nano /var/www/example.com/public_html/index.html

      В этом файле необходимо создать HTML-документ для конкретного домена, например, следующий:

      /var/www/example.com/public_html/index.html

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

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

      • cp /var/www/example.com/public_html/index.html /var/www/test.com/public_html/index.html

      Откройте файл и измените соответствующие части информации:

      • nano /var/www/test.com/public_html/index.html

      /var/www/test.com/public_html/index.html

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

      Сохраните и закройте этот файл.

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

      Apache имеет файл виртуального хоста с именем 000-default.conf, который мы будем использовать в качестве шаблона. Мы скопируем его, чтобы создать файл виртуального хоста для каждого из наших доменов.

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

      Скопируйте файл для первого домена:

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

      Откройте новый файл в вашем редакторе (ниже мы используем nano) с привилегиями root:

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

      Мы настроим данный файл для нашего собственного домена. Измените выделенный текст ниже согласно вашим собственным условиям.

      /etc/apache2/sites-available/example.com.conf

      <VirtualHost *:80>
          ServerAdmin admin@example.com
          ServerName example.com
          ServerAlias www.example.com
          DocumentRoot /var/www/example.com/public_html
          ErrorLog ${APACHE_LOG_DIR}/error.log
          CustomLog ${APACHE_LOG_DIR}/access.log combined
      </VirtualHost>
      

      Сохраните и закройте файл.

      Копирование первого виртуального хоста и настройка для второго домена

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

      Для начала скопируйте файл:

      • sudo cp /etc/apache2/sites-available/example.com.conf /etc/apache2/sites-available/test.com.conf

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

      • sudo nano /etc/apache2/sites-available/test.com.conf

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

      /etc/apache2/sites-available/test.com.conf

      <VirtualHost *:80>
          ServerAdmin admin@test.com
          ServerName test.com
          ServerAlias www.test.com
          DocumentRoot /var/www/test.com/public_html
          ErrorLog ${APACHE_LOG_DIR}/error.log
          CustomLog ${APACHE_LOG_DIR}/access.log combined
      </VirtualHost>
      

      Сохраните файл и закройте его после завершения.

      Шаг 5 — Активация новых файлов виртуального хоста

      После создания файлов виртуальных хостов мы должны активировать их. Для этой цели мы используем инструмент a2ensite.

      • sudo a2ensite example.com.conf
      • sudo a2ensite test.com.conf

      Отключите сайт по умолчанию, заданный в файле 000-default.conf:

      • sudo a2dissite 000-default.conf

      После завершения нужно перезапустить Apache для вступления изменений в силу и использовать команду systemctl status для подтверждения успешного перезапуска.

      • sudo systemctl restart apache2

      Теперь наш сервер должен быть настроен для обслуживания двух сайтов.

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

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

      Введите на локальном компьютере Mac или Linux следующую команду:

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

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

      /etc/hosts

      127.0.0.1   localhost
      127.0.1.1   guest-desktop
      your_server_IP example.com
      your_server_IP test.com
      

      Сохраните и закройте файл. При таких настройках все запросы доменов example.com и test.com на нашем компьютере будут перенаправляться на наш сервер.

      Шаг 7 — Проверка результатов

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

      http://example.com
      

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

      Пример виртуального хоста Apache

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

      http://test.com
      

      Тестирование виртуального хоста Apache

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

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

      Другие обучающие руководства

      Ниже представлены ссылки на более подробные материалы, связанные с настоящим обучающим руководством:



      Source link

      Настройка виртуальных хостов Apache в Ubuntu 18.04


      Введение

      Веб-сервер Apache — популярный способ размещения сайтов в Интернете. Согласно оценкам, в 2019 году на базе этого веб-сервера работали 29% всех активных сайтов. Он обеспечивает разработчикам преимущества гибкости и надежности. Используя Apache, администратор может настроить один сервер для хостинга нескольких доменов или сайтов через единый интерфейс или IP-адрес, используя систему сопоставления.

      Каждый домен или сайт («виртуальный хост»), настроенный с помощью Apache, направляет посетителя в определенную директорию, где хранятся данные этого сайта. При этом не показывается никаких признаков того, что этот же сервер обслуживает другие сайты. Эта схема поддерживает расширение без программных ограничений, пока сервер сможет выдерживать нагрузку. Базовая единица, описывающая отдельный сайт или домен, называется виртуальный хост.

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

      Предварительные требования

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

      Для выполнения этих шагов у вас должен быть установлен сервер Apache. Если вы еще не установили Apache, вы можете сделать это с помощью диспетчера пакетов apt:

      • sudo apt update
      • sudo apt install apache2

      Если вам требуются более подробные инструкции или информация по настройке брандмауэра, воспользуйтесь обучающим руководством Установка веб-сервера Apache в Ubuntu 18.04.

      Для целей настоящего руководства наша конфигурация предусматривает создание виртуального хоста для example.com и еще одного для test.com. В руководстве будут размещаться ссылки на них, однако вам следует использовать собственные домены или значения при выполнении указаний.

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

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

      Шаг 1 — Создание структуры директорий

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

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

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

      Например, мы будем создавать директории для наших сайтов следующим образом. Если вы используете реальные домены или альтернативные значения, замените выделенный текст соответствующим образом.

      • sudo mkdir -p /var/www/example.com/public_html
      • sudo mkdir -p /var/www/test.com/public_html

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

      Шаг 2 — Предоставление разрешений

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

      • sudo chown -R $USER:$USER /var/www/example.com/public_html
      • sudo chown -R $USER:$USER /var/www/test.com/public_html

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

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

      • sudo chmod -R 755 /var/www

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

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

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

      Для демонстрационных целей мы создадим страницу index.html для каждого сайта.

      Начнем с example.com. Мы можем открыть файл index.html в текстовом редакторе, в данном случае мы используем nano:

      • nano /var/www/example.com/public_html/index.html

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

      /var/www/example.com/public_html/index.html

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

      Сохраните и закройте файл (в nano нажмите CTRL + X, затем Y и ENTER) после завершения редактирования.

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

      • cp /var/www/example.com/public_html/index.html /var/www/test.com/public_html/index.html

      Затем мы можем открыть файл и изменить соответствующую информацию:

      • nano /var/www/test.com/public_html/index.html

      /var/www/test.com/public_html/index.html

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

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

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

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

      В Apache имеется файл виртуального хоста по умолчанию с именем 000-default.conf, который мы можем использовать в качестве исходной точки. Мы скопируем его для создания файла виртуального хоста для каждого из доменов.

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

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

      Скопируйте файл для первого домена:

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

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

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

      Без комментариев этот файл будет выглядеть примерно так:

      /etc/apache2/sites-available/example.com.conf

      <VirtualHost *:80>
          ServerAdmin webmaster@localhost
          DocumentRoot /var/www/html
          ErrorLog ${APACHE_LOG_DIR}/error.log
          CustomLog ${APACHE_LOG_DIR}/access.log combined
      </VirtualHost>
      

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

      Вначале нам нужно изменить директиву ServerAdmin на адрес электронной почты, доступный администратору сайта.

      ServerAdmin admin@example.com
      

      После этого нам нужно будет добавить две директивы. Директива ServerName задает базовый домен, который должен соответствовать этому определению виртуального хоста. Скорее всего, это будет ваш домен. Вторая директива под названием ServerAlias определяет дополнительные имена, которые должны соответствовать, как если бы они были базовыми. Это полезно для подстановки заданных вами хостов, таких как www:

      ServerName example.com
      ServerAlias www.example.com
      

      Помимо этого, в нашем файле виртуального хоста нужно изменить только расположение корневой директории документов для этого домена. Мы уже создали необходимую нам директорию, так что нам нужно изменить директиву DocumentRoot и указать созданную нами директорию:

      DocumentRoot /var/www/example.com/public_html
      

      После этого наш файл виртуального хоста должен выглядеть следующим образом:

      /etc/apache2/sites-available/example.com.conf

      <VirtualHost *:80>
          ServerAdmin admin@example.com
          ServerName example.com
          ServerAlias www.example.com
          DocumentRoot /var/www/example.com/public_html
          ErrorLog ${APACHE_LOG_DIR}/error.log
          CustomLog ${APACHE_LOG_DIR}/access.log combined
      </VirtualHost>
      

      Сохраните и закройте файл.

      Копирование первого виртуального хоста и настройка для второго домена

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

      Для начала скопируйте файл:

      • sudo cp /etc/apache2/sites-available/example.com.conf /etc/apache2/sites-available/test.com.conf

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

      • sudo nano /etc/apache2/sites-available/test.com.conf

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

      /etc/apache2/sites-available/test.com.conf

      <VirtualHost *:80>
          ServerAdmin admin@test.com
          ServerName test.com
          ServerAlias www.test.com
          DocumentRoot /var/www/test.com/public_html
          ErrorLog ${APACHE_LOG_DIR}/error.log
          CustomLog ${APACHE_LOG_DIR}/access.log combined
      </VirtualHost>
      

      Сохраните файл и закройте его после завершения.

      Шаг 5 — Активация новых файлов виртуального хоста

      Мы создали файлы виртуального хоста, и теперь их нужно активировать. В Apache имеются инструменты, с помощью которых это можно сделать.

      Мы используем инструмент a2ensite для активации каждого из наших сайтов. Дополнительную информацию об этом скрипте можно найти в документации по a2ensite.

      • sudo a2ensite example.com.conf
      • sudo a2ensite test.com.conf

      Отключите сайт по умолчанию, заданный в файле 000-default.conf:

      • sudo a2dissite 000-default.conf

      После завершения нужно перезапустить Apache для вступления изменений в силу и использовать команду systemctl status для подтверждения успешного перезапуска.

      • sudo systemctl restart apache2
      • sudo systemctl status apache2

      Теперь наш сервер должен быть настроен для обслуживания двух сайтов.

      Шаг 6 — Настройка локального файла hosts (необязательно)

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

      В результате этого изменения все запросы настроенных доменов будут перехватываться и перенаправляться на сервер VPS, как это делала бы система DNS, если бы мы использовали зарегистрированные домены. Это будет работать только на локальном компьютере и только для целей тестирования.

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

      Если вы используете компьютер под управлением Mac или Linux, отредактируйте локальный файл с привилегиями администратора, введя следующую команду:

      Если вы используете компьютер под управлением Windows, вы найдете указания по редактированию файла hosts здесь.

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

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

      /etc/hosts

      127.0.0.1   localhost
      127.0.1.1   guest-desktop
      your_server_IP example.com
      your_server_IP test.com
      

      Сохраните и закройте файл.

      При таких настройках все запросы доменов example.com и test.com на нашем компьютере будут перенаправляться на наш сервер. Так мы можем протестировать виртуальные хосты, хотя и не являемся владельцами этих доменов.

      Шаг 7 — Тестирование результатов

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

      http://example.com
      

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

      Пример виртуального хоста Apache

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

      http://test.com
      

      Тестирование виртуального хоста Apache

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

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

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

      Заключение

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

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



      Source link