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

Содержание

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

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

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

 

Предпосылки

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

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

 

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

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

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

 

Для каждого домена, размещенного на сервере, корневой каталог документа будет установлен на /var/www/<domain_name>/public_html.

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

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

 

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

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

 

<!DOCTYPE html>
<html lang="en" dir="ltr">
  <head>
    <meta charset="utf-8">
    <title>Добро пожаловать на domain1.ru</title>
  </head>
  <body>
    <h2>Успех! Главная страница domain1.ru!</h2>
  </body>
</html>

 

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

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

 

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

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

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

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

 

<VirtualHost *:80>
    ServerName domain1.ru
    ServerAlias www.domain1.ru
    ServerAdmin [email protected]
    DocumentRoot /var/www/domain1.ru/public_html

    <Directory /var/www/domain1.ru/public_html>
        Options -Indexes +FollowSymLinks
        AllowOverride All
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/domain1.ru-error.log
    CustomLog ${APACHE_LOG_DIR}/domain1.ru-access.log combined
</VirtualHost>

 

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

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

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

sudo a2ensite domain1.ru

 

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

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

 

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

sudo apachectl configtest

 

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

Syntax OK

 

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

sudo systemctl restart apache2

 

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

 

Вывод

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

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

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

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Настройка виртуальных хостов на 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 привязывает виртуальные хосты, указываемы далее, к именам сайтов указанных в секциях <VirtualHost …>. Здесь вместо звездочки можно вписать IP 127.0.0.1, но тогда во всех секциях <VirtualHost> нужно будет указать то же самый IP. Принцип работы этой директивы заключается в том, что при обращении, допустим, к адресу localhost, сервер проверяет, соответствует ли входящий адрес и порт, описанным в секциях VirtualHost и имеется ли запись 127.0.0.1:80 в директиве NameVirtualHost. Если соответствует, то он перебирает секции VirtualHost, в заголовках которых указан входящий адрес. Таким образом, запрос 127.0.0.1:80 будет распределяться только между виртуальными хостами, в которых он указан.

Дальше в файле идут секции VirtualHost. Как видно из названия, каждая секция описывает настройки каждого виртуального хоста. Обязательно должна быть хотя бы одна такая секция, которая описывает настройки для localhost.
<VirtualHost *:80>
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 – зеркало хоста

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

<IfModule alias_module>
ScriptAlias /cgi-bin/ “d:/server/host_name/cgi-bin”

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

name.

<Directory “d:/server/host_name/www”>
Options Indexes Includes FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all

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

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

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

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

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. Please re-enter Vhost name."
@ if exist %server_path%%new_dir% goto dir_exist
@md %server_path%%new_dir%

@rem Здесь указывается путь до конфиг файла виртуальных хостов, если у вас другой , поменяйте
@set outputfile=%server_path%Apache\conf\extra\httpd-vhosts.> >> %htmlfile%
@rem Здесь путь до самого сервера, если у вас другой, поменяйте
@start %server_path%Apache\bin\httpd.exe -k restart

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

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

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

Для примера возьмём два web-сервиса, типичных для сервера телефонии на базе Asterisk — FreePBX и FOP2. Доступ к FreePBX должен быть открыт только для подсети администраторов (192.168.127.0/24), доступ к FOP2 должен быть открыт для подсети администраторов и подсети колл-центра (192.168.10.0/24).

Приведённые настройки верны для CentOS 6.

Базовая настройка виртуальных хостов
Web-директория FreePBX — /var/www/html/admin, web-директория FOP2 — /var/www/html/fop2, FreePBX будет доступен по порту 8081, FOP2 будет доступен по порту 8082. Для базовой настройки виртуальных хостов, внесите следующие настройки в какой-либо файл в директории /etc/httpd/conf.d (например /etc/httpd/conf.d.virtual_hosts.conf).

Listen 8081
<VirtualHost *:8081>
DocumentRoot /var/www/html/admin
<Directory /var/www/html/admin>
Options FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
ExpiresActive on
ExpiresByType image/png «access plus 1 year»
ExpiresByType image/gif «access plus 1 year»
ExpiresByType image/jpg «access plus 1 year»
ExpiresByType css/text «access plus 1 year»
SetOutputFilter DEFLATE
SetEnvIfNoCase Request_URI .(?:gif|jpe?g|png|rar|zip|pdf)$ no-gzip dont-v
</Directory>
</VirtualHost>
Listen 8082
<VirtualHost *:8082>
DocumentRoot /var/www/html/fop2
<Directory /var/www/html/fop2>
Options FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
ExpiresActive on
ExpiresByType image/png «access plus 1 year»
ExpiresByType image/gif «access plus 1 year»
ExpiresByType image/jpg «access plus 1 year»
ExpiresByType css/text «access plus 1 year»
SetOutputFilter DEFLATE
SetEnvIfNoCase Request_URI .(?:gif|jpe?g|png|rar|zip|pdf)$ no-gzip dont-v
</Directory>
</VirtualHost>

Основные директивы Apache, использованные в указанных настройках:
Listen [<адрес>:]<номер_порта> — Apache будет слушать на указанном порту, можно указывать эту директиву несколько раз, чтобы Apache слушал на нескольких портах. Также можно указать адрес вместе с портом, тогда Apache будет слушать только на указанном адресе.
<VirtualHost <адрес>[:<порт>]> — все директивы между дирекстивами <VirtualHost <адрес>[:<порт>]> и </VirtualHost> будут распространяться только на виртуальный хост, доступный по указанному адресу и порту. Если критерием является только порт, а адрес может быть любым (как в нашем случае), вместо адреса можно указать «*».
DocumentRoot — корневая директория виртуального хоста.
Все директивы, указанные для корневых директорий виртуального хоста, являются рекомендуемыми значениями и не влияют на данную схему настройки виртуальных хостов, Вы можете найти описание этих директив в официальной документации Apache.

Здесь и далее, после внесения изменений применяем настройки Apache

service httpd reload

Теперь можно разграничить доступ к виртуальным хостам с помощью iptables:

iptables -A INPUT -p tcp —dport 8081 -s 192.168.127.0/24 -j ACCEPT
iptables -A INPUT -p tcp —dport 8082 -s 192.168.127.0/24 -j ACCEPT
iptables -A INPUT -p tcp —dport 8082 -s 192.168.10.0/24 -j ACCEPT

Добавление HTTP-аутентификации к виртуальному хосту
В FreePBX периодически обнаруживаются критические уязвимости, поэтому закрытие FreePBX HTTP-аутентификацей — рекомендуемая мера по усилению безопасности сервера телефонии. Можно просто закрыть FreePBX HTTP-аутентификацией (тогда нужно будет дополнительно аутентифицироваться в FreePBX после прохождения HTTP-аутентификации), также можно заменить аутентификацию FreePBX HTTP-аутентификацией, т.к. FreePBX поддерживает аутентификацию средствами web-сервера. Для HTTP-аутентификации можно использовать учётные записи FreePBX, логины и SHA1-хэши паролей FreePBX находятся в таблице ampusers.
Для добавления HTTP-аутентификации к виртуальному хосту FreePBX, приведите его настройки к следующему виду:

Listen 8081
<VirtualHost *:8081>
DocumentRoot /var/www/html/admin
<Directory /var/www/html/admin>
Options FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
AuthType Basic
AuthName ‘Who goes there’
AuthMySQLEnable On
AuthMySQLHost localhost
AuthMySQLDB asterisk
AuthMySQLUserTable ampusers
AuthMySQLUser freepbxuser
AuthMySQLPassword freepbx_db_password
AuthMySQLNameField username
AuthMySQLPasswordField password_sha1
AuthMySQLAuthoritative On
AuthMySQLPwEncryption sha1
Require valid-user
Satisfy all
ExpiresActive on
ExpiresByType image/png «access plus 1 year»
ExpiresByType image/gif «access plus 1 year»
ExpiresByType image/jpg «access plus 1 year»
ExpiresByType css/text «access plus 1 year»
SetOutputFilter DEFLATE
SetEnvIfNoCase Request_URI .(?:gif|jpe?g|png|rar|zip|pdf)$ no-gzip dont-v
</Directory>
</VirtualHost>

AuthMySQLDB — имя базы данных FreePBX
AuthMySQLUser — имя пользователя для доступа к БД FreePBX
AuthMySQLPassword — пароль для доступа к БД FreePBX (имя пользователя и пароль для доступа к БД FreePBX можно взять из файла /etc/freepbx.conf или из файла /etc/amportal.conf)
Для того, чтобы FreePBX использовал аутентификацию web-сервера и не запрашивал сам дополнительную аутентификацию, нужно указать значение webserver для параметра AUTHTYPE в файле /etc/amportal.conf и в таблице freepbx_settings (по умолчанию в обоих местах стоит значение database). Запрос к БД для изменения типа аутентификации FreePBX будет выглядеть так:
UPDATE ‘freepbx_settings’ SET ‘value’=’database’ WHERE ‘keyword’=’AUTHTYPE’;

Добавление SSL к виртуальному хосту
В завершение статьи, зашифруем подключение к web-интерфейсу FreePBX, чтобы пароли, передаваемые в открытом виде, нельзя было получить сниффером (Digest-аутентификация — тема для отдельной статьи).
Добавляем настройки SSL к виртуальному хосту:

Listen 8081
<VirtualHost *:8081>
ErrorLog logs/ssl_error_log
TransferLog logs/ssl_access_log
LogLevel warn
SSLEngine on
SSLProtocol all -SSLv2
SSLCipherSuite ALL:!ADH:!EXPORT:!SSLv2:!aNULL:!eNULL:!LOW:RC4+RSA:+HIGH:+MEDIUM
SSLCertificateFile /etc/pki/tls/certs/pbx.example.com.pem
SSLCertificateKeyFile /etc/pki/tls/private/pbx.example.com.key
SSLCertificateChainFile /etc/pki/tls/certs/pbx.example.com_ca.pem
<Files ~ «.(cgi|shtml|phtml|php3?)$»>
SSLOptions +StdEnvVars
</Files>
<Directory «/var/www/cgi-bin»>
SSLOptions +StdEnvVars
</Directory>
SetEnvIf User-Agent «.*MSIE.*»
nokeepalive ssl-unclean-shutdown
downgrade-1.0 force-response-1.0
CustomLog logs/ssl_request_log
«%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x «%r» %b»
DocumentRoot /var/www/html/admin
<Directory /var/www/html/admin>
Options FollowSymLinks
AllowOverride None
SSLOptions +StrictRequire
SSLRequireSSL
Order allow,deny
Allow from all
AuthType Basic
AuthName ‘Who goes there’
AuthMySQLEnable On
AuthMySQLHost localhost
AuthMySQLDB asterisk
AuthMySQLUserTable ampusers
AuthMySQLUser freepbxuser
AuthMySQLPassword freepbx_db_password
AuthMySQLNameField username
AuthMySQLPasswordField password_sha1
AuthMySQLAuthoritative On
AuthMySQLPwEncryption sha1
Require valid-user
Satisfy all
ExpiresActive on
ExpiresByType image/png «access plus 1 year»
ExpiresByType image/gif «access plus 1 year»
ExpiresByType image/jpg «access plus 1 year»
ExpiresByType css/text «access plus 1 year»
SetOutputFilter DEFLATE
SetEnvIfNoCase Request_URI .(?:gif|jpe?g|png|rar|zip|pdf)$ no-gzip dont-v
</Directory>
</VirtualHost>

Большая часть настроек SSL взята из файла /etc/httpd/conf.d/ssl.conf, файл входит в состав пакета mod_ssl.
SSLCertificateFile, SSLCertificateKeyFile, SSLCertificateChainFile — укажите в этих параметрах пути к сертификату, закрытому ключу и сертификату центра сертификации.
В корень виртуального хоста добавлены опции «SSLOptions +StrictRequire» и «SSLRequireSSL», эти опции запрещают подключение без использования SSL.

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

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

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

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

Создайте структуру каталогов

Корневой каталог документа — это каталог, в котором файлы веб-сайта для доменного имени хранятся и обслуживаются в ответ на запросы. Мы можем установить рут в интересующем нас месте. Каждый домен размещен на сервер apache будет иметь корень документа, установленный на / var / www / имя-домена / public_html.

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

sudo mkdir -p /var/www/dominio1.com/public_html
sudo mkdir -p /var/www/dominio2.com/public_html

также мы создадим файл index.html в корневом каталоге документов каждого домена. Это будет показано, когда мы зайдем на домен из браузера:

sudo vim /var/www/dominio1.com/public_html/index.html

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


 
<!DOCTYPE html>
<html lang="es">
  <head>
    <meta charset="utf-8">dominio1</title>
  </head>
  <body>    
<h2>Home del dominio1</h2>
  </body>
</html>

Для второго домена мы отредактируем его файл index.html и добавим его следующее содержание:

sudo vim /var/www/dominio2.com/public_html/index.html

<!DOCTYPE html>
<html lang="es">
  <head>
    <meta charset="utf-8">dominio2</title>
  </head>
  <body>
<h2>Home del dominio2</h2>
  </body>
</html>

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

sudo chown -R www-data: /var/www/dominio1.com
sudo chown -R www-data: /var/www/dominio2.com

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

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

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

sudo vim /etc/apache2/sites-available/dominio1.com.conf

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

<VirtualHost *:80>
    ServerName dominio1.com
    ServerAlias www.dominio1.com
    ServerAdmin [email protected]
    DocumentRoot /var/www/dominio1.com/public_html

    <Directory /var/www/dominio1.com/public_html>
        Options -Indexes +FollowSymLinks
        AllowOverride All
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/dominio1.com-error.log
    CustomLog ${APACHE_LOG_DIR}/dominio1.com-access.log combined
</VirtualHost>
  • Название сервера → Вы собираетесь указать домен, который должен соответствовать этой конфигурации виртуального хоста. Восток должно быть доменное имя.
  • ServerAlias → Все другие домены или субдомены, которые должны соответствовать этому виртуальному хосту, например www.
  • DocumentRoot → Вот укажет каталог, из которого Apache будет обслуживать файлы.
  • Опции → Эта директива контролирует, какие функции сервера доступны в определенном каталоге.
    • Индексы → Избегайте списков каталогов.
    • FollowSymLinks → Когда эта опция включена, Apache будет переходить по символическим ссылкам.
  • AllowOverride → Вы собираетесь указать, что директивы, объявленные в файле .htaccess, могут переопределять директивы конфигурации.
  • ErrorLog, CustomLog → Здесь вы указываете расположение файлов журнала.

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

sudo a2ensite dominio1.com

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

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

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

sudo apachectl configtest

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

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

sudo systemctl restart apache2

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

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

В этой статье раскрывается только базовое объяснение виртуального хоста и его конфигурации в Ubuntu. Может получить больше информации на Веб-сайт Apache.


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

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

В Debian 5.0.4 сервер Apache-2 сразу после установки готов работать с виртуальными хостами. Но настроен только на один (default) хост.

Чтобы добавить еще один виртуальный хост, надо сделать следущее:

1. В каталог /etc/apache2/sites-available добавить пустой файл с произвольным именем (лучше давать имя файла, содержащего имя виртуального хоста). Например, если планируется добавить виртуальный хост с именем studio.ru, файлу надо дать имя вида studio.ru.conf.

2. В этот файл надо вписать примерно следующее:

<VirtualHost *:80>

ServerName studio.ru

ServerAlias www.studio.ru

DocumentRoot «/var/www/studio»

<Directory «/var/www/studio»>

allow from all

Options +Indexes

</Directory>

</VirtualHost>

Где

  • ServerName, ServerAlias — это URL, набираемый в браузере, на который должен откликаться данный виртуальный хост;
  • DocumentRoot — это корневая директория данного виртуального хоста;
  • Секция Directory — настройка прав доступа к указанной директории. В данном случае настраиваются права доступа к корневой директории виртуального хоста.

Нужно обратить внимание на параметр секции VirtualHost. Здесь он написан как «*:80». Но обязательно нужно заглянуть в файл /etc/apache2/sites-available/default и посмотреть, какой параметр написан там в такой же секции VirtualHost. Если написано «*», то в нашем файле надо так же написать «*».

Вообще говоря, правильнее всего посмотреть в файл /etc/apache2/ports.conf. Там нужно найти директиву:

NameVirtualHost *:80

Какое значение стоит в этой директиве (здесь — «*:80»), такое значение и нужно прописать в качестве параметра секции VirtualHost во всех файлах директории /etc/apache2/sites-available, иначе хосты видны не будут.

Частая ошибка — когда в /etc/apache2/ports.conf прописано «*.80», а в файле хоста в секции VirtualHost прописано «*». В этом случае хост сервером Apache найден не будет!

3. Надо перейти в каталог /etc/apache2/sites-enabled и создать там символическую ссылку на созданный нами файл:

# cd /etc/apache2/sites-enabled

# ln -s /etc/apache2/sites-available/studio.ru.conf studio.ru.conf

4. Необходимо перезапустить Apache командами:

# /etc/init.d/apache2 stop

Stopping web server: apache2 … waiting .

# /etc/init.d/apache2 start

Starting web server: apache2.

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

5. Завершающее действие — нужно открыть файл /etc/hosts и прописать там новую строку следующего содержания:

127.0.0.1 studio.ru

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

Все, конфигурирование закончено. Никаких перезагрузок не требуется.

Можно в браузере набрать URL http://studio.ru/index.html, и должен открыться файл /var/www/studio/index.html (если он есть). Таким образом сразу видно, что виртуальный хост создался, и отображается в браузере.

Виртуальные хосты на Apache в Windows

Данное руководство предназначено для использования в локальной среде тестирования на Windows. Инструкции подходят для Apache 2.4 и более поздних версий.

  1. Создайте вложенную папку внутри C:\vhosts для каждого виртуального хоста, который вы хотите добавить на сервер Apache.
  2. Откройте C:\WINDOWS\system32\drivers\etc\hosts в блокноте или в любом другом текстовом редакторе. Найдите следующую строку в нижней части документа:
    127.0.0.1   localhost
  3. На отдельной пустой строке введите 127.0.0.1, затем поставьте пробел и введите имя виртуального хоста, который необходимо зарегистрировать. Например, чтобы создать виртуальный хост с именем mysite, введите следующую команду:
    127.0.0.1   mysite
  4. Добавьте нужное количество дополнительных виртуальных хостов, каждый из которых должен быть введён на отдельной строке с указанием того же IP-адреса (127.0.0.1). Сохраните файл хостов, и закройте его.
  5. Откройте конфигурационный файл Apache, httpd.conf, в текстовом редакторе. Он находится в файлах Apache в папке conf. Если вы используете XAMPP, этот файл находится по адресу C:\xampp\apache\conf\httpd.conf. Прокрутите вниз до конца раздела Supplemental configuration и найдите следующий раздел (приблизительно около 500 строки):
    #Virtual hosts
    #Include conf/extra/httpd-vhosts.conf
  6. Сотрите # около начала второй строки, раздел теперь должен выглядеть так:
    #Virtual hosts
    Include conf/extra/httpd-vhosts.conf
  7. Сохраните файл httpd.conf и закройте его.
  8. Откройте extra\httpd-vhosts.conf в блокноте или в любом другом текстовом редакторе. Если вы используете XAMPP, то адрес будет таким C:\xampp\apache\conf\extra\httpd-vhosts.conf. Главный раздел выглядит так:

    В XAMPP все строки будут закомментированы. Вам нужно удалить # в начале строки, содержащей следующую директиву:
    NameVirtualHost *.80
  9. Переместите курсор в область пустого пространства, расположенного на 15 строке в предыдущем скриншоте, и вставьте туда следующие три строки кода:
    <Directory C:/vhosts>
      Require all granted
    </Directory>
    Это позволяет установить правильные разрешения для папки, содержащей сайты, которые нужно рассматривать в качестве виртуальных хостов.
  10. На скриншоте в строках с 27 по 42 расположен код, который показывает примеры определения виртуальных хостов (в XAMPP они закоментированы). Там показаны все команды, которые могут быть использованы, но из них только DocumentRoot и ServerName являются обязательными.

    Когда вы используете виртуальный хостинг, Apache отключает главный корень сервера, поэтому первое определение должно содержать оригинальный корневой каталог. Затем вы добавляете каждый новый виртуальный хост внутри пары тегов <VirtualHost>, используя расположение веб-файлов сайта в качестве значения для DocumentRoot, и имя виртуального хоста для ServerName. Если путь содержит пробелы, то необходимо весь путь заключить в кавычки. Если ваш корневой каталог расположен, как у меня, в C:\htdocs, и вы добавляете mysite в качестве виртуального хоста в C:\vhosts, измените код на строках с 27 по 42 следуя следующему примеру (в XAMPP, просто добавить эти новые директивы в нижней части файла, и установить DocumentRoot для localhost в C:/xampp/htdocs):

    
    <VirtualHost *:80>
      DocumentRoot c:/htdocs
      ServerName localhost
    </VirtualHost>
    <VirtualHost *:80>
      DocumentRoot c:/vhosts/phpdw
      ServerName mysite
    </VirtualHost>
    
  11. Сохраните httpd-vhosts.conf и перезапустите Apache. Все сайты в корневом каталоге сервера будет по-прежнему доступны через httр://localhost/sitename/. Все, что в виртуальном хосте будет доступен через прямой адрес, например, httр://mysite/.
  12. Если у вас есть трудности с доступом к виртуальным хостам, убедитесь, что вы добавили index.php в директиву DirectoryIndex в файле httpd.conf.

Работаем с виртуальными хостами. Зачем нужны виртуальные хосты

Так как большинство читателей работают с операционной системой Windows, то сначала организуем виртуальные хосты в Windows 7.

Виртуальные хосты в Windows 7

В качестве примера поместим один или несколько проектов на диск D: локального компьютера. Сначала организуем структуру каталогов. На диске D: создаем каталог «mysites», а в нём каталог для первого сайта «site1». В каталоге «site1» сделаем два подкаталога: «www» и «logs». В первом подкаталоге будет располагаться сам сайт, а во втором, журналы виртуального хоста: access.log (журнал доступа) и error.log (журнал ошибок).

Файлы журналов создавать не надо, они будут созданы автоматически. А в каталоге «www», пока нет сайта, поместим простейший файл-заглушку «index.html» следующего содержания:

Теперь немного поправим настройки для виртуальных хостов веб-сервера Apache. Открываем C:\xampp\apache\conf\extra\ httpd-vhosts.conf
Как видим, этот файл уже содержит два примера виртуальных хостов. Не будем их трогать, а ниже разместим следующие строки:

NameVirtualHost *:80
<VirtualHost *:80>
    DocumentRoot "C:/xampp/htdocs"
    ServerName localhost
</VirtualHost>
<VirtualHost *:80>
    ServerAdmin [email protected]
    DocumentRoot "D:/mysites/site1/www"
    ServerName site1
    ServerAlias www.site1
    ErrorLog "D:/mysites/site1/logs/error.log"
    CustomLog "D:/mysites/site1/logs/access.log" common
   <Directory "D:/mysites/site1/www">
	AllowOverride All
	Require all granted
    </Directory>
</VirtualHost>

 Первая директива NameVirtualHost *:80 включает поименное использование виртуальных хостов на 80-ом порту (обычный http, если нужен https, используем 443 порт).
Следующие четыре строки это общая секция для всех виртуальных хостов. Если клиент обращается к серверу по IP-адресу или по несуществующему имени он попадет на этот виртуальный хост. В нашем случае в корневую директорию веб-сервера. Остальные строки это описание нашего первого виртуального хоста. Если нужно добавить ещё один виртуальный хост, то просто копируем эту секцию, вставляем ниже и по аналогии изменяем данные. Сохраняем файл.
Значение данных в секции виртуального хоста:

  • <VirtualHost *:80> Какой порт используется
  • ServerAdmin [email protected] Эл. почта администратора сайта
  • DocumentRoot «D:/mysites/site1/www» Корневой каталог сайта
  • ServerName site1 Имя хоста
  • ServerAlias www.site1 Псевдоним хоста. Можно обращаться, используя псевдоним
  • ErrorLog «D:/mysites/site1/logs/error.log» Расположение журнала ошибок
  • CustomLog «D:/mysites/site1/logs/access.log» common Расположение журнала доступа. Оператор common определяет общую степень детализации журнала. Если нужна более подробная детализация, то вместо common пишем combined
  • <Directory «D:/mysites/site1/www»> Подсекция, в которой определяются права и настройки для конкретного каталога.
  • AllowOverride All Эта директива нужна для правильной работы системы SEF

Из панели управления XAMPP перестартовываем Apache. Изменяем файл C:\Windows\System32\drivers\etc\hosts. Дописываем в него две строки:

127.0.0.1     site1
127.0.0.1     www.site1

Вместо 127.0.0.1 можно написать 127.0.0.2, а для следующего виртуального хоста 127.0.0.3, но в этом нет особой нужды. Об этом напишу в другой раз. А сейчас сохраняем файл. Открываем браузер и адресной строке вводим http://site1 или просто site1. Если всё сделано правильно, видим информацию из файла-заглушки.

Виртуальные хосты в Debian GNU/Linux

Настройка виртуальных хостов в Linux мало чем отличается от их настройки в Windows. Разве что созданием структуры каталогов. Оно и понятно, Apache кроссплатформенное решение, настроечные файлы практически одинаковы.
При установке XAMPP, корневой директорией веб-сервера Apache является каталог /opt/lampp/htdocs. А вот когда Apache устанавливается в Linux отдельным пакетом, то по умолчанию корневой директорией является каталог /var/www. Вот в этот каталог мы и поместим виртуальные хосты.
В качестве примера, создадим каталог /var/www/site1, который будет содержать два подкаталога: logs для журналов и www для файлов сайта.

Делаем владельцем каталога site1 пользователя www-data:

sudo chown -R www-data:www-data /var/www/site1

В каталог /var/www/site1/www помещаем файл-заглушку index.html

 

 Открываем файл /opt/lampp/etc/extra/httpd-vhosts.conf и удаляем всё его содержимое. Добавляем следующий код:

 

NameVirtualHost *:80
<VirtualHost *:80>
    DocumentRoot "/opt/lampp/htdocs/"
    ServerName localhost
</VirtualHost>
<VirtualHost *:80>
    ServerAdmin [email protected]
    DocumentRoot "/var/www/site1/www"
    ServerName site1
    ServerAlias www.site1
    ErrorLog "/var/www/site1/logs/error.log"
    CustomLog "/var/www/site1/logs/access.log" common
    <Directory "/var/www/site1/www">
	Options Indexes FollowSymLinks Includes ExecCGI
	AddType text/shtml .shtml
	AddOutputFilter INCLUDES .shtml
	AllowOverride All
	Require all granted
    </Directory>
</VirtualHost>

 Последние 15 строк кода – это как раз описание виртуального хоста site1. Если в дальнейшем надо будет добавить ещё один виртуальный хост, то просто скопируйте эти строки и измените пути к директориям.
Открываем файл /opt/lamp/etc/httpd.conf и раскомментируем (т. е. удалим символ решетки) строку 488:

Include etc/extra/httpd-vhosts.conf 

Перестартовываем XAMPP

/opt/lampp/xampp restart

Правим файл /etc/hosts. Ниже строки

127.0.0.1	localhost

Вставляем строку следующие строки:

127.0.0.1	site1
127.0.0.1     www.site1

В адресной строке браузера набираем
http://site1 или просто site1

Если вы видите страницу-заглушку, значит, всё сделали правильно!

Об авторе:

Меня зовут Андрей Золкин. Из более, чем пятнадцати лет работы в сфере информационных технологий, десять лет работаю с системами, базирующимися на открытом исходном коде. На страницах сайта Aitishnik.Ru веду блоги по CMC Joomla и Debian GNU/Linux.

 

Ещё о сайтостроении

    • Бесплатный сайт с помощью конструктора – преимущества и недостатк…

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

    • Создание логотипа для привлечения посетителей …

      Быть может, у пользователя уже есть готовый сайт, который удовлетворяет его со всех точек зрения. Тем не менее, число посетителей нестабильно. В чем же причина этого? Не хватает запоминающегося логотипа. На практике он всегда работает на…

    • Создание сайтов: цели и методы

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

    • 5 серийных убийц конверсии вашего лендинга…

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

    • Основная цель выделенного сервера

      Выделенный сервер – это название говорит само за себя, покупая эту услугу у провайдера, вы фактически получаете в свое пользование конкретный сервер. Виртуальный хостинг — это абсолютная противоположность понятию “выделенного”, в данном…

    • Дешевый хостинг: основные преимущества и недостатки…

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

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

Введение

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

Для получения более подробной версии этого руководства с дополнительными объяснениями каждого шага обратитесь к разделу «Как настроить виртуальные хосты Apache в Ubuntu 18».04.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Успех! Пример.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 работает!

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

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

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

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

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

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

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

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

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

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

  
    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 объединены

  

На этом этапе сохраните и закройте файл.

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

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

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

  
  • 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

  
    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 объединены

  

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

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

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

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

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

  
  • sudo a2dissite 000-default.conf

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

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

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

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

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

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

  

Для локального компьютера с Windows инструкции по изменению файла hosts можно найти здесь.

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

/ etc / hosts

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

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

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

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

  http: // example.ком
  

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

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

  http://test.com
  

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

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

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

Настройка виртуальных хостов Apache в операционной системе Ubuntu —

Настройка виртуальных хостов Apache в операционной системе Ubuntu

Последнее обновление: 2020-09-21

Автор: Rackspace Support


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

Создать макет

В этом примере используются два домена: domain1.com и domain2.com.

  1. В своем домашнем каталоге создайте папку public_html:

      кд ~
    mkdir public_html
      
  2. Для каждого домена, который вы хотите разместить, создайте папку с стандартный набор вложенных папок. Следующие команды создают общедоступные, частные, журнальные, cgi-bin и резервные папки для domain1.com и domain2.com:

      mkdir -p public_html / domain1.com / {общедоступное, частное, журнал, cgi-bin, резервное копирование}
    mkdir -p public_html / domain2.com / {общедоступный, частный, журнал, cgi-bin, резервная копия}
      

Создать index.html

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

  1. Для каждого домена создайте файл index.html:

      нано public_html / domain1.com / public / index.html
      
  2. Добавьте следующий код в индекс.html файл:

      
      
         domain1.com 
      
      
    
         

    domain1.com

  3. Повторите процесс, чтобы у вас был аналогичный файл для domain2.com. Замените все экземпляры domain1.com на domain2.com .

Определить виртуальные хосты

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

Название отзываVirtualHost

В случае виртуальных хостов параметр NameVirtualHost часто вызывает путаницу.

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

В макете Apache для операционной системы Ubuntu по умолчанию используется NameVirtualHost. в файле ports.conf .

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

  cat /etc/apache2/ports.conf
  

Вы должны получить следующий результат (если вы не изменили ранее файл):

  # Если вы просто измените порт или добавите сюда больше портов, вы, скорее всего, также
# необходимо изменить оператор VirtualHost в
# / etc / apache2 / sites-enabled / 000-default

ИмяVirtualHost *: 80
Слушай 80


    # Виртуальные хосты на основе имен SSL пока не поддерживаются, поэтому нет
    # Здесь оператор NameVirtualHost
    Слушайте 443

  

Параметр NameVirtualHost по умолчанию удовлетворяет требованиям на присутствует — Apache будет применять логику и настройки виртуального хоста на основе имен для HTTP-запросов, сделанных на любом доступном интерфейсе (*) на порту 80.

Примечание : Размещение директивы NameVirtualHost по умолчанию в «Ports.conf» является новым в компоновке Apache операционной системы Ubuntu; прежний релизы поместили аналогичную настройку в vhost по умолчанию.

Определение пользовательских виртуальных хостов

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

Создайте файл vhost для domain1:

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

Содержимое выглядит следующим образом:

  # Разместите здесь любые заметки или комментарии.
# Это упростит понимание любой настройки в ближайшие недели

# домен: домен1.ком
# public: /home/demo/public_html/domain1.com/



  # Адрес электронной почты администратора, имя сервера (доменное имя) и любые псевдонимы
  ServerAdmin [email protected]
  ServerName domain1.com
  ServerAlias ​​www.domain1.com


  # Индексный файл и корень документа (где находятся общедоступные файлы)
  DirectoryIndex index.html
  DocumentRoot /home/demo/public_html/domain1.com/public


  # Пользовательские местоположения файлов журнала
  LogLevel предупреждать
  ErrorLog /var/log/apache2/error-mydomainname.com.log
  CustomLog / var / log / apache2 / access-mydomainname.com.log вместе


  

Включить сайт

Включите сайт следующим образом:

  sudo a2ensite domain1.com
  

Вывод команды следующий:

  Сайт domain1.com установлен; запустите /etc/init.d/apache2 reload, чтобы включить.
  

Выполните рекомендуемую команду:

  sudo /etc/init.d/apache2 перезагрузить
  

Перейти на сайт

Для тестирования домена без создания зоны DNS и записей на некоторых Серверы имен в Интернете, вы можете изменить файл «/ etc / hosts» на своем локальный компьютер, чтобы включить некоторые записи сопоставления ‘domain1.com ’, «Domain2.com», а остальное — на общедоступный IP-адрес демонстрационного облачного сервера. адрес:

  127.0.0.1 локальный хост
...

# записи, относящиеся к демонстрационному облачному серверу
123.45.67.890 domain1.com
123.45.67.890 www.domain1.com
123.45.67.890 domain2.com
...
  

Расположение файла «hosts» зависит от загруженной ОС. на вашем локальном компьютере.

Примечание : записи в файле «hosts» должны быть удалены перед тестированием. и использование живых зон DNS и записей, созданных на серверах имен в Интернете.Если их не удалить, это может привести к путанице с вашей стороны и неточные тесты новых или измененных общедоступных DNS-записей.

С такими изменениями, внесенными в целях тестирования, вы можете перейти к своему сайт в веб-браузере на вашем локальном компьютере и отображается содержимое файла public / index.html.

Используйте ServerAlias ​​

Обратите внимание, что в файле vhost вы устанавливаете ServerAlias. Если у вас есть DNS настроен правильно, вы также можете использовать этот адрес.

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

Повторите процесс для другого домена

Чтобы создать и активировать domain2.com, повторите процесс следующим образом:

  1. Создайте файл vhost:

      судо нано /etc/apache2/sites-available/domain2.com
    ...
    # Введите данные для domain2.com в соответствии с примером, показанным выше
      
  2. Включите сайт и перезапустите Apache:

      sudo a2ensite domain2.com
    ...
    sudo /etc/init.d/apache2 перезагрузить
      
  3. Перейдите ко второму домену:

      https: // domain2.ком
    или
    https://www.domain2.com
      

Вы должны увидеть индексный файл «domain2.com».

Просмотр файлов журнала

Как определено в файле vhosts, каждый домен имеет свои собственные файлы журналов.

Список журналов для ваших доменов:

  ls /var/log/apache2/error-mydomainname.com.log
  

Результат точно такой, как ожидалось:

  access.log error.log
  

Файл vhost по умолчанию

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

Если кто-то вводит IP-адрес облачного сервера, он обслуживается содержимое этого файла vhosts по умолчанию (если вы не настроили отдельный vhost для IP-адреса).

Почему они обслуживаются из этого файла vhost?

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

Если вы отключили или удалили файл vhost по умолчанию, то содержимое домена 1.com будет отображаться (до domain2.com по алфавиту).

Это то, что нужно учитывать при планировании веб-сайтов. Ты хочешь конкретный домен по умолчанию? Вы хотите, чтобы IP-адрес имел совершенно другой контент?

Установите адрес электронной почты администратора

Установите адрес электронной почты для администратора сервера. Этот адрес используется если вы настроили сервер для связи с вами при возникновении ошибок. Это также отображается в ServerSignature, если для него установлено значение «Электронная почта».(См. section Определение нижних колонтитулов Apache .

  ServerAdmin [email protected]
  

Установить доменное имя

Задайте доменное имя (ServerName) для виртуального хоста. Вы можете иметь как много псевдонимов (ServerAlias) по мере необходимости. Например, у вас может быть domain.com и domain.net указывают на одно и то же содержимое.

  ServerName domain.com
ServerAlias ​​www.domain.com
  

Примечание : Это не правило перезаписи, а определенные здесь домены будет обслуживать тот же контент (при условии, что вы установили DNS, указывающий на IP вашего облачного сервера).

Определите индексный файл

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

  DirectoryIndex index.html
  

Примечание : это не лучший метод для перенаправления пользователей, потому что они может перейти непосредственно на неуказанную страницу, например domain.com/index.php, в то время как значение DirectoryIndex работает только для тех, кто входит в домен.com.

Определить путь к документам

Определите расположение общедоступных файлов домена. Используйте абсолютный путь имя.

  DocumentRoot /home/demo/public_html/domain.com/public
  

Установить файлы журнала

Установите уровни журналов и расположение файлов журналов виртуальных хостов.

  Предупреждение о лог-уровне
ErrorLog /var/log/apache2/error-mydomainname.com.log
CustomLog /var/log/apache2/access-mydomainname.com.log объединены
  

Определить документы об ошибках

Установите ErrorDocument, который используется для всех стандартных ошибок. Сообщения.

  ErrorDocument 404 /errors/404.html
ErrorDocument 403 /errors/403.html
  

В этом примере в общедоступном каталоге есть папка «errors». Каждый документ об ошибке был создан и помещен в папку ошибок. В показанные пути относятся к папке DocumentRoot, определенной ранее.

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

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

  Сервер Подпись Вкл.
  

Уровень детализации в подписи настраивается через ServerTokens, который не может быть установлен в файле виртуальных хостов. Для Apache в операционной системе Ubuntu макет, это правильно установлено в «/etc/apache2/conf.d/security». Увидеть Конфигурация Apache № 2, ТРЕБУЕТСЯ статья для более подробной информации.

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

Включить cgi-bin

Включите расположение cgi-bin, определенное настраиваемыми виртуальными хостами макет. Вы можете оставить cgi-bin в папке DocumentRoot, если хотите хотеть.

  ScriptAlias ​​/ cgi-bin / /home/demo/public_html/domain.com/cgi-bin/
<Местоположение / cgi-bin>
  Опции + ExecCGI

  

Установить параметры каталога

Установите параметры для указанного каталога.Следующий пример включает параметр FollowSymLinks для общедоступного каталога domain.com.

  Опции FollowSymLinks
  

Ниже приведены другие параметры, которые вы можете установить:

Параметр просмотра каталога

Чтобы отключить просмотр каталогов, используйте -Indexes. Чтобы включить каталог просматривая, используйте + Индексы.

  Опции -Индексы
  
Опция SSI

Включение или отключение включений на стороне сервера. В следующем примере отключается Это.

  Опции - Включает
  
Параметр символических ссылок

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

  Опции -FollowSymLinks
  

Вы можете использовать директиву SymLinksIfOwnerMatch вместо FollowSymLinks. Директива SymLinksIfOwnerMatch разрешает символические ссылки следовать только в том случае, если владелец ссылки идентичен владельцу целевого файла или каталога (с точки зрения файловой системы Linux владение / разрешения).Это предотвращает многие риски безопасности, которые простая директива FollowSymlinks может создать.

Опция .htaccess

Установите для AllowOverride значение None, чтобы отключить поддержку .htaccess. Установите все на разрешить поддержку.

  AllowOverride Нет
  

Вы также можете указать, какие функции .htaccess нужно включить, например:

  AllowOverride AuthConfig индексы
  

Апач htaccess а также AllowOverride документы содержат дополнительную информацию о различных функциях.\ .my «> <Удовлетворительно> Требовать все отклонено

Примечание : Предыдущий пример отформатирован для Apache 2.4. При использовании 2.2, заменить ** Требовать все отклонено ** с Order Allow, Deny | Запретить всем | Удовлетворять все .

Без опций

Укажите «Нет», чтобы отключить все доступные параметры.

  Опции Нет
  
Иерархия опций

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

  AllowOverride Нет
  Опции Нет

AllowOverride All
  

Первый параметр каталога отключит все параметры и отключит .Поддержка htaccess для всех каталогов.

Однако второй параметр каталога переопределит первый и позволит Поддержка .htaccess для каталога domain.com/public.

Сводка

Файл виртуальных хостов — простой в использовании, но очень мощный инструмент. Мы рекомендуем вам ввести одну настройку, а затем протестировать ее. Затем введите следующая настройка и тест и так далее.

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

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

Apache в настоящее время является наиболее широко используемым веб-сервером в мире. Это программное обеспечение с открытым исходным кодом, поддерживаемое Apache Software Foundation. По оценкам, по состоянию на сентябрь 2020 года он обслуживает 36% всего трафика веб-сайтов в мире. Разработчики любят его за скорость, безопасность, надежность и надежность. Простота настройки позволяет удовлетворить потребности многих сред путем установки расширений и модулей.

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

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

В этом руководстве мы проведем вас через настройку виртуальных хостов на сервере Ubuntu 20.04.

Первые дела сначала

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

Для выполнения шагов этого руководства также требуется, чтобы у вас был установлен Apache. Если вы еще этого не сделали, вы можете установить его, используя приведенные ниже команды. Вы можете следовать нашему руководству по настройке LAMP Stack — Linux Apache MySQL PHP для получения более подробного руководства по установке.

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

sudo apt update

sudo apt install apache2

У вас должны быть бесплатные или платные доменные имена, зарегистрированные у выбранного вами регистратора доменов.Убедитесь, что домены указывают на ваш сервер, настроив записи DNS. Тем не менее, вы все равно можете использовать наши конфигурации для выполнения шагов, описанных в этом руководстве. В этом руководстве мы будем использовать example.dev и mydomain.com. Вы можете заменить их своими. Если вы решите использовать тестовые домены, то файлы хостов в Apache должны быть отредактированы для обработки доменов. Мы расскажем, как это сделать позже в руководстве.

Шаг 1. Создайте каталоги веб-сайтов

Это каталоги, содержащие данные сайта, к которым будут обращаться посетители вашего сайта.Корневой каталог документа Apache, доступный из Интернета, обычно находится в / var / www. Здесь мы будем создавать каталоги для отдельных доменов, которые мы хотим разместить. В каждый из каталогов мы добавим каталог public_html для хранения фактических файлов веб-сайта. Виртуальный хост указывает на каталог public_html. Это дает вам гибкость, поскольку вы можете хранить важные файлы веб-сайта вне public_html и размещать только общедоступные файлы внутри.

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

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

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

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

Шаг 2. Изменение разрешений на чтение и запись

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

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

sudo chown -R $ USER: $ USER /var/www/example.dev/public_html sudo chown -R $ USER: $ USER /var/www/mydomain.com/public_html

sudo chown -R $ USER: $ USER /var/www/example.dev/public_html

sudo chown -R $ USER: $ USER / var / www / mydomain.com / public_html

$ USER — это переменная, которая принимает учетные данные текущего вошедшего в систему пользователя. Обычный пользователь теперь владеет файлом public_html. Затем вам необходимо предоставить разрешения на чтение для всего Интернета. Следующая команда разрешает доступ ко всем файлам в каталоге, обеспечивая правильное обслуживание веб-страниц:

sudo chmod -R 755 / var / www

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

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

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

Имея структуру каталогов, пора написать сценарий. Мы будем использовать HTML и нано-текстовый редактор для создания некоторых базовых веб-страниц. Введите следующую команду, чтобы открыть nano и создать файл index.html в каталоге для первого домена:

vim / var / www / example.dev / public_html / index.html

vim /var/www/example.dev/public_html/index.html

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

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

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

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

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

Вставив указанные выше строки, нажмите «! Wq» для сохранения и выхода из файла.

Создайте страницу index.html для второго домена с помощью редактора nano, введя следующую команду:

vim / var / www / mydomain.ru / public_html / index.html

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

Затем в редакторе вставьте следующий HTML-код, сохраните и выйдите:

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

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

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

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

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

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

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

Файлы конфигурации Apache находятся в каталоге / etc / apache2 / sites-available. Там мы будем хранить файлы нашего виртуального хоста. Мы можем скопировать файл conf по умолчанию и при необходимости отредактировать.

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

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

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

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

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

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

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

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

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

Нам нужно добавить две новые директивы: ServerName и ServerAlias. ServerName устанавливает базовое доменное имя. Здесь вы размещаете свой домен. ServerAlias ​​определяет другие имена, которым должен соответствовать Apache, как если бы они были базовым доменным именем. Это позволяет вам сопоставлять хосты, такие как www.

Обновите файл, чтобы он выглядел, как показано ниже:

& lt; VirtualHost *: 80 & gt; ServerAdmin [email protected] ServerName example.dev ServerAlias ​​www.example.dev DocumentRoot /var/www/example.dev/public_html ErrorLog $ {APACHE_LOG_DIR} /error.log CustomLog $ {APACHE_LOG_DIR} /access.log объединены & lt; / VirtualHost & gt;

& lt; VirtualHost *: 80 & gt;

ServerAdmin admin @ example.dev

ServerName example.dev

ServerAlias ​​www.example.dev

DocumentRoot /var/www/example.dev/public_html

ErrorLog $ {APACHE_LOG_DIR} /error.log

CustomLog $ {APDACHE_LOG_ комбинированный

& lt; / VirtualHost & gt;

После этого обновите свои домены и электронную почту соответствующим образом. После этого нажмите CTRL + O и ENTER, чтобы сохранить файл. Чтобы выйти из редактора, нажмите CTRL + X.

  • Создайте первый файл виртуального хоста для домена mydomain.com

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

sudo cp /etc/apache2/sites-available/example.dev.conf /etc/apache2/sites-available/mydomain.com.conf

sudo cp /etc/apache2/sites-available/example.dev.conf / etc / apache2 / sites-available / mydomain.com.conf

Затем откройте его в редакторе nano с помощью команды:

sudo nano /etc/apache2/sites-available/mydomain.com.conf

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

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

& lt; VirtualHost *: 80 & gt; ServerAdmin [email protected] ServerName mydomain.ком ServerAlias ​​www.mydomain.com DocumentRoot /var/www/mydomain.com/public_html ErrorLog $ {APACHE_LOG_DIR} /error.log CustomLog $ {APACHE_LOG_DIR} /access.log объединены & lt; / VirtualHost & gt;

& lt; VirtualHost *: 80 & gt;

ServerAdmin [email protected]

ServerName mydomain.com

ServerAlias ​​www.mydomain.com

DocumentRoot /var/www/mydomain.com/public_html

ErrorLog $ {APACHE_LOG_DIR} / error.log

CustomLog $ {APACHE_LOG_DIR} /access.log вместе

& lt; / VirtualHost & gt;

После этого сохраните файл и выйдите из редактора.

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

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

Введите следующие две команды для включения виртуальных хостов:

Пример sudo a2ensite.dev.conf sudo a2ensite mydomain.com.conf

sudo a2ensite example.dev.conf

sudo a2ensite mydomain.com.conf

Результат выполнения вышеуказанных команд показан ниже:

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

sudo a2dissite 000-default.conf

sudo a2dissite 000-default.конф

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

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

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

Затем проверьте состояние Apache с помощью следующей команды:

sudo systemctl статус apache2

sudo systemctl статус apache2

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

Шаг 6. Измените локальные хосты с помощью примеров доменов

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

Если вы работаете на компьютере Mac или Linux, файл hosts находится в каталоге / etc. Мы будем использовать редактор nano, чтобы открывать и добавлять наши тестовые домены. Сначала найдите свой IP-адрес VPS, введя следующую команду:

Введите следующую команду, чтобы открыть файл и обновить его с IP-адресом вашего сервера:

127.0.0.1 локальный 127.0.1.1 Имя компьютера your_server_IP example.dev ваш_сервер_IP mydomain.com

127.0.0.1 localhost

127.0.1.1 ComputerName

your_server_IP example.dev

your_server_IP mydomain.com

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

Шаг 7. Проверьте свои виртуальные хосты

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

Результат должен выглядеть примерно так:

Поздравляем! Вы успешно настроили два веб-сайта для работы на одном сервере.

Заключение

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

Счастливых вычислений!

Об Акшай Нагпале
Энтузиаст в области анализа больших данных и машинного обучения.

Как настроить виртуальный хост apache в ubuntu — дневник компьютерных пользователей

В этом руководстве мы расскажем, как настроить виртуальный хост apache или vhost на ubuntu 16.04. Использование виртуального хоста позволяет администратору использовать один сервер для размещения нескольких доменов или сайтов с использованием единого интерфейса или IP-адреса с помощью механизма сопоставления.По сути, вы можете использовать один IP-адрес для сервера нескольких доменных имен. Метод виртуального хоста широко используется провайдером виртуального хостинга.

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

Прежде чем приступить к изучению этого руководства, вы должны хотя бы иметь базовые знания о Linux, знать основные команды оболочки для Linux, иметь учетную запись пользователя root или пользователя без полномочий root с привилегиями sudo, установленными на вашем сервере. Также у вас был установлен apache. Если на вашем сервере не установлен apache, вы можете следовать инструкциям по установке Apache PHP на Ubuntu 16.04 Учебник.

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

 Доменное имя: test1.example.com
Корень документа: /var/www/example.com/ 

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

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

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

Шаг 2 — Создайте страницу примера для виртуального хоста

Мы создадим простой html-файл и поместим его в корень документа виртуального хоста

.
 $ нано /var/www/test1.example.com/public_html/index.html 

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

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

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

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

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

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

Откройте новый файл конфигурации виртуального хоста с помощью nano

 $ судо нано /etc/apache2/sites-available/test1.example.com.conf 

Отредактируйте этот файл следующим образом:

 
    ServerAdmin [email protected]
    Имя сервера test1.example.com
    ServerAlias ​​test1.example.com
    DocumentRoot /var/www/test1.example.com/public_html
    ErrorLog $ {APACHE_LOG_DIR} / error.бревно
    CustomLog $ {APACHE_LOG_DIR} /access.log объединены
 

Примечание: вы можете использовать ServerAlias ​​для создания виртуального хоста с другим именем, но с тем же корнем документа, например www.example.com и example.com. Конфигурация будет как у этих

 ServerName example.com
ServerAlias ​​www.example.com 

Шаг 4. Включите новую конфигурацию виртуального хоста для Apache

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

 $ sudo a2ensite test1.example.com.conf 

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

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

Шаг 5. Протестируйте в браузере

Откройте ваш браузер, в этом примере мы откроем url http://test1.example.com для проверки результатов.

Как создавать виртуальные хосты Apache на CentOS 7: Руководство для начинающих

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

1. Установка Apache

Прежде чем мы начнем, убедитесь, что у вас есть root-доступ к вашему VPS или серверу через SSH-соединение. В Hostinger учетные данные для входа находятся на вкладке Servers hPanel.

  1. Установите Apache на свой компьютер CentOS 7, введя следующую команду:
     sudo yum -y установить httpd 
  2. После завершения установки включите Apache как службу CentOS:
     sudo systemctl включить httpd.обслуживание 
  3. Посетите IP-адрес своего сервера, чтобы проверить, запущен ли Apache. Страница должна выглядеть так:

2. Создание дерева каталогов

  1. Дерево каталогов используется для хранения данных веб-сайта. Сначала установите рабочий каталог на / var / www , выполнив эту команду:
     cd / var / www / 
  2. Вы должны использовать уникальный корень документа для каждого виртуального хоста:
     mkdir -p yourdomain.com/public_html 

    Не забудьте заменить yourdomain.com на ваше реальное доменное имя.

  3. Сделайте каталог доступным для Apache. Запустите chown , чтобы изменить владельца, и chmod , чтобы установить правильные разрешения для всего веб-каталога.
     chown -R apache: apache /var/www/yourdomain.com/public_html
    chmod -R 755 / var / www 

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

3. Создание демонстрационной страницы

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

  1. Используйте редактор nano для создания файла index.html в каталоге yourdomain.com/public_html :
     nano yourdomain.com/public_html/index.html 
  2. Вставьте в файл следующее содержимое:
     
      
       Это тестовая страница 
      
      
       

    Это работает!

  3. Сохраните файл, нажав CTRL + X , а затем Y .

4. Создание виртуального хоста

  1. Создайте новый файл виртуального хоста .conf в каталоге конфигурации Apache:
     нано /etc/httpd/yourdomain.com.conf 
  2. Вставьте следующее содержимое в файл .conf:
     
    ServerName www.yourdomain.com
      ServerAlias ​​yourdomain.com
      DocumentRoot /var/www/yourdomain.com/public_html
      ErrorLog /var/www/yourdomain.com/error.log
      CustomLog / var / www / yourdomain.com / requests.log объединены
     

    В приведенном выше примере мы сообщаем Apache, что мы будем использовать порт 80 для связи и что yourdomain.com — это имя виртуального хоста. Кроме того, мы также указываем каталоги для файлов веб-сайта (корень документа) и журналов ошибок.

  3. Перезапустите Apache, чтобы изменения вступили в силу:
     systemctl перезапуск httpd.service 

Вот и все, вы только что создали виртуальный хост Apache для своего домена! Теперь попробуйте получить доступ к хосту, и вы должны увидеть сообщение « It works! ”с демонстрационной страницы, которую мы сделали ранее.

Заключение

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

  1. Установить apache из CentOS 7.
  2. Создайте дерево каталогов, которое будет использоваться для хранения всех файлов вашего веб-сайта.
  3. Сделайте демонстрационную страницу, чтобы увидеть, правильно ли работает виртуальный хост Apache.
  4. Создайте виртуальный хост, разместив файлы конфигурации в каталоге Apache.

Мы надеемся, что это руководство окажется полезным.Не стесняйтесь комментировать ниже, если у вас есть какие-либо вопросы!

Эдгарас — опытный администратор серверов Hostinger. Он следит за тем, чтобы каждый сервер работал на полную мощность и имел все последние технологические достижения. Когда он не работает, Эдгарас любит кататься на лыжах и исследовать мир.

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

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

В этом руководстве мы настроим виртуальные хосты Apache. Недавно мы установили стек ламп в CentOS 8. Начните с установки Apache и продолжайте читать это руководство.

Создание папок

Создайте папку для каждого веб-сайта в / var / www / .

mkdir /var/www/domain-name.com

Сделайте пользователя apache владельцем этой папки.

chown apache: apache /var/www/domain-name.com/

Файлы конфигурации для виртуальных хостов

Apache работает со всеми файлами с расширением .conf из папки /etc/httpd/conf.d/ . Создайте файл конфигурации для своего сайта.

нано /etc/httpd/conf.d/domain-name.com.conf

Вставьте туда следующие строки. Замените domain-name.com своим доменным именем.

<виртуальный хост *: 80>
ServerName имя-домена.com
ServerAlias ​​www.domain-name.com
DocumentRoot /var/www/domain-name.com
ErrorLog /var/log/httpd/domain-name.com-error.log
CustomLog / var / log / httpd / domain -name.com-access.log объединено

Если вы хотите, чтобы несколько доменных имен работали с одним и тем же контентом, просто перечислите их через пробел в строке ServerAlias ​​.

ServerAlias ​​www.domain-name.com domain-name2.com domain-name3.com

Сохраните и закройте файл, перезапустите службу.

перезапуск systemctl httpd

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

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

echo "<Мой первый виртуальный хост Apache>"> /var/www/domain-name.com/index.html

Откройте доменное имя или IP-адрес сервера в браузере. Вы увидите содержимое файла index.html .

19703 Claymont 2093 Филадельфия Пайк # 2345, США

+1 302 498-83-59 700 300 ITGLOBAL.COM CORP

19703 Claymont 2093 Филадельфия Пайк # 2345, США

+1 302 498-83-59 700 300 ITGLOBAL.COM CORP 700 300

Как установить Apache в Ubuntu Linux

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

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

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

Чтобы начать установку HTTP-сервера Apache в Ubuntu Linux, выполните следующие действия.

Как использовать HTTP-сервер Apache в Ubuntu Linux

Как упоминалось выше, Apache широко используется в Интернете. Если вы хотите узнать, как установить и использовать его в Ubuntu Linux, продолжайте ниже.

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

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

 sudo apt update
sudo apt install apache2 

Приведенные выше команды установят HTTP-сервер Apache.

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

 sudo systemctl status apache2 

Команда выведет аналогичные строки ниже, когда Apache запущен.

 apache2.service - HTTP-сервер Apache
     Загружен: загружен (/ lib / systemd / system / apache2.услуга; включено; предустановка поставщика: включена)
     Активен: активен (работает) с Ср 2021-09-15 12:29:40 CDT; 10с назад
       Документы: https://httpd.apache.org/docs/2.4/
    Процесс: 4860 ExecStart = / usr / sbin / apachectl start (код = завершен, статус = 0 / УСПЕХ)
   Основной PID: 4864 (apache2)
      Задач: 55 (лимит: 4651)
     Память: 4,7 МБ
     CGroup: /system.slice/apache2.service
             ├─4864 / usr / sbin / apache2 -k start
             ├─4865 / usr / sbin / apache2 -k start
             └─4866 / usr / sbin / apache2 -k start

15 сентября 12:29:40 ubuntu2004 systemd [1]: Запуск HTTP-сервера Apache...
15 сентября 12:29:40 ubuntu2004 apachectl [4863]: AH00558: apache2: Не удалось надежно определить>
 

Как разрешить Apache через брандмауэр Ubuntu

Если вы используете Ubuntu в защищенном режиме с включенным брандмауэром, вам необходимо разрешить HTTP (80) и HTTPS (443) для веб-сервера Apache. В большинстве случаев сервер Ubuntu работает без включенного брандмауэра. Однако, если вы не уверены, выполните приведенные ниже команды.

Если вы используете UFW для управления брандмауэром Ubuntu, выполните следующие команды, чтобы разрешить трафик.

 sudo ufw allow 'Apache Full' 

Это разрешит полный трафик к Apache.

При открытом брандмауэре просто перейдите к имени хоста или IP-адресу сервера, чтобы увидеть, открыта ли страница Apache по умолчанию.

 http: // localhost 

Вы должны увидеть страницу приветствия Apache по умолчанию.

Как настроить Apache в Ubuntu Linux

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

В Ubuntu Linux это структуры каталогов и файлы конфигурации Apache.

Все файлы конфигурации Apache находятся в каталоге / etc / apache2 . Это считается домашним каталогом Apache.

Основной файл конфигурации Apache: /etc/apache2/apache2.conf . Глобальные настройки конфигурации выполняются в файле, но этот файл редко когда-либо затрагивается.

Конфигурации портов, включая изменение портов прослушивания по умолчанию, указаны в этом файле / etc / apache2 / ports.conf . Порты здесь — это то, что Apache ожидает от трафика.

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

Чтобы активировать веб-сайты, чтобы они были связаны с каталогом / etc / apache2 / sites-enable , выполните следующую команду.(замените example.com.conf вашим файлом VirtualHost)

 sudo a2ensite example.com.conf 

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

Чтобы деактивировать виртуальный хост, используйте команду ниже. (замените example.com.conf файлом VirtualHost вашего веб-сайта).

 sudo a2dissite example.com.conf 

Apache использует модули для улучшения и добавления дополнительных функций, и они расположены в каталоге / etc / apache2 / mods-available / .

Модули

доступны для загрузки с Apache, только если они включены и имеют символическую ссылку на каталог / etc / apache2 / mods-enable / .

Команды a2enconf и a2disconf могут включать и отключать модули. Как только модули активированы и связаны с каталогом mod-enable , они становятся доступными для загрузки Apache.

Apache также имеет файлы журнала ( access.

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

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