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

Содержание

Настройка виртуальных хостов 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>
    <h2>Success! The example.com virtual host is working!</h2>
  </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> <h2>Success! The test.com virtual host is working!</h2>
  </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 [email protected]

После этого нам нужно будет добавить две директивы. Директива 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 [email protected]
    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 [email protected]
    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

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

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

http://test.com

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

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

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

Заключение

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

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

Настройка виртуальных хостов в Apache 2 ▷ Virtualhost Apache в Ubuntu, Linux, Debian

Если возникла необходимость размещения на Linux VPS сервере нескольких сайтов, то Apache для этих целей предоставляет возможность настройки виртуальных хостов (virtual hosts). Виртуальные хосты бывают двух видов: name-based virtual hosts, то есть привязанные к доменному имени, и IP-based virtual hosts, то есть привязанные к IP-адресу. Виртуальные хосты первого типа используют разные имена для одного IP-адреса, а второго типа – используют для каждого сайта отдельный IP-адрес. Создание виртуальных хостов в Apache необходимы, если на вашем сервере есть несколько сайтов, а их настройка необходима для корректного отображения всех сайтов.

Наиболее распространенным является использование виртуальных хостов на базе имен (name-based virtual hosts), привязанных к одному IP-адресу. Таким образом, можно хранить множество сайтов на одном IP.

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

В Red-Hat/CentOS/Fedora:

/etc/httpd/conf/httpd.conf 

Debian/Ubuntu:

/etc/apache2/apache2.conf

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

В Red-Hat/CentOS/Fedora:

/etc/httpd/conf.d/filename.conf, 

Debian/Ubuntu:

/etc/apache2/conf.d/filename.conf. 

Как правило, в конфигурационном файле httpd.conf или apache2.conf раздел управления виртуальными хостами располагается в самом конце. Для добавления виртуального хоста нужно будет открыть этот файл и раскомментировать в нём (убрать #) директиву NameVirtualHost *:80 (Аргумент * обозначает «все имена хостов»). Если будет использоваться способ размещения конфигурации в conf.d, то указанную директиву не нужно раскомментировать, а следует определить её в самом создаваемом файле.

После NameVirtualHost следует блок VirtualHost *:80. Подобные блоки и являются конфигурацией ваших виртуальных хостов. Выглядит это все примерно следующим образом:

NameVirtualHost *:80

<Directory var/www/>
AllowOverride All
Options All
</Directory>

<VirtualHost *:80>
    ServerAdmin [email protected]
    DocumentRoot /var/www/site1.ru
    ServerName site1.ru
    ServerAlias www.site1.ru
    ErrorLog logs/site1.ru-error_log
    CustomLog logs/site1.ru-access_log common
</VirtualHost>

<VirtualHost *:80>
    ServerAdmin [email protected]
    DocumentRoot /var/www/site2.ru
    ServerName site2.ru
    ServerAlias www.site2.ru	
    ErrorLog logs/site2.ru-error_log
    CustomLog logs/site2.ru-access_log common
</VirtualHost>


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

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

1. Директива ServerAdmin указывает электронный адрес администратора сервера, на который приходят все уведомления с хоста, касающиеся его администрирования.

2. Директива DocumentRoot указывает корневую директорию с файлами сайта, которые должны будут выдаваться веб-сервером клиенту (браузеру).

3. Директива Server Name определяет имя хоста, по запросу которого должны будут выдаваться файлы, расположенные в DocumentRoot.

4. Директива ServerAlias служит для задания альтернативных имен хоста (алиасов, псевдонимов), на которые он откликается.

5. Директива ErrorLog задает файлы протоколов ошибок для каждого хоста, а CustomLog – файлы протоколов для всего остального, кроме ошибок.

До блоков с виртуалхостами, как вы заметили, есть еще запись:

<Directory var/www/>
AllowOverride All
</Directory>

В тегах <Directory> </Directory> заключается перечень директив (параметров), которые будут применяться к конкретной директории, которая указывается в открывающем теге. В примере выше – это var/www/. Указанная директива AllowOverride указывает, использовать ли файлы .htaccess и если да, то какие глобальные директивы веб-сервера в можно переопределять в таких файлах. В представленном выше примере значение AllowOverride установленно в All, что разрешает обрабатывать файлы .htaccess и все указанные в нём директивы. Существуют и другие возможные значения:

AuthConfig – разрешает использовать директивы авторизации (AuthDBMGroupFile, AuthDBMUserFile, AuthGroupFile, AuthName, AuthType, AuthUserFile, require, и т.д..).

FileInfo – разрешает использовать директивы, управляющие типами документов (AddEncoding, AddLanguage, AddType, DefaultType, ErrorDocument, LanguagePriority, и т.д..).

Indexes — разрешает использовать директивы для управления индексацией каталогов (AddDescription, AddIcon, AddIconByEncoding, AddIconByType, DefaultIcon, DirectoryIndex, FancyIndexing, HeaderName, IndexIgnore, IndexOptions, ReadmeName, и т.д..).

Limit — разрешает использовать директивы управления доступом (allow, deny и order).

Options — разрешает использовать директивы, с помощью которых можно управлять специфическими особенностями каталога (Options и XBitHack).

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

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

apachectl configtest
apachectl -S
apachectl -d

Если получено сообщение “Syntax OK”, значит ошибок нет и можно перезагружать веб-сервер, чтобы применились изменения. Сделать это можно с помощью следующих команд:

Red-Hat/CentOS/Fedora:

service httpd restart

или

/etc/init.d/ httpd restart

Debian/Ubuntu:

service apache2 restart

или

/etc/init.d/apache2 restart

Далее вы можете столкнуться со следующей проблемой. При поступлении запроса Apache проходит по всему списку виртуальных хостов в поисках соответствующего, и, если не находит соответствия, выдает первый по порядку хост. Чтобы устранить данную неприятность, специалисты придумали так называемую секцию-заглушку, которую следует вставить перед первой секцией VirtualHost реального сайта. Выглядит она приблизительно следующим образом:

<VirtualHost *:80> 
   ServerName default
   DocumentRoot /var/www/default 
</VirtualHost> 

Таким образом, все неправильные запросы будут отсылаться по пути var/www/default, где можно создать индексную страницу, которая будет сообщать о неправильном запросе.

Также, Apache по умолчанию не имеет доступа к вашим домашним директориям, а только к директории /var/www. Если вы используете на своем сервере SElinux, то для предоставления Apache доступа к домашним директориям используйте следующие команды:

setsebool -P httpd_enable_homedirs 1

или

setsebool -P apache2_enable_homedirs 1

Для того чтобы Apache имел доступ к определенной директории, например, к /home/mydir следует использовать команду:

chcon -R -t httpd_sys_content_t /home/mydir

или

chcon -R -t apache2_sys_content_t /home/mydir

При отключенном SELinux для предоставления Apache доступа к той или иной домашней директории сайта, вам нужно будет вручную отредактировать его конфигурационный файл (/etc/httpd/conf/httpd.conf в CentOS/Fedora или /etc/apache2/apache2.conf в Debian/Ubuntu).

Открыв конфигурационный файл веб-сервера для редактирования, найдите строку DocumentRoot (при использовании редактора nano ее можно отыскать с помощью комбинации клавиш Ctrl+W). Замените значение в кавычках /var/www/html на абсолютный путь к домашней директории сайта (например, /home/username/site.com). Сохраните изменения и выйдите из меню редактора (Ctrl+O и Ctrl+X). Перезапустите Apache.

Если у вас на VPS установлена ОС Debian/Ubuntu, то править строку DocumentRoot необходимо в файле /etc/apache2/sites-available/default. Откройте его для редактирования и замените стандартное значение /var/www на абсолютный путь к домашней директории сайта. Выполните перезапуск веб-сервера.

На этом базовая настройка виртуальных хостов окончена.

 

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

Apache — это один из самых популярных веб-серверов для размещения сайтов на хостингах и VPS, а также для создания тестовых окружений. Если на вашем сервере один сайт, то все довольно просто, все запросы, поступающие к серверу, отправляется этот единственный сайт. А что если сайтов несколько? Как Apache будет понимать кому адресован запрос?

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

Содержание статьи:

Как работают виртуальные хосты Apache?

Не будем пока о локальных системах. Если у вас есть веб-сайт, то наверное, вы занимались парковкой домена и уже знаете как все настраивается. Сначала используется DNS сервер, который выдает IP адрес вашего сервера всем клиентам, запросившим адрес этого домена. Затем клиенты отправляют запрос на ip вашего сервера, а веб-сервер уже должен его обработать.

Обычно, на хостингах один веб-сервер обслуживает десятки, а то и сотни сайтов. И как вы понимаете, все запросы поступают на один ip. Для распределения их между папками на сервере используется имя домена, которое передается вместе с запросом в HTTP заголовке «Host». Именно поэтому нужно выполнять парковку домена не только на DNS сервисе, но и на вашем сервере.

Вы настраиваете виртуальные хосты Apache, а затем веб-сервер сравнивает домен, переданный в заголовке «Host» с доступными виртуальными доменами и если находит совпадение, то возвращает содержимое настроенной папки или содержимое по умолчанию, или ошибку 404. Нужно сказать, что вы можете настроить виртуальный хост для любого домена, например, vk.com или losst.ru. Но пользователи смогут получить доступ к этому домену у вас, только если к вам будут поступать запросы от браузеров, в которых будет значиться этот домен. А теперь детальнее про настройку.

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

Я уже подробно рассматривал как настроить Apache в отдельной статье. Поэтому не буду полностью расписывать здесь все конфигурационные файлы. Остановимся на файлах виртуальных хостов. Для удобства они вынесены в отдельные папки:

  • /etc/apache2/sites-available
  • /etc/apache2/sites-enabled

Ясно, что это разделение очень условно. Вы можете его убрать и добавлять свои виртуальные хосты прямо в основной конфигурационный файл. Все файлы из этих папок подключаются к нему с помощью директив Include. Но ведь так намного удобнее. В папке sites-available находятся все конфигурационные файлы, но они пока еще не активированы и отсюда не импортируются никуда. При активации нужного хоста на него просто создается ссылка в папку /etc/apache2/sites-enabled.

Для примера, создадим новый конфигурационный файл для виртуального хоста site1.ru. Для этого просто скопируем существующую конфигурацию для хоста по умолчанию — 000-default:

$ sudo cp /etc/apache2/sites-enabled/000-default.conf /etc/apache2/sites-enabled/site1.ru.conf

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

<VirtualHost адрес_хоста_для прослушивания:порт>
ServerName домен
ServerAlias псевдоним_домена
ServerAdmin емейл@администратора
DocumentRoot /путь/к/файлам/сайта
ErrorLog /куда/сохранять/логи/ошибок/error.log
CustomLog /куда/сохранять/логи/доступа/access.log combined
</VirtualHost>

Это минимальная конфигурация, которую вам нужно указать, чтобы создать виртуальный хост Apache. Конечно, здесь вы можете использовать и другие директивы Apache, такие как Deny, Allow и многие другие. А теперь рассмотрим наш пример для тестового сайта site1.ru:

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

Здесь мы используем звездочку вместо ip адреса, это значит, что веб-сервер будет слушать соединения на всех адресах, как на внешнем, так и на localhost. Порт 80, это порт по умолчанию. Затем указываем домен, электронный адрес администратора, и путь к папке, в которой будут находиться данные сайта. Две строчки Log говорят куда сохранять логи, но добавлять их необязательно. Дальше, нам нужно активировать этот хост. Мы можем вручную создать ссылку или использовать уже заготовленную команду:

sudo a2ensite site1.ru

Затем перезапустите Apache:

sudo systemctl restart apache2

И нам осталось все это протестировать. Если ваш сервер имен еще не направляет запросы к домену на ваш ip, а вы хотите уже проверить как все работает, можно пойти обходным путем. Для этого достаточно внести изменения в файл /etc/hosts на машине, с которой вы собрались открывать сайт. Этот файл, такой себе локальный DNS. Если компьютер находит ip для домена в нем, то запрос в интернет уже не отправляется. Если вы собираетесь тестировать с той же машины, на которую установлен Apache2, добавьте:

sudo vi /etc/hosts

127.0.0.1 site1.ru

Если же это будет другой компьютер, то вместо 127.0.0.1 нужно использовать адрес вашего сервера, на котором установлен Apache. Затем можете открыть сайт в браузере:

site1.ru

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

Если вы хотите использовать современный безопасный протокол https для работы вашего виртуального хоста, то вам кроме обычного хоста на порту 80 будет необходимо создать виртуальный хост на порту 443. Здесь будет не так много отличий, вот пример, для нашего сайта site1.ru:

<IfModule mod_ssl.c>
<VirtualHost *:443>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
ServerName site1.ru
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
SSLEngine on
SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem
SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key
<FilesMatch "\.(cgi|shtml|phtml|php)$">
SSLOptions +StdEnvVars
</FilesMatch>
</VirtualHost>
</IfModule>

Теперь о каждой новой строчке более подробно:

  • <IfModule mod_ssl.c> — весь код в этой секции будет выполнен только в том случае, если активирован модуль mod_ssl. Это нужно для безопасности, чтобы если модуль не активирован, то код не вызывал ошибок;
  • SSLEngine — включает поддержку SSL;
  • SSLCertificateFile, SSLCertificateKeyFile — пути к файлам сертификата и приватного ключа;
  • SSLOptions — для скриптов php, cgi и других мы передаем стандартные SSL опции.

Вот и все. Как видите, не так сложно. Осталось перезапустить Apache и проверить как все работает:

sudo a2enmod ssl
sudo a2ensite site1.ru-ssl
sudo systemctl restart apache2

Затем откройте https адрес в браузере:

https://site1.ru

 

Выводы

В этой статье мы рассмотрели как выполняется настройка виртуальных хостов Apache. Как видите, один веб-сервер может обслуживать сотни сайтов, а создание виртуальных хостов apache совсем не сложно. Надеюсь, эта статья была вам полезной. Если у вас остались вопросы, спрашивайте в комментариях!

Оцените статью:

Загрузка…

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

Данное руководство поможет вам увидеть то, как происходит настройка виртуальных хостов Apache на серверах Ubuntu 20.04.

Для начала необходимо произвести установку и первоначальную настройку Apache на вашем VPS.

Установка Apache

Apache можно установить из стандартных репозиториев Ubuntu, поэтому для запуска установки зарегистрируйтесь в системе учётной записью, входящей в группу sudo, и наберите в командной строке:

$ sudo apt update
$ sudo apt install apache2

Настройка межсетевого экрана

Перед запуском Apache следует произвести некоторые изменения в настройках брандмауэра на вашем сервере. В качестве упрощённого интерфейса для настройки межсетевого экрана в Ubuntu 20.04 как правило используется Uncomplicated Firewall или UFW.

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

$ sudo ufw app list

Чтобы разрешить доступ только трафику без шифрования, вам нужно открыть на UFW только порт 80 или профиль ‘Apache‘:

$ sudo ufw allow 'Apache'

Проверьте статус интерфейса UFW:

$ sudo ufw status

Если статус UFW – не активный, брандмауэр следует активировать:

$ sudo ufw enable

Проверка доступности веб-сервера

Сейчас проверьте статус Apache:

$ sudo systemctl status apache2

И теперь, если в браузере вы введёте IP-адрес вашего VPS, вы увидите стартовую страницу установленного веб-сервера:

Настройка хостов

И вот, настало время посмотреть, как непосредственно осуществляется настройка виртуальных хостов Apache в Ubuntu 20.04. В качестве домена используйте имя своего зарегистрированного сайта (в примере это – my-domain.host). Учитывая это, необходимо произвести следующие действия:

  • Создать каталог для вашего домена:
$ sudo mkdir /var/www/my-domain.host
  • Изменить владельца каталога:
$ sudo chown -R $USER:$USER /var/www/my-domain.host
  • Изменить права на каталог:
$ sudo chmod -R 755 /var/www/my-domain.host
  • Теперь создайте в этом каталоге файл index.html, например, с использованием nano:
$ sudo nano /var/www/my-domain.host/index.html
  • В index.html скопируйте следующий текст:
<html>
   <head>
      <title>My domain on Apache!</title>
   </head>
   <body>
      <h2>MY-DOMAIN.HOST</h2>
      <p>It is my domain.</p>
   </body>
</html>
  • Перед закрытием файла не забудьте сохранить внесённые изменения (если вы используете nano, нажмите Ctrl+X, Y и Enter).
  • Следующим действием необходимо создать файл конфигурации настраиваемого хоста:
$ sudo nano /etc/apache2/sites-available/my-domain.host.conf
  • Вставьте в него следующий текст (замените my-domain.host на имя своего домена, а в строку ServerAdmin введите доступный вам E-mail):
<VirtualHost *:80>
   ServerAdmin [email protected]
   ServerName my-domain.host
   ServerAlias www.my-domain.host
   DocumentRoot /var/www/my-domain.host
   ErrorLog ${APACHE_LOG_DIR}/error.log
   CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

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

$ sudo a2ensite my-domain.host.conf

А дефолтный домен нужно отключить:

$ sudo a2dissite 000-default.conf

Теперь необходимо протестировать синтаксис конфигурации хоста:

$ sudo apache2ctl configtest

Убедитесь, что ошибок нет:

Теперь произведите перезапуск Apache:

$ sudo systemctl restart apache2

И теперь, если в браузере вы введёте имя своего домена, браузер должен показать вам то, что вы сохранили в файле index.html:

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

Настройка virtualhost на apache2 | Все о WEB программировании Все о WEB программировании

Ромчик

1

Доброго времени суток дорогой читатель блога “WEB программирование от А до Я”. Сегодня мы немного отойдем от web программирования и поговорим об инструментах web разработчика. А точнее мы остановимся на virtualhost для apache2. Многие разработчики делают и поддерживают несколько проектов. Так, например, у меня есть проект на Joomla, другой проект на WordPress, а также есть несколько тестовых проектов на, которых я оттачиваю мастерство. И тут возникает вопрос: “А как на одной машине развернуть несколько хостов?” Дальше я постараюсь наиболее понятно ответить на данный вопрос.
Небольшое замечание на моей рабочей машине стоит операционная система Ubuntu, сервер apache2. Поэтому и настройки virtualhost я буду приводить для этой связки. Но разницы между конфигурацией virtualhost на ubuntu ни чем не будет отличаться от конфигурации virtualhost на Windows или какой либо другой операционной системы. Одно отличие это расположение конфигурационных файлов для virtualhost. А теперь давайте приступим…

Сразу хочу отметить, что apache2 у Вас уже установлен. В Ubuntu apache устанавливается из репозитория. Для Windows существуют пакеты Denver и XAMPP.
Теперь давайте разберемся с понятием virtualhost. Virtualhost — это размещение нескольких хостов на  одной машине.

Конфигурационные файлы apache2 в ubuntu находятся в /etc/apache2
Файл apache2.conf — это основной файл конфигурации.
А виртуальные хосты находятся в папке /etc/apache2/sites-available
Для каждого виртуального хоста в данной папке есть свой конфигурационный файл.
Но это актуально для ubuntu. Для других операционных систем настройки virtualhost содержаться в самом файле конфигурации apache2 apache2.conf в разделе <VirtualHost>.
Любое описание виртуального хоста начинается с <VirtualHost> и заканчивается </VirtualHost>.  Это обязательно!!!
Также virtualhost вы можете привязать к определенному ip-адресу и порту. Это делается следующим образом:



<VirtualHost <ip>:<port>>
настройка virtualhost
</VirtualHost>


или привязать один virtualhost к нескольким ip-адресам:


<VirtualHost <ip> <ip>:<port>>
настройка virtualhost
</VirtualHost>

Давайте приведем пример действующего virtualhost:


<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    ServerName kohana
    ServerAlias kohana
    DocumentRoot /var/www/kohana
    <Directory />
        Options FollowSymLinks
        AllowOverride All
    </Directory>
    <Directory /var/www/kohana>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride All
        Order allow,deny
        allow from all
    </Directory>

    ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
    <Directory "/usr/lib/cgi-bin">
        AllowOverride None
        Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
        Order allow,deny
        Allow from all
    </Directory>

    ErrorLog /var/www/kohana/error.log

    # Possible values include: debug, info, notice, warn, error, crit,
    # alert, emerg.
    LogLevel warn

    CustomLog /var/www/kohana/access.log combined

Alias /doc/ "/usr/share/doc/"
<Directory "/usr/share/doc/">
        Options Indexes MultiViews FollowSymLinks
        AllowOverride None
        Order deny,allow
        Deny from all
        Allow from 127.0.0.0/255.0.0.0 ::1/128
</Directory>

</VirtualHost>

И разберем каждую строчку:

  1. <VirtualHost *:80> — этот тег обозначает, что дальше будут следовать настройки виртуального хоста. Виртуальный хост будет срабатывать при обращении на любой адрес по порту 80.
  2. ServerAdmin — директива содержит e-mail адрес администратора данного хоста и будет показываться в сообщениях об ошибке. В нашем случае — это webmaster@localhost
  3. ServerName — эта директива определяет имя хоста и порт, по которому сервер идентифицирует себя. Это необходимо при создании URL. Так, например, у Вас есть хост first.example.com, а сервер имеет еще название www.example.com и Вы хотите, чтоб веб-сервер определял Ваш хост и по этому имени, тогда в этой директиве должны прописать ServerName www.example.com
  4. ServerAlias — данная директива устанавливает альтернативные имена хостов.
  5. DocumentRoot — директива устанавливает каталог, где находятся файлы для обработки apache2. Т.е. в данном каталоге хранятся Ваши файлы сайта.
  6. <Directory /> в данной директиве мы можем прописать различные правила для каталога. Данная директива обязательна должна закрываться тегом </Directory>. Так например, мы прописываем правила для каталога home:

<Directory /home/>
AllowOverride FileInfo
</Directory>

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

  • AllowOverride данный параметр может содержать следующие значения: None — тогда файл .htaccess будет полностью игнорироваться, All — тогда в .htaccess допускаются все директории.
  • Options — устанавливает особенности сервера для данного каталога. Может принимать следующие значения: None — тогда ни одна из опций не допускается, All — допускаются все опции кроме MultiViews, ExecCGI — разрешает выполнение CGI скриптов, FollowSymLinks  -сервер будет следовать за символическими связями, Includes — разрешается Server-Site-Includes (SSI), IncludesNOEXEC — разрешается SSI, но запрещается комманды #exec и #include CGI скриптов, Indexes — если по ссылке в каталоге ничего не найдено, то сервер возвратит содержание каталога, MultiViews — разрешает MultiViews (действие MultiViews заключается в следующем пользователь в адресной строке набирает <каталог_1>/<каталог_2> и если вдруг <каталог_2> не существует, то сервер ищет в <каталог_1> файл <каталог_2>.*), SymLinksIfOwnerMatch — сервер будет следовать только тем символическим связям, для которых целевой файл или каталог имеют тот же идентификатор пользователя что и связь.
  • Order — данной директивой мы устанавливаем порядок проверки, т.е. в начале проверяем на запрет и если все у нас проходит, то разрешаем
  • Deny — в данной директиве мы указываем доступ к серверу на основе хоста или ip-адреса. В данной директиве мы перечисляем запрещенные хосты
  • allow — в данной директиве мы указываем доступ к серверу, перечисляем разрешенные хосты.
  1. ErrorLog — в данной директиве мы указываем путь к файлу логов.
  2. LogLevel — в данной директиве мы указываем уровень сообщений, которые будут записываться в лог-файл. Существуют следующие уровни:
  • emerg — чрезвычайные ситуации — система непригодна для использования.
  • alert  — действий должны быть приняты немедленно.
  • crit — критическое условие.
  • error — возникновение ошибки.
  • warn — предупреждения.
  • notice — нормальное состояние.
  • info — информация.
  • debug — debug сообщения
  1. CustomLog — директива в которой указываем путь к файлу логов, где регистрируются запросы к серверу.

Фуф, с файлом конфигурации для virtualhost мы разобрались.
Теперь давайте создадим виртуальный хост. Для этого в Ubuntu в папке /etc/apache2/sites-available/ создаем файл с названием нашего хоста например test. И помещаем туда следующий код:


<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    ServerName test
    ServerAlias test
    DocumentRoot /var/www/test
    <Directory />
        Options FollowSymLinks
        AllowOverride All
    </Directory>
    <Directory /var/www/test>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride All
        Order allow,deny
        allow from all
    </Directory>

    ScriptAlias /cgi-bin/usr/lib/cgi-bin/
    <Directory "/usr/lib/cgi-bin">
        AllowOverride None
        Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
        Order allow,deny
        Allow from all
    </Directory>

    ErrorLog /var/www/test/error.log

    # Possible values include: debug, info, notice, warn, error, crit,
    # alert, emerg.
    LogLevel warn

    CustomLog /var/www/test/access.log combined

Alias /doc/ "/usr/share/doc/"
<Directory "/usr/share/doc/">
        Options Indexes MultiViews FollowSymLinks
        AllowOverride None
        Order deny,allow
        Deny from all
        Allow from 127.0.0.0/255.0.0.0 ::1/128
</Directory>

</VirtualHost>

Теперь в папке /var/www/ создаем папку test (тут и будут находиться файлы нашего virtualhost)
Кофигурацию для нашего хоста мы создали. Осталось включить этот виртуальный хост. Для этого вводим команду:


sudo a2ensite test

Перезагрузить сам apache:


sudo /etc/init.d apache2 restart

И все наш virtualhost работает.
Давайте в файле /etc/hosts добавим строку 127.0.0.1    test
Теперь введя в браузере адрес test мы попадаем на virtualhost на нашем локальном сервере.
На этом настройка virtualhost на apache2 завершена. Если у Вас появились вопросы, то пишите в комментариях я обязательно на них отвечу.
И не забывайте следить за обновлениями на моем блоге, подписавшись на RSS-рассылку.

Понравилась статья? Поделись с друзьями.

Apache2 настройка виртуального хоста — Вэб-шпаргалка для интернет предпринимателей!

Apache — это один из самых популярных веб-серверов для размещения сайтов на хостингах и VPS, а также для создания тестовых окружений. Если на вашем сервере один сайт, то все довольно просто, все запросы, поступающие к серверу, отправляется этот единственный сайт. А что если сайтов несколько? Как Apache будет понимать кому адресован запрос?

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

Как работают виртуальные хосты Apache?

Не будем пока о локальных системах. Если у вас есть веб-сайт, то наверное, вы занимались парковкой домена и уже знаете как все настраивается. Сначала используется DNS сервер, который выдает IP адрес вашего сервера всем клиентам, запросившим адрес этого домена. Затем клиенты отправляют запрос на ip вашего сервера, а веб-сервер уже должен его обработать.

Обычно, на хостингах один веб-сервер обслуживает десятки, а то и сотни сайтов. И как вы понимаете, все запросы поступают на один ip. Для распределения их между папками на сервере используется имя домена, которое передается вместе с запросом в HTTP заголовке «Host». Именно поэтому нужно выполнять парковку домена не только на DNS сервисе, но и на вашем сервере.

Вы настраиваете виртуальные хосты Apache, а затем веб-сервер сравнивает домен, переданный в заголовке «Host» с доступными виртуальными доменами и если находит совпадение, то возвращает содержимое настроенной папки или содержимое по умолчанию, или ошибку 404. Нужно сказать, что вы можете настроить виртуальный хост для любого домена, например, vk.com или losst.ru. Но пользователи смогут получить доступ к этому домену у вас, только если к вам будут поступать запросы от браузеров, в которых будет значиться этот домен. А теперь детальнее про настройку.

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

Я уже подробно рассматривал как настроить Apache в отдельной статье. Поэтому не буду полностью расписывать здесь все конфигурационные файлы. Остановимся на файлах виртуальных хостов. Для удобства они вынесены в отдельные папки:

Ясно, что это разделение очень условно. Вы можете его убрать и добавлять свои виртуальные хосты прямо в основной конфигурационный файл. Все файлы из этих папок подключаются к нему с помощью директив Include. Но ведь так намного удобнее. В папке sites-available находятся все конфигурационные файлы, но они пока еще не активированы и отсюда не импортируются никуда. При активации нужного хоста на него просто создается ссылка в папку /etc/apache2/sites-enabled.

Для примера, создадим новый конфигурационный файл для виртуального хоста site1.ru. Для этого просто скопируем существующую конфигурацию для хоста по умолчанию — 000-default:

$ sudo cp /etc/apache2/sites-enabled/000-default.conf /etc/apache2/sites-enabled/site1.ru.conf

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

адрес_хоста_для прослушивания : порт >
ServerName домен
ServerAlias псевдоним_домена
ServerAdmin емейл@администратора
DocumentRoot /путь/к/файлам/сайта
ErrorLog /куда/сохранять/логи/ошибок/error.log
CustomLog /куда/сохранять/логи/доступа/access.log combined

Это минимальная конфигурация, которую вам нужно указать, чтобы создать виртуальный хост Apache. Конечно, здесь вы можете использовать и другие директивы Apache, такие как Deny, Allow и многие другие. А теперь рассмотрим наш пример для тестового сайта site1.ru:

ServerName site1.ru
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html/site1.ru/
ErrorLog $/error.log
CustomLog $/access.log combined

Здесь мы используем звездочку вместо ip адреса, это значит, что веб-сервер будет слушать соединения на всех адресах, как на внешнем, так и на localhost. Порт 80, это порт по умолчанию. Затем указываем домен, электронный адрес администратора, и путь к папке, в которой будут находиться данные сайта. Две строчки Log говорят куда сохранять логи, но добавлять их необязательно. Дальше, нам нужно активировать этот хост. Мы можем вручную создать ссылку или использовать уже заготовленную команду:

sudo a2ensite site1.ru

Затем перезапустите Apache:

sudo systemctl restart apache2

И нам осталось все это протестировать. Если ваш сервер имен еще не направляет запросы к домену на ваш ip, а вы хотите уже проверить как все работает, можно пойти обходным путем. Для этого достаточно внести изменения в файл /etc/hosts на машине, с которой вы собрались открывать сайт. Этот файл, такой себе локальный DNS. Если компьютер находит ip для домена в нем, то запрос в интернет уже не отправляется. Если вы собираетесь тестировать с той же машины, на которую установлен Apache2, добавьте:

sudo vi /etc/hosts

Если же это будет другой компьютер, то вместо 127.0.0.1 нужно использовать адрес вашего сервера, на котором установлен Apache. Затем можете открыть сайт в браузере:

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

Если вы хотите использовать современный безопасный протокол https для работы вашего виртуального хоста, то вам кроме обычного хоста на порту 80 будет необходимо создать виртуальный хост на порту 443. Здесь будет не так много отличий, вот пример, для нашего сайта site1.ru:

ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
ServerName site1.ru
ErrorLog $/error.log
CustomLog $/access.log combined
SSLEngine on
SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem
SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key

SSLOptions +StdEnvVars

Теперь о каждой новой строчке более подробно:

  • — весь код в этой секции будет выполнен только в том случае, если активирован модуль mod_ssl. Это нужно для безопасности, чтобы если модуль не активирован, то код не вызывал ошибок;
  • SSLEngine — включает поддержку SSL;
  • SSLCertificateFile, SSLCertificateKeyFile — пути к файлам сертификата и приватного ключа;
  • SSLOptions — для скриптов php, cgi и других мы передаем стандартные SSL опции.

Вот и все. Как видите, не так сложно. Осталось перезапустить Apache и проверить как все работает:

sudo a2enmod ssl
sudo a2ensite site1.ru-ssl
sudo systemctl restart apache2

Затем откройте https адрес в браузере:

Выводы

В этой статье мы рассмотрели как выполняется настройка виртуальных хостов Apache. Как видите, один веб-сервер может обслуживать сотни сайтов, а создание виртуальных хостов apache совсем не сложно. Надеюсь, эта статья была вам полезной. Если у вас остались вопросы, спрашивайте в комментариях!

В прошлых статьях мы установили и настроили на локальном компьютере сервер Apache. В принципе, на этом можно было бы остановиться, так как сервер находится в рабочем состоянии и его можно спокойно использовать в работе. Но, по личному опыту, могу сказать, что использование только одного хоста localhost не очень удобно при разработке нескольких сайтов, так как для каждого сайта нужно будет создавать в каталоге localhost отдельный каталог и со временем в ней (папке localhost) будет очень трудно разобраться и что-то найти. Да и при тестировании разрабатываемого проекта гораздо удобнее набирать в браузере адрес вида test, чем localhost/test. Поэтому мы приступаем к настройке виртуальных хостов на локальном сервере.

Вообще, существует два способа конфигурирования виртуальных хостов: на основе имени и на основе IP-адреса. Но, так как мы настраиваем локальный сервер и у нас только один IP (кстати, для локалки он 127.0.0.1), то вариант с привязкой к IP нам не подходит и мы будем рассматривать вариант с привязкой к имени.

В прошлой статье я уже упоминал, что в файле конфигурации httpd.conf сервера есть строчка Include conf/extra/httpd-vhosts.conf. Мы ее уже раскомментировали, поэтому собственно и переходим к этому файлу. Найти его можно в папке Apache/conf/extra/.

Начнем рассматривать содержимое файла.
Первая директива – это NameVirtualHost *:80 привязывает виртуальные хосты, указываемы далее, к именам сайтов указанных в секциях . Здесь вместо звездочки можно вписать IP 127.0.0.1, но тогда во всех секциях нужно будет указать то же самый IP. Принцип работы этой директивы заключается в том, что при обращении, допустим, к адресу localhost, сервер проверяет, соответствует ли входящий адрес и порт, описанным в секциях VirtualHost и имеется ли запись 127.0.0.1:80 в директиве NameVirtualHost. Если соответствует, то он перебирает секции VirtualHost, в заголовках которых указан входящий адрес. Таким образом, запрос 127.0.0.1:80 будет распределяться только между виртуальными хостами, в которых он указан.

Дальше в файле идут секции VirtualHost. Как видно из названия, каждая секция описывает настройки каждого виртуального хоста. Обязательно должна быть хотя бы одна такая секция, которая описывает настройки для localhost.

DocumentRoot “D:/server/localhost/www”
ServerName localhost
ErrorLog “D:/server/logs/localhost.error.log”
CustomLog “D:/server/logs/localhost.access.log” common

Директива DocumentRoot в этой секции указывает на папку, к которой будет происходить обращение при вызове адреса localhost.
ServerName как раз содержит имя нашего виртуального хоста, то есть его адрес. Сюда можно вписывать как адреса вида localhost, test, site, так и адреса localhost.ru, test.com, www.site.org.
В ErrorLog и CustomLog мы указываем, где будут хранится логи этого виртуального хоста. Обратите внимание, имеет смысл для каждого хоста добавлять в имя файла лога название этого хоста, чтобы в будущем было легко найти лог требуемого хоста. Эти директивы можно и не указывать, но тогда логи этого виртуального хоста будут храниться в общих логах сервера.

В таком виде секция виртуального хоста уже работоспособна и на этом можно остановиться. Но можно добавить такие директивы как:

  • ServerAdmin[email protected] – адрес электронки администратора виртуального хоста
  • ServerAlias www.site.ru – зеркало хоста

Кроме того, можно добавить секции для индивидуальной настройки хоста:

ScriptAlias /cgi-bin/ “d:/server/host_name/cgi-bin”

Создает ссылку на папку скриптов cgi-bin для хоста host_name.

Options Indexes Includes FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all

Настройки директории хоста host_name, их мы разбирали в прошлой статье.

После настройки файла httpd-vhosts.conf проверим правильность его конфигурации. В каталоге D:serverApachebin создайте файл httpd-S.cmd с содержимым:
“D:serverApacheinhttpd.exe” –S
pause

После запуска этого файла вы увидите окно с отчетом о проверке, Syntax OK в конце говорит о том, что все настройки в порядке.

Теперь нужно прописать созданные хосты в файл C:Windowssystem32driversetchosts. Для этого открываем его текстовым редактором и вносим следующие записи:

127.0.0.1 www.host1.ru host1.ru #Чтобы не набирать www перед именем сайта, создаем зеркало
127.0.0.1 www.host2 host2 #Можно и без .ru создавать хосты
127.0.0.1 host3 #Самый распространенный вариант для локалки
127.0.0.1 localhost # Обычно уже указано, проследите чтобы случайно не удалили и не закомментировали.

Сохраните файл и перезапустите Apache. Попробуйте разместить в каталогах созданных вами виртуальных хостов какие-нибудь тестовые файлы (например index.html) и из браузера открыть хосты по адресам, указанным в директории ServerName каждого хоста.

Если вам приходится часто создавать виртуальные хосты и не очень хочется каждый раз редактировать все эти файлы и перезапускать Apache вручную, создайте в папке сервера (D:server) файл createVH.cmd с таким содержимым:

@cls
@rem Получаем текущую папку. Если у вас структура папок сервера как у меня, но он установлен, например на другом диске, укажите здесь вместо %

dp0 путь с нему (например, D:server) косая черта в конце обязательна.
@set server_path=%

dp0
:dir_exist
@set /P new_dir=»Enter new VHost name:»
@set /P ip_add=»Enter your IP address:»
@ if exist %server_path%%new_dir% echo «VHost %new_dir% already exist. >> %htmlfile%
@rem Здесь путь до самого сервера, если у вас другой, поменяйте
@start %server_path%Apacheinhttpd.exe -k restart

Теперь для создания хоста просто запустите этот файл, впишите в ответ имя нового хоста и IP, который будет указываться в секции VirtualHost файла httpd-vhosts.conf. По окончанию работы программа сама закроется. Вам останется только проверить созданный хост, набрав в адресной строке браузера имя, которое вы вписали в программу. Если все успешно прошло, то вы увидите страницу с именем нового хоста.

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

Данная статья не подлежит комментированию, поскольку её автор ещё не является полноправным участником сообщества. Вы сможете связаться с автором только после того, как он получит приглашение от кого-либо из участников сообщества. До этого момента его username будет скрыт псевдонимом.

Каждый владелец VPS сталкивается с вопросом, как разместить несколько сайтов на одном сервере с одним IP-адресом. Если вы используете в качестве веб-сервера Apache,виртуальные хосты (virtual hosts) — верное решение для разделения ресурсов и отдельной конфигурации для каждого сайта.

Предварительная настройка

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

Создание пользователя

По умолчанию после создания сервера для доступа к нему создаётся root пользователь. В целях безопасности не рекомендуем работать под суперюзером.

Чтобы создать пользователя, введите команду:

Где UserName — имя нового пользователя.

Система попросит ввести пароль для нового пользователя и дополнительную информацию:

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

Где UserName — имя созданного ранее пользователя.

Готово. Новый пользователь создан. Завершите SSH-сеанс под root и подключитесь к серверу под новым пользователем.

Установка Ubuntu Apache

Чтобы выполнить действия ниже, у вас должен быть установлен Apache. Для полноценной работы сайта рекомендуем установить LAMP (Linux Apache MySQL PHP). Это минимальный набор ПО, который чаще всего используется для размещения и запуска сайта. Как установить LAMP, вы можете узнать в инструкции.

Подготовка доменов

Ваши домены должны быть привязаны к облачному серверу. Сделать это вы можете по инструкции.

В данной инструкции будут приведены примеры с доменами faq-reg.ru и support-faq.ru. В тех местах, где они будут встречаться, измените домены на свои.

Подготовка каталогов

Подготовим структуру каталогов. Рабочая директория Apache — /var/www. В данной директории мы будем создавать отдельные каталоги для каждого домена (виртуального хоста).

Чтобы создать каталоги, выполните команды:

В этих каталогах будут храниться файлы вашего сайта. Далее необходимо установить права доступа к ним:

Готово. Структура каталогов и права доступа настроены. Далее подготовим демостраницы.

Создание демостраниц

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

Не забудьте заменить доменные имена на ваши.

Готово. Теперь после настройки виртуальных хостов мы сможем проверить корректность их работы.

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

Файл конфигурации Ubuntu Apache virtual hosts отвечает за обработку запросов к разным доменам. У Apache существует дефолтный файл 000-default.conf, который можно использовать в качестве шаблона. Для каждого виртуального хоста необходимо будет скопировать его, задать произвольное имя (рекомендуем использовать имя домена) и произвести определённые настройки. Обязательное условие — соблюдение расширения файла: .conf

Создание конфига для faq-reg.ru

Скопируйте шаблон конфига для первого домена с помощью команды:

Откройте созданный файл командой:

В файле присутствует секция VirtualHost для обработки запросов на 80 порт (порт для HTTP-запросов). Измените следующие строки:

Вместо webmaster@localhost укажите электронный адрес администратора, вместо /var/www/html укажите каталог домена, который мы создали на этапе подготовки, в нашем случае это /var/www/faq-reg.ru/

Затем добавьте ещё две строки:

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

Настройка виртуального хоста для первого домена завершена. Скопируйте этот файл для второго домена с помощью команды:

Не забудьте изменить faq-reg.ru.conf и support-faq.ru.conf на имена ваших доменов.

Откройте файл для редактирования:

Измените DocumentRoot, ServerName и ServerAlias в соответствии с данными для второго домена и сохраните изменения:

Деактивируйте конфиг по умолчанию командой:

И активируйте созданные конфиги:

Перезапустите Apache командой:

Готово. Создание и настройка виртуальных хостов завершена. Далее можем проверить результат.

Проверка работы виртуальных хостов

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

Если с момента изменения DNS прошло менее 24 часов и домен ещё не делегирован, увидеть результат вы можете, настроив локальные хосты в файле hosts. Подробнее в инструкции.

Рекомендуем к прочтению

Настройка virtualhost в apache2 как сделать виртуальный хост

Для настройки виртуальных хостов на web сервере apache2 под ubuntu 7.10, 8.04, 8.10, 9.04, 9.10, Debian 5 необходимо в самое начало или конец (вне инструкций ) файла /etc/apache2/sites-available/default добавить директиву:

NameVirtualHost 192.168.0.1

Там необходимо указать IP адрес либо DNS имя компютера на котором размещён вебсервер, можно указать localhost или 127.0.0.1

Затем, учитывая организацию конфигов apache2 в Debian, необходимо создать файл виртуального хоста в директории: /etc/apache2/sites-available/
например ваш сайт называется supebreys.ru, значит логичнее создать чтото вроде /etc/apache2/sites-available/supebreys_ru.conf. В любом случае это название должно вам говорить для чего этот файл и будет лучше если вы будете придерживаться какого то одного правила создания таких файлов. Затем в этот файл добавляем такой текст:

<VirtualHost *:80>
        DocumentRoot "/home/httpd/breys.ru/www"
        ServerName    breys.xxx
        <Directory />
                allow from all
                Options +Indexes
       </Directory>
        ScriptAlias /cgi-bin/ "/home/httpd/breys.ru/cgi-bin/"
        CustomLog  /home/httpd/breys.ru/access.log common
        ErrorLog /home/httpd/breys.ru/error.log
</VirtualHost>

Здесь мы создали виртуальный хост которых будет обрабатывать запросы на 80 порту с любого доступного адреса

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

Для корневой директори указаны дополнительные(необязательные) опции: разрешение доступа с любого адреса и включение модуля обработки индексного файла, в принципе эти опции не обязательны и нужны только если прихоится переопределять глобальные политики доступа и загрузки модулей вебсервером

После создания этого файла веб сервер ещё не видит его. Если внимательно посмотреть на файлы в директориях /etc/apache2/sites-enabled/ и /etc/apache2/sites-available/ то должно стать ясно, то что в директории /etc/apache2/sites-available лежат файлы описывающие виртуальные хосты, а в папке/etc/apache2/sites-enabled/ лежат симлинки на файлы в sites-available.  Исходя из названий становится ясно, что:
sites-available — все доступные виртуальных хосты
sites-enabled — включаемые вебсервером
то есть, чтобы добавить виртульный хост в apache2, необходимо либо создать файл нового виртуального хоста в sites-available либо дописать(не желательно) его в уже имеющийся там файл, а чтобы включить виртуальный хост, необходимо чтобы директории sites-enabled была ссылка на файл описывающий виртуальных хост

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

Итак, включаем наш, только что созданный, новых виртуальный хост:

ln -s /etc/apache2/sites-available/breys_ru.conf /etc/apache2/sites-enabled/breys_ru.conf

Этой командой мы создаём симлинк(символическую ссылку на один файл в другой директории) на рабочий файл виртуального хоста, который будет обработан при следующем перезапуске вебсервера

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

Например, у меня имеются зеркала моих сайтов и я работаю с ними дома используя имена сайтов + моя домашняя зона .xxx, тоесть для сайта breys.ru у меня есть домашнее зеркало breys.xxx, но вполне вероятна ситуация когда нужно показать зеракло ещё кому то, тогда я могу использовать DNS зону зарегистрированную за мной на DYNDNS.COM, тоесть это зеркало имеет дополнительный адрес в виде:breys.ffsdmad.homelinux.org, ещё более частая ситуация когда нужно иметь имя www.breys.ru и соответственноwww.breys.ffsdmad.homelinux.org
Чтобы включить этого необходимо в файл виртального хоста, внутри инструкций .. добавить список необходимых алиасов:

<VirtualHost *:80>
....другие инструкции
 ServerName breys.xxx
 ....
 ServerAlias www.breys.xxx
 ServerAlias breys.ffsdmad.homelinux.org
 ServerAlias www.breys.ffsdmad.homelinux.org
 ....
</VirtualHost>

Вполне возможно придётся заниматься отладкой модуля mod_rewrite, для этого необходимо в файл виртуального хоста добавить строки:

<VirtualHost *:80>
....другие инструкции
RewriteLog /home/httpd/breys.ru/rewrite.log
RewriteLogLevel 9
</VirtualHost>

Начните с небольшого примера и постепенно расширяйте возможности своего виртуального хостинга различными возможностями вебсервера apache2 (а их у него предостаточно) и постепенно вы поймёте насколько проста и логична такая структура в условиях такого сложного сервиса как вебхостинг

Также следует заметить, что если вы поставили на локальную машину сервер apache2 и виртуальные хосты прописаны в /etc/hosts (соответствия имени ip адресу), то начинаются тормоза при обращении к вебсерверу. Дело в том, что браузер сначала пытается распознать ip адрсе у dns сервера, который у вас прописан в /etc/resov.conf, а не проверять файл /etc/hosts. Это можно исправить заменив в файле /etc/host.conf последовательность перебора сервисов разрешения имён, но лучше всего настроить bind и забыть про тормоза и проблемы с обратным разрешением имени по IP

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

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

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

 

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

В этой статье используется Ubuntu 16.04.

Срок службы этого дистрибутива подошел к концу (EOL) в апреле 2021 года. Ubuntu 16.04

Введение

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

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

Эти обозначения позволяют администратору использовать один сервер для размещения нескольких доменов или сайтов за пределами одного интерфейса или IP с помощью механизма сопоставления. Это актуально для всех, кто хочет разместить более одного сайта на одном VPS.

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

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

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

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

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

.
  
  • sudo apt-get update
  • sudo apt-get install apache2

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

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

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

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

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

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

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

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

Например, для наших сайтов мы собираемся сделать наши каталоги так:

  
  • sudo mkdir -p / var / www / example.com / public_html
  • судо mkdir -p /var/www/test.com/public_html

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

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

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

  
  • sudo chown -R $ USER: $ USER / var / www / example.com / public_html
  • sudo chown -R $ ПОЛЬЗОВАТЕЛЬ: $ ПОЛЬЗОВАТЕЛЬ /var/www/test.com/public_html

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

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

  
  • судо chmod -R 755 / var / www

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

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

У нас есть структура каталогов. Давайте создадим контент для обслуживания.

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

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

  
  • нано / var / www / example.ru / public_html / index.html

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

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

  
  
     Добро пожаловать на Example.com! 
  
  
     

Успех! Виртуальный хост example.com работает!

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

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

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

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

  
  • нано /var/www/test.com/public_html/index.html

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

  
  
     Добро пожаловать в Test.com! 
  
    

Успех! Виртуальный хост test.com работает!

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

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

Файлы виртуальных хостов - это файлы, которые определяют фактическую конфигурацию наших виртуальных хостов и определяют, как веб-сервер 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

  
    ServerAdmin веб-мастер @ localhost
    DocumentRoot / var / www / html
    ErrorLog $ {APACHE_LOG_DIR} / error.бревно
    CustomLog $ {APACHE_LOG_DIR} /access.log объединены

  

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

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

  ServerAdmin admin @ пример.ком
  

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

  ServerName example.com
ServerAlias ​​www.example.ком
  

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

  DocumentRoot /var/www/example.com/public_html
  

В итоге наш файл виртуального хоста должен выглядеть так:

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

  
    ServerAdmin admin @ example.ком
    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 объединены

  

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

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

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

Начните с копирования:

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

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

  
  • судо нано /etc/apache2/sites-available/test.com.conf

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

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

  
    ServerAdmin admin @ test.ком
    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 объединены

  

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

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

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

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

  
  • Пример sudo a2ensite.com.conf
  • sudo a2ensite test.com.conf

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

  
  • sudo a2dissite 000-default.conf

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

  
  • sudo systemctl перезапустить apache2

В другой документации вы также можете увидеть пример с использованием команды service :

  
  • sudo service apache2 перезапуск

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

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

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

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

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

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

  

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

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

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

/ etc / hosts

  127.0.0.1 локальный хост
127.0.1.1 гостевой рабочий стол
111.111.111.111 example.com
111.111.111.111 test.com
  

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

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

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

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

  http: // example.ком
  

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

Аналогично, если вы можете посетить вторую страницу:

  http://test.com
  

Вы увидите файл, который вы создали для своего второго сайта:

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

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

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

Заключение

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

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

Примеры

VirtualHost - HTTP-сервер Apache версии 2.4

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

См. Также

Ваш сервер имеет несколько имен хостов, которые разрешаются в один адрес, и вы хотите по-другому ответить для www.example.com и www.example.org .

Note

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

 # Убедитесь, что Apache прослушивает порт 80
Слушай 80

    DocumentRoot "/ www / example1"
    ServerName www.example.com

    # Другие директивы здесь



    DocumentRoot "/ www / example2"
    ServerName www.example.org

    # Другие директивы здесь
 

Звездочки соответствуют всем адресам, поэтому главный сервер не обслуживает Запросы. В связи с тем, что виртуальный хост с ServerName www.example.com - первый в файле конфигурации он имеет наивысший приоритет и его можно увидеть как по умолчанию или основной сервер . Это означает что если получен запрос, который не соответствует ни одному из указанных ServerName , он будет обслуживаться этим первым <виртуальный хост> .

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

Примечание

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

Однако дополнительно полезно использовать * в системах, где IP-адрес непредсказуем - для например, если у вас есть динамический IP-адрес у вашего интернет-провайдера, и вы используете несколько разновидностей динамического DNS-решения.С * соответствует любому IP-адресу, эта конфигурация будет работать без изменений всякий раз, когда ваш IP-адрес изменения.

Примечание

Любой из обсуждаемых здесь методов может быть распространен на любой количество IP-адресов.

У сервера два IP-адреса. На одном ( 172.20.30.40 ) мы будет обслуживать «основной» сервер, server.example.com и на другие (172.20.30.50 ) мы будем обслуживать два и более виртуальных хоста.

 Слушайте 80

# Это "основной" сервер, работающий на 172.20.30.40
Имя сервера server.example.com
DocumentRoot "/ www / mainserver"


    DocumentRoot "/ www / example1"
    ServerName www.example.com

    # Другие директивы здесь ...



    DocumentRoot "/ www / example2"
    ServerName www.example.org

    # Другие директивы здесь ...
 

Любой запрос на адрес, отличный от 172.20.30.50 будет обслуживается с главного сервера. Запрос на номер 172.20.30.50 с неизвестное имя хоста или отсутствие заголовка Host: будет обслуживаться из www.example.com .

Серверная машина имеет два IP-адреса ( 192.168.1.1 и 172.20.30.40 ). Машина находится между внутренняя (интранет) сеть и внешняя (интернет) сеть. Вне сети имя server.example.com разрешает внешний адрес ( 172.20.30.40 ), но внутри сеть, то же имя преобразуется во внутренний адрес ( 192.168.1.1 ).

Сервер может отвечать на внутренние и внешние запросы с тем же содержанием, всего с одним разделом .

 
    DocumentRoot "/ www / server1"
    Имя сервера server.example.com
    ServerAlias ​​сервер
 

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

Примечание:

На внутреннем сети, можно просто использовать имя server скорее чем полное имя хоста server.example.com .

Обратите внимание, что в приведенном выше примере вы можете заменить список IP-адресов с * , что приведет к отвечают одинаково на все адреса.

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

 Слушайте 80
Слушай 8080


    ServerName www.example.com
    DocumentRoot "/ www / domain-80"



    ServerName www.example.com
    DocumentRoot "/ www / domain-8080"



    ServerName www.example.org
    DocumentRoot "/ www / otherdomain-80"



    ServerName www.example.org
    DocumentRoot "/ www / otherdomain-8080"
 

Сервер имеет два IP-адреса ( 172.20.30.40 и 172.20.30.50 ), которые разрешаются к именам www.example.com и www.example.org соответственно.

 Слушайте 80


    DocumentRoot "/ www / example1"
    ServerName www.example.com



    DocumentRoot "/ www / example2"
    ServerName www.example.org
 

Запросы на любой адрес, не указанный в одном из директив (например, localhost , например) перейдет на главный сервер, если существует один.

Серверный компьютер имеет два IP-адреса ( 172.20.30.40 и 172.20.30.50 ), которые разрешаются к именам www.example.com и www.example.org соответственно. В каждом случае мы хотим запускать хосты на портах 80 и 8080.

 Слушайте 172.20.30.40:80
Слушайте 172.20.30.40:8080
Слушайте 172.20.30.50:80
Слушайте 172.20.30.50:8080


    DocumentRoot "/ www / example1-80"
    ServerName www.example.com



    DocumentRoot "/ www / example1-8080"
    ServerName www.example.com



    DocumentRoot "/ www / example2-80"
    ServerName www.example.org



    DocumentRoot "/ www / example2-8080"
    ServerName www.example.org
 

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

 Слушайте 80

    DocumentRoot "/ www / example1"
    ServerName www.example.com



    DocumentRoot "/ www / example2"
    ServerName www.example.org



    DocumentRoot "/ www / example3"
    ServerName www.example.net


# На основе IP

    DocumentRoot "/ www / example4"
    ServerName www.example.edu



    DocumentRoot "/ www / example5"
    ServerName www.example.gov
 

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

 
    ProxyPreserveHost On
    ProxyPass "/" "http://192.168.111.2/"
    ProxyPassReverse "/" "http://192.168.111.2/"
    ServerName hostname.example.com
 

_default_ vhosts для всех портов

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

 
    DocumentRoot "/ www / default"
 

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

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

Вы можете использовать AliasMatch или RewriteRule для перезаписи любого запрос на единую информационную страницу (или скрипт).

_default_ vhosts для разных портов

То же, что и установка 1, но сервер прослушивает несколько портов, и мы хотим использовать второй vhost _default_ для порта 80.

 
    DocumentRoot "/ www / default80"
    # ...



    DocumentRoot "/ www / default"
    #...
 

Vhost по умолчанию для порта 80 ( должен быть перед любым vhost по умолчанию с подстановочным портом) ловит все отправленные запросы на неуказанный IP-адрес. Главный сервер никогда не используется для обслуживания запрос.

_default_ vhosts для одного порта

Мы хотим иметь виртуальный хост по умолчанию для порта 80, но не использовать другое значение по умолчанию. vhosts.

 
    DocumentRoot "/ www / default"
...
 

Запрос на неуказанный адрес на порту 80 обслуживается из по умолчанию vhost. Любой другой запрос на неуказанный адрес и порт обслуживается с главного сервера.

Любое использование * в объявлении виртуального хоста будет иметь более высокий приоритет, чем _default_ .

Vhost на основе имени с именем хоста www.example.org (из нашего примера на основе имени, установка 2) должен получить собственный IP-адрес. адрес.Чтобы избежать проблем с серверами имен или прокси, которые кэшировали старый IP-адрес для виртуального хоста на основе имени, который мы хотим предоставить как варианты на этапе миграции.

Решение простое, потому что мы можем просто добавить новый IP-адрес. ( 172.20.30.50 ) на VirtualHost директива.

 Слушайте 80
ServerName www.example.com
DocumentRoot "/ www / example1"


    DocumentRoot "/ www / example2"
    ServerName www.example.org
    # ...



    DocumentRoot "/ www / example3"
    ServerName www.example.net
    ServerAlias ​​* .example.net
    # ...
 

Теперь к виртуальному хосту можно получить доступ через новый адрес (как Vhost на основе IP) и через старый адрес (как имя на основе vhost).

У нас есть сервер с двумя именами vhosts. Чтобы соответствовать правильный виртуальный хост, клиент должен отправить правильный Host: заголовок.Старые клиенты HTTP / 1.0 не отправляют такой заголовок, а Apache имеет не знаю, к какому vhost клиент пытался добраться (и обслуживает запрос с первичного хоста). Чтобы обеспечить такую ​​же обратную совместимость, как возможно, мы создаем первичный виртуальный хост, который возвращает одну страницу содержащие ссылки с префиксом URL на виртуальный хосты.

 
    # основной vhost
    DocumentRoot "/ www / поддомен"
    RewriteEngine On
    RewriteRule "." "/ www / поддомен / index.(/sub2/.*) "" / www / subdomain $ 1 "
    # ...
 

из-за ServerPath директива запрос к URL http: //www.sub1.domain.tld/sub1/ - это всегда обслуживается с sub1-vhost.
Запрос на URL http: //www.sub1.domain.tld/ только обслуживается с sub1-vhost, если клиент отправил правильный Хост: заголовок. Если нет Host: заголовок отправляется клиент получает информационную страницу с основного хоста.

Обратите внимание, что есть одна странность: запрос на http: //www.sub2.domain.tld/sub1/ также обслуживается из sub1-vhost, если клиент не отправил заголовок Host: .

Директивы RewriteRule используются, чтобы убедиться, что клиент, отправивший правильный Host: заголовок может использовать оба варианта URL, , то есть , с префиксом URL или без него.

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

Виртуальный хост - это директива конфигурации Apache, которая позволяет запускать более одного веб-сайта на одном сервере. С помощью виртуальных хостов вы можете указать корень документа сайта (каталог, содержащий файлы веб-сайта), создать отдельную политику безопасности для каждого сайта, использовать разные сертификаты SSL и многое другое.

В этой статье описывается, как настроить виртуальные хосты Apache в Ubuntu 20.04.

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

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

Создание структуры каталогов #

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

  / var / www /
├── domain1.com
│ └── public_html
├── domain2.com
│ └── public_html
  

У каждого домена, размещенного на сервере, будет корень документа / var / www / / public_html .

Начните с создания корневого каталога для домена:

  sudo mkdir -p /var/www/domain1.com/public_html  

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

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

  

  
    
     Добро пожаловать на domain1.com 
  
  
     

Успех! главная страница domain1.com!

Поскольку приведенные выше команды выполняются от имени пользователя sudo, вновь созданные файлы и каталоги принадлежат пользователю root.Чтобы избежать проблем с разрешениями, измените владельца корневого каталога документов домена и всех файлов в каталоге на пользователя apache ( www-data ):

  sudo chown -R www-data: / var / www / domain1. com  

Создание виртуальных хостов #

В системах Ubuntu файлы конфигурации виртуальных хостов Apache находятся в каталоге / etc / apache2 / sites-available . Их можно включить, создав символические ссылки на каталог / etc / apache2 / sites-enabled , который Apache читает во время запуска.

Откройте текстовый редактор. по выбору и создайте следующий базовый файл конфигурации виртуального хоста:

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

  
    ServerName domain1.com
    ServerAlias ​​www.domain1.com
    ServerAdmin [email protected]
    DocumentRoot /var/www/domain1.com/public_html

    <Каталог /var/www/domain1.com/public_html>
        Параметры -Indexes + FollowSymLinks
        AllowOverride All
    

    Журнал ошибок $ {APACHE_LOG_DIR} / domain1.com-error.log
    CustomLog $ {APACHE_LOG_DIR} /domain1.com-access.log вместе

  
  • ServerName : домен, который должен соответствовать этой конфигурации виртуального хоста. Это должно быть ваше доменное имя.
  • ServerAlias ​​: все остальные домены или поддомены, которые должны соответствовать этому виртуальному хосту, например, поддомен www .
  • DocumentRoot : каталог, из которого Apache будет обслуживать файлы домена.
  • Опции : Эта директива определяет, какие функции сервера доступны в определенном каталоге.
    • -Индексы : предотвращает отображение каталогов.
    • FollowSymLinks : Когда этот параметр включен, Apache будет следовать символическим ссылкам.
  • AllowOverride : указывает, какие директивы, объявленные в файле .htaccess , могут переопределять директивы конфигурации.
  • ErrorLog , CustomLog : указывает расположение файлов журнала.

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

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

  sudo a2ensite domain1.com
  

Другой вариант - вручную создать символическую ссылку как показано ниже:

  sudo ln -s / etc / apache2 / sites-available / domain1.com.conf / etc / apache2 / sites-enabled /  

После этого проверьте конфигурацию на наличие синтаксических ошибок с помощью:

  sudo apachectl configtest  

Если ошибок нет, вы увидите следующий результат:

  Синтаксис ОК
  

Перезапустите службу Apache, чтобы изменения вступили в силу:

  sudo systemctl restart apache2  

Наконец, чтобы убедиться, что все работает должным образом, откройте http: // domain1.com в браузере, и вы увидите содержимое страницы index.html :

Заключение №

Вы узнали, как создать конфигурацию виртуального хоста apache для размещения нескольких доменов на одном сервере Ubuntu.

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

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

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

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

Виртуальные хосты Apache позволяют запускать несколько веб-сайтов на одной машине. С помощью виртуальных хостов вы можете указать корень документа сайта (каталог, содержащий файлы веб-сайта), создать отдельную политику безопасности для каждого сайта, использовать разные сертификаты SSL и многое другое.

Хотя это руководство написано для Ubuntu 18.04 Bionic Beaver, те же шаги можно использовать для Ubuntu 16.04 Xenial Xerus.

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

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

Создание структуры каталогов #

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

  / var / www /
├── domain1.com
│ └── public_html
├── domain2.com
│ └── public_html
├── domain3.com
│ └── public_html
  

По сути, мы создадим отдельный каталог для каждого домена, который хотим разместить на нашем сервере, внутри каталога / var / www . В каждом из этих каталогов мы создадим каталог public_html , в котором будут храниться файлы веб-сайта домена.

Начните с создания корневого каталога для домена example.com :

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

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

Откройте редактор и создайте демонстрационный файл:

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

  

  
    
     Добро пожаловать в пример.com 
  
  
     

Успех! Домашняя страница example.com!

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

Чтобы избежать проблем с разрешениями, мы можем сменить владельца корневого каталога документов домена пользователю apache ( www-data ):

  sudo chown -R www-data: / var / www / example.com  

Создание виртуальных хостов #

По умолчанию в системах Ubuntu файлы конфигурации виртуальных хостов Apache хранятся в каталоге / etc / apache2 / sites-available и могут быть включены путем создания символических ссылок на / etc / каталог apache2 / sites-enabled .

Откройте нужный редактор и создайте следующий базовый файл конфигурации виртуального хоста:

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

  
    Пример ServerName.ком
    ServerAlias ​​www.example.com
    ServerAdmin [email protected]
    DocumentRoot /var/www/example.com/public_html

    <Каталог /var/www/example.com/public_html>
        Параметры -Indexes + FollowSymLinks
        AllowOverride All
    

    ErrorLog $ {APACHE_LOG_DIR} /example.com-error.log
    CustomLog $ {APACHE_LOG_DIR} /example.com-access.log вместе

  
  • ServerName : домен, который должен соответствовать этой конфигурации виртуального хоста.Это должно быть ваше доменное имя.
  • ServerAlias ​​: все остальные домены, которые также должны соответствовать этому виртуальному хосту, например, субдомен www .
  • DocumentRoot : каталог, из которого Apache будет обслуживать файлы домена.
  • Опции : Эта директива определяет, какие функции сервера доступны в определенном каталоге.
    • -Индексы : предотвращает отображение каталогов.
    • FollowSymLinks : эта опция указывает вашему веб-серверу следовать символическим ссылкам.
  • AllowOverride : указывает, какие директивы, объявленные в файле .htaccess , могут переопределять директивы конфигурации.
  • ErrorLog , CustomLog : указывает расположение файлов журнала.

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

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

Самый простой способ включить виртуальный хост - использовать помощник a2ensite :

  sudo a2ensite example.com
  

Другой вариант - вручную создать символическую ссылку как показано ниже:

  sudo ln -s /etc/apache2/sites-available/example.com.conf / etc / apache2 / sites-enabled /  

После этого проверьте конфигурацию на наличие синтаксических ошибок с помощью:

  sudo apachectl configtest  

Если ошибок нет, вы увидите следующий вывод:

  Синтаксис ОК
  

Перезапустите службу Apache, чтобы изменения вступили в силу:

  sudo systemctl restart apache2  

Наконец, чтобы убедиться, что все работает должным образом, откройте http: // example.com в выбранном браузере, и вы увидите что-то вроде этого:

Заключение #

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

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

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

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

Установите веб-сервер Apache

В этой статье я покажу вам, как установить веб-сервер Apache в Ubuntu 20.04. Для этого требуются права root или административные привилегии, поэтому войдите в систему через root.

Шаг 1. Обновите APT

Как всегда, сначала обновите APT.

Шаг 2. Загрузите и установите Apache

Затем загрузите и установите веб-сервер Apache из репозитория программного обеспечения Ubuntu, выполнив следующую команду терминала.

$ sudo apt установить apache2

Шаг 3. Проверьте установку Apache

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

$ sudo systemctl status apache2

Шаг 4. Включите настройки брандмауэра

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

$ sudo ufw разрешить Apache Full

Шаг 5. Подтвердите изменения

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

Шаг 6. Проверьте, работает ли Apache.

Проверьте, правильно ли работает Apache в вашей системе. Откройте веб-браузер на вашем компьютере с Ubuntu, откройте новую вкладку и введите следующий URL-адрес в адресную строку.Обязательно замените IP-адрес, который мы использовали, на IP-адрес вашего собственного компьютера.

Рисунок: Служба Apache, запущенная в окне браузера.

Шаг 7. Настройка виртуального хоста

Теперь вы готовы настроить виртуальный хост с помощью установленного веб-сервера Apache. Apache содержит тестовый виртуальный хост, который по умолчанию включен при установке. Хостинг одного веб-сайта - это просто; вам просто нужно загрузить содержимое веб-сайта в его конфигурационный файл в папке «/ var / www / html.Путь к этому файлу конфигурации определяется следующим образом.

Путь = /etc/apache2/sites-enabled/000-default.conf

Рисунок: Файл конфигурации по умолчанию, открытый в редакторе gedit.

Шаг 8: Создайте доменное имя

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

$ sudo mkdir -p /var/www/example.com

Шаг 9: Создайте новый файл каталога

Создайте новый файл в каталоге с именем «index.html» и вставьте в него следующее содержимое.

Рисунок: Новый файл index.html с содержимым сайта внутри.

Сохраните файл и закройте его. Измените параметры разрешения файла с помощью следующей команды терминала.

$ sudo chown -R www-data: /var/www/example.com

Шаг 10: Создайте документ в текстовом редакторе

Откройте ваш любимый текстовый редактор и создайте этот файл в папке «/ etc / apache2 / sites-available».Я использую текстовый редактор gedit.

80>
ServerName example.com
ServerAlias ​​www.example.com
ServerAdmin [адрес электронной почты защищен]
DocumentRoot /var/www/example.com/public_html

/var/www/example.com/public_html>
Параметры -Indexes + FollowSymLinks
AllowOverride All
/ Каталог>

Журнал ошибок $ {APACHE_LOG_DIR} /example.com-error.log
CustomLog $ {APACHE_LOG_DIR} /example.com-access.log в сочетании
/ VirtualHost>

Рисунок: пример.conf, открытый в редакторе gedit.

Шаг 11: Ссылка на файл конфигурации

Свяжите этот файл конфигурации с утилитой a2ensite , выполнив следующую команду терминала.

$ sudo a2ensite example.com

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

$ sudo apachectl configtest

Шаг 12. Перезапустите Apache

.

Теперь перезапустите службу Apache, откройте веб-браузер и введите следующий URL-адрес в адресную строку.

$ sudo systemctl перезапуск apache2

= URL = http://example.com '

Рисунок: example.com открыт в окне браузера.

Удаление веб-сервера Apache

Вы можете полностью удалить веб-сервер Apache с помощью следующих команд терминала.

$ sudo apt-get очистка apache2

$ sudo apt-get autoremove

Заключение

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

Host Несколько сайтов на одном сервере с использованием Apache

Если вы размещаете более одного сайта на сервере, то, скорее всего, вы используете файлы виртуального хоста Apache, чтобы указать, какой домен должен обслуживаться. Виртуальные хосты на основе имен - это один из методов, используемых для разрешения запросов сайтов. Это означает, что когда кто-то просматривает ваш сайт, запрос отправляется на сервер, который, в свою очередь, определяет, какие файлы сайта обслуживать на основе имени домена. Используя этот метод, вы сможете разместить несколько сайтов на одном сервере с одним и тем же IP-адресом.В этом руководстве мы покажем вам, как настроить файл виртуального хоста для каждого из ваших доменов на сервере VPS Ubuntu 18.04.

Предварительная проверка

Шаг 1. Создайте каталог для каждого сайта

Вы создадите каталог для каждого сайта, который вы будете размещать, в папке / var / www . Это вновь созданное местоположение также называется корневым местоположением документа; вам нужно будет указать этот путь позже в файле конфигурации. Под доменом .com и domain2.com для ваших доменных имен.

mkdir -p / var / www / domain.com / public_html

mkdir -p / var / www / domain2.com / public_html

Шаг 2: Установите разрешения для папки

Шаг 3. Настройка страницы индекса

Чтобы увидеть домашнюю страницу, убедитесь, что файл index.html создан для каждого домена. В этом файле можно установить что-то простое, например, «тестирование для domain.com ».

vim / var / www / domain.com /public_html/index.html

Сохраните и выйдите, нажав кнопку Escape и набрав : wq

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

vim / var / www / domain2.com /public_html/index.html

Шаг 4. Скопируйте файл конфигурации для каждого сайта

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

cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/domain.com.conf

cp / etc / apache2 / sites-available / 000-default. conf /etc/apache2/sites-available/domain2.com.conf

Шаг 5. Отредактируйте файл конфигурации для каждого сайта

Как минимум, вы отрегулируете и добавите выделенные строки в < VirtualHost *: теги 80> и .

Примечание

ServerAlias ​​ - это альтернативное имя для вашего домена, в этом случае и в большинстве случаев вы указываете www перед именем домена, чтобы люди могли просматривать сайт с www или без www ( ServerName ).

vim /etc/apache2/sites-available/domain.com.conf


ServerAdmin [email protected]
ServerName domain.com
ServerAlias ​​www.domain.com
DocumentRoot / var / www / domain.com / public_html
ErrorLog $ {APACHE_LOG_DIR} /error.log
CustomLog $ {APACHE_LOG_DIR} /access.log вместе

Выйти и сохранить с помощью : wq . Повторите этот процесс для файла domain2.com.conf , обязательно обновите ServerName , ServerAlias ​​ и DocumentRoot для второго домена.

Шаг 6. Включите файл конфигурации

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

a2dissite 000-default.conf Чтобы ваш сервер был сопоставлен с вашими доменами, вам необходимо включить каждый из ваших вновь созданных файлов .conf.

a2ensite domain2.com.conf

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

systemctl restart apache2

Шаг 7: Проверка конфигураций Apache

После настройки любого из этих аспектов вы сможете посетить свой веб-сайт в браузере, чтобы увидеть страницы index.html, заданные на шаге 3.

Клиенты Liquid Web получают круглосуточную поддержку без выходных благодаря нашим невероятно быстрым серверам. Если вы застряли на каком-то шаге, наша служба поддержки знает конфигурации Apache и может вам помочь!

Как разместить несколько веб-сайтов с виртуальными хостами Apache | от Шиничи Окада

Используйте Ubuntu 20.04 на хост-сайты, включая субдомены

Фото Кристины @ wocintechchat.com на Unsplash

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

На моем сервере Ubuntu 20.04 есть файлы в каталоге / etc / apache2 / sites-available . Мы создадим больше файлов в этом каталоге для создания нескольких виртуальных хостов.

 $ ls / etc / apache2 / sites-available 
000-default.conf 000-default-le-ssl.conf default-ssl.conf
000-default.conf.dpkg-dist

Давайте создадим виртуальный хост для example.com . (Вам необходимо изменить example.com на свое доменное имя.) Мы храним файлы в каталоге /var/www/example.com/public_html . Если вы хотите развернуть свой веб-сайт с помощью Git, обратитесь к этой статье « Как создать Git Hook для отправки на ваш сервер и Github Repo ».

Шаг 1 - Создайте файл conf

Скопируйте 000-default.com.conf для создания нового файла в / etc / apache2 / sites-available :

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

Шаг 2 - Измените новый файл conf

В example.com.conf :

Строка 2: Добавьте свой адрес электронной почты для ServerAdmin
Строка 3: Используйте свое доменное имя для ServerName.
Строка 4: Добавьте www к своему доменному имени для ServerAlias.
Строки 5 и 6: Добавьте каталог файлов для DocumentRoot.

Шаг 3. Включение виртуального хоста

a2ensite включает указанный сайт в конфигурации apache2 . Он создает символическую ссылку в / etc / apache2 / sites-enabled (недоступно для сайтов).

 $ sudo a2ensite example.com.conf 

Приведенная выше команда создаст символическую ссылку example.com.conf в каталоге / etc / apache2 / sites-enabled .

Шаг 4. Включение SSL

 $ sudo certbot --apache -d example.com -d www.example.com 

Это будет искать в / etc / apache2 / sites-available , чтобы найти то же имя файла. Если он не может его найти, он попросит вас выбрать файл conf.

Будет создано example.com-le-ssh.conf .

Шаг 5 - Перезапустите apache

 $ sudo systemctl restart apache2 

Если ваш DNS настроен правильно, вы сможете увидеть свой домен.

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

Мы храним веб-файлы в пределах /var/www/newsletter.example.com/public_html .

Копируем 000-default.com.conf , чтобы создать новый файл newsletter.example.com.conf .

 $ sudo cp 000-default.com.conf newsletter.example.com.conf 

Отредактируйте newsletter.example.com.conf :

Отличия от предыдущего заключаются в добавлении субдомена к ServerName, ServerAlias , DocumentRoot и Directory.

Включение виртуального хоста и SSL

Давайте включим виртуальный хост и SSL для этого поддомена.

 sudo a2ensite newsletter.example.com.conf 
sudo certbot --apache -d newsletter.example.com -d www.newsletter.example.com

Добавление записи в службу DNS

Если вы используете namecheap. com, перейдите в Список доменов> Расширенный DNS и добавьте новую запись.

Это может занять 24–48 часов.

Перезапуск apache

 $ sudo systemctl restart apache2 

Подтверждение DNS

Проверьте свой DNS с помощью https://www.whatsmydns.net/. Если вы настроили его правильно, он показывает ваш IP-адрес.

Теперь у вас есть следующие файлы в каталоге sites-available .

 ls / etc / apache2 / sites-available / 
000-default.conf 000-default.conf.dpkg-dist
default-ssl.conf 000-default-le-ssl.conf
example.com.conf example. com-le-ssl.conf
newsletter.example.com.conf newsletter.example.com-le-ssl.conf

Файлы xxxx-le-ssl.conf предназначены для вашего SSL.

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

 $ sudo a2dissite 000-default.conf 
$ sudo a2dissite 000-default-le-ssl.conf

Здесь вы отключаете 000-default.conf и его виртуальные хосты SSL.

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

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *