Ubuntu настройка виртуальных хостов apache: Виртуальные хосты Apache: безопасная настройка для Debian/Ubuntu
В этом руководстве мы расскажем, как настроить виртуальный хост apache или vhost в ubuntu.
Использование виртуального хоста позволяет администратору использовать один сервер для размещения нескольких доменов или сайтов с одного интерфейса или IP-адреса с помощью соответствующего механизма.
В принципе, вы можете использовать один IP-адрес для сервера нескольких доменных имен.
Метод виртуального хоста широко используется в провайдере виртуального хостинга.
Предпосылки
Прежде чем вы начнете с этим руководством, вы должны, по крайней мере, иметь базовые знания о linux, знать базовую команду оболочки для Linux, учетную запись пользователя root или не-root с привилегиями sudo, установленными на вашем сервере.
Также у вас был установлен apache.
Вы должны указать свое доменное имя на IP-адрес вашего сервера.
Для примера в этом руководстве мы создадим виртуальный хост со следующими настройками:
Domain name : test1. example.com Document root : /var/www/example.com/
Шаг 1 — Создайте структуру каталогов
Корень документа — это каталог верхнего уровня, на который смотрит Apache, чтобы найти контент для обслуживания.
Обычно используют имя public_html, чтобы его было легко распознать.
Например, для наших сайтов мы собираемся сделать наши каталоги такими:
$ sudo mkdir -p /var/www/test1.example.com/public_html
Шаг 2 — Создать пример страницы для виртуального хоста
Мы создадим простой HTML-файл и поместим в виртуальный хост.
$ nano /var/www/test1.example.com/public_html/index.html
В этом файле создайте простой HTML-документ с указанием сайта, к которому он подключен. Мой файл выглядит так:
<html> <head> <title>Welcome to test1.example.com!</title> </head> <body> <h2>Success! The test1.example.com virtual host is working!</h2> </body> </html>
Шаг 3 — Создайте новые файлы конфигурации виртуального хоста
Apache поставляется с файлом виртуального хоста по умолчанию с именем 000-default. conf, который используется по умолчанию или для захвата неопределенного виртуального хоста.
Мы будем использовать в качестве шаблонов для создания нашего виртуального хоста.
Как перечислить все виртуальные хосты на веб-сервере Apache
Создайте наш файл конфигурации виртуального хоста на основе файла 000-default.conf, используя следующую команду:
$ sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/test1.example.com.conf
Откройте новый файл конфигурации виртуального хоста, используя nano
$ sudo nano /etc/apache2/sites-available/test1.example.com.conf
Отредактируйте этот файл так:
<VirtualHost *:80> ServerAdmin [email protected] ServerName test1.example.com ServerAlias test1.example.com DocumentRoot /var/www/test1.example.com/public_html ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost>
Примечание: вы можете использовать ServerAlias для создания виртуального хоста с другим именем, но с тем же корнем документа, например, www. example.com и example.com. Конфигурация будет такой
ServerName example.com ServerAlias www.example.com
Шаг 4 — Включите новую конфигурацию виртуального хоста для Apache
Теперь, когда мы создали наши файлы виртуального хоста, мы должны включить их.
Apache включает в себя некоторые инструменты, которые позволяют нам сделать это.
Мы используем a2ensite для включения конфигурации
$ sudo a2ensite test1.example.com.conf
Вам нужно перезапустить Apache, чтобы изменения вступили в силу:
Поделитесь статьей:
Виртуальные хосты Apache: безопасная настройка для Debian/Ubuntu
Всем привет! Данная статья описывает правильную, безопасную настройку виртуальных хостов в Debian.
Пользуясь данной инструкцией Вы сможете установить безопасные права доступа хостов так, что каждый хост сможет обращаться к данным, предназначенным только для него самого.
Давайте в качестве примера создадим виртуальный хост «site.com».
Шаг 0 – Создание файла конфигурации виртуального хоста
Скопируем стандартный файл конфигурации в качестве исходника:
cp /etc/apache2/sites-available/default /etc/apache2/sites-available/site.com
Шаг 1 — Права пользователей
Для каждого хоста будет создан отдельный пользователь. Домашние директории при этом будут храниться по пути /var/www/папка_пользователя.
Создаём пользователя site.com с созданием домашней директории в /var/www/. Флаги:
-m — создание папки автоматически;
-U — создание одноименной группы, в которую пользователь будет помещён;
-s — указание шелла, в нашем случае — шелл будет отсутствовать.
useradd site.com -b /var/www/ -m -U -s /bin/false
Задаём пароль пользователя:
passwd site.com
Устанавливаем права на папку пользователя:
chmod 754 /var/www/site. com
Создаём папку для веб-сайта:
mkdir -p -m 754 /var/www/site.com/public_html/
Создаём папку для хранения сессий/загружаемых файлов/логов
mkdir -p -m 777 /var/www/site.com/tmp
Разрешаем удалять папку только владельцу:
chmod +t /var/www/site.com/tmp
Задаём владельца всех вложенных папок
chown -R site.com:site.com /var/www/site.com/
Шаг 2 — Запуск Apache от разных пользователей
Из коробки Apache работает от одного пользователя для всех хостов, то есть злоумышленник, получив доступ к одному сайту может прочитать файлы соседних проектов. Для исправления этого недостатка нужно установить модифицированную версию Apache под названием apache2-mpm-itk. После установки в конфигах виртуальных хостов можно будет указать от какого пользователя и группы должен работать apache для конкретного сайта.
apt-get install apache2-mpm-itk
Пользователь и группа задается строкой в конфиге:
AssignUserId www-data site. com
Здесь в качестве группы мы указываем www-data для того, чтобы из веба нельзя было править файлы нашего проекта, кроме тех, на которых стоят права o+w. При этом нужно запретить консоль у пользователя www-data:
usermod -s /bin/false www-data
Шаг 3 — Отдельный tmp для каждого сайта
Заданием отдельной временной папки для каждого сайта мы предотвращаем инклуд сессий с соседнего сайта. Для этого используем директивы upload_tmp_dir и session.save_path:
php_admin_value upload_tmp_dir "/var/www/site.com/tmp"
php_admin_value session.save_path "/var/www/site.com/tmp"
Шаг 4 — Запрет PHP выходить выше пользовательской домашней директории
Запрет выхода выше директории задаётся директивой open_basedir:
php_admin_value open_basedir "/var/www/site.com/:."
Шаг 5 — Хранение логов в папке пользователя
Файлы для хранения логов ошибок и доступа задаются следующими директивами:
ErrorLog /var/www/site. com/error_log
CustomLog /var/www/site.com/access_log combined
В результате на выходе получаем следующий конфиг:
<VirtualHost *:80>
ServerName site.com
ServerAlias www.site.com
DocumentRoot /var/www/site.com/public_html
ErrorLog /var/www/site.com/error_log
CustomLog /var/www/site.com/access_log combined
AssignUserId site.com site.com
php_admin_value open_basedir "/var/www/site.com/:."
php_admin_value upload_tmp_dir "/var/www/site.com/tmp"
php_admin_value session.save_path "/var/www/site.com/tmp"
</VirtualHost>
Шаг 6 — Завершение настройки
После сохранения конфигурации нужно активировать виртуальный хост:
a2ensite site.com
А затем перечитать конфиги:
/etc/init.d/apache2 reload
Шаг 7 — Проверка работы
Создадим тестовую веб-страницу для виртуального хоста:
vi /var/www/site.com/public_html/index.html
И запишем в него следующий код:
<html>
<head>
<title>site. com</title>
</head>
<body>
<h2>site.com</h2>
</body>
</html>
После направления доменного имени на IP-адрес сервера при обращении к даному адресу в браузере будет открыта созданная нами веб-страничка. Виртуальный хост полностью настроен.
Виртуальные хосты Apache2 в Ubuntu 16.04 и Ubuntu 14.04
Во время разработки, одним хостом не обойдешься. На одном можно разрабатывать, на другом тестировать, а на третьем еще один проект.
Плюс ко всему, в Apache2 по умолчанию файлы сайта хранятся в /var/www, у меня же они будут находиться в моей домашней папке, /home/goodigy/sites.
Apache2 может определять хосты по ip-адресам, по доменным именам и по портам.
Мы будем использовать второй вариант, то есть определение хостов по доменным именам.
В Apache2, установленном в Ubuntu 16.04 и Ubuntu 14.04, для этого уже почти все готово.
В папке /etc/apache2/sites-available будут храниться все конфигурационные файлы виртуального хоста.
Затем мы его просто будем включать и выключать по надобности.
Один файл там уже есть, на основе его мы и сделаем свой.
Скопируем под именем example (наш хост будет называться example, и в браузере станет доступен по ссылке http://example)
sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/example.conf
В предыдущих версиях apache2 (до версии 2.4), не использовались расширения файлов .conf. В новых версиях (с версии 2.4) это приведет к ошибке.
Теперь надо отредактировать, вновь созданный, файл
sudo nano /etc/apache2/sites-available/example.conf
Файл приводим к следующему виду:
<VirtualHost *:80>
ServerName example
DocumentRoot /home/goodigy/sites/example
<Directory /home/goodigy/sites/example>
Options Indexes FollowSymlinks
AllowOverride All
Require all granted
</Directory>
ErrorLog /home/goodigy/sites/example/error. log
CustomLog /home/goodigy/sites/example/access.log combined
</VirtualHost>
Разъяснение настроек:
- ServerName example — указание доменного имени по которому будет определяться хост.
- DocumentRoot /home/goodigy/sites/example — привязывает папку к хосту.
- <Directory /home/goodigy/sites/example>
Options Indexes FollowSymlinks
AllowOverride All
Require all granted
</Directory> — это настройки папки, - Options Indexes FollowSymlinks — если нет индексного файла (index.html, index.php), показывать список файлов, удобно на локальном сервере.
- AllowOverride All — разрешает переопределять настройки в .htaccess.
- Require all granted — доступ разрешен всем.
- ErrorLog — указывает расположение файла с логом ошибок, я их храню в папке с сайтом.
- CustomLog — указывает расположение файла с логом доступа, я их храню в папке с сайтом.
Сохраняем.
Создаем папки, указанные в конфигурационном файле
mkdir /home/goodigy/sites
mkdir /home/goodigy/sites/example
Включаем сайт
sudo a2ensite example.conf
И отключаем тот, который по умолчанию
sudo a2dissite 000-default.conf
Перезапускаем Apache2
sudo service apache2 restart
Далее, нам нужно добавить доменное имя в файл /etc/hosts. Открываем его на редактирование
sudo nano /etc/hosts
Выглядит он, примерно, так
127.0.0.1 localhost
127.0.1.1 googidy-comp
# The following lines are desirable for IPv6 capable hosts
::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
Туда надо добавить указание на наш домен example
127. 0.0.1 localhost
127.0.1.1 igy-nout
127.0.0.1 example
# The following lines are desirable for IPv6 capable hosts
::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
Сохраняем.
Все, теперь по адресу http://example доступен наш новый хост. В браузере должна отобразиться папка с файлами, так как там отсутствует индексный файл.
Далее, Шпаргалка по путям к конфигурационным файлам LAMP.
apache2 настройка virtualhost
Для настройки виртуальных хостов на 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, таким образом я реагирую практически моментально
Настройка 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, таким образом я реагирую практически моментально
vhosts. conf | конфигурирование Apache для поддержки виртуальных хостов
httpd-vhosts.conf — создание виртуальных хостов
Концепция виртуальных хостов позволяет создавать, конфигурировать и обслуживать на одном (физическом) веб-сервере Apache множество сайтов.
Виртуальный хост может быть:
«привязанным к IP-адресу» — используется отдельный IP-адрес для каждого сайта
или
«привязанным к имени» — один IP-адрес для множества сайтов с различными именами.
Термин Виртуальный — якобы существующий, получил распространение в конце 80-х годов. Компьютеры того времени не имели жестких дисков и при включении могли только подвести считывающую головку дисковода к первой дорожке гибкого диска. В начале работы, с пятидюймового системного диска емкостью 256 Кб загружались в память основные компоненты операционной системы (OS-DOS). Затем, с другой дискеты, программное обеспечение, например, Бейсик. Созданная на нем программа записывалась на гибкий диск. Для её исполнения необходимо было загрузить в память интерпретатор Бейсика. То есть, постоянно работал дисковод, приходилось менять гибкие диски, что занимало много времени.
На определенном этапе, с увеличением емкости памяти, появилась возможность часть её выделять и присваивать имя. В эту, именованную, допустим, как диск N, область памяти (получившую название — виртуальный диск), переписывалось нужное программное обеспечение. Отпадала необходимость постоянно обращаться к гибким дискам, что в десятки раз увеличивало производительность работы.
Хост (жарг. host — хозяин) — в обычном понимании любой компьютер, сервер, подключённый к локальной или глобальной сети.
Веб-узел — каждый подключенный к Интернету компьютер, независимо от выполняемых функций (сервер, компьютер клиента, DNS и FTP-сервер и т. д.) — имеет свой уникальный IP-адрес. Иначе обмен информацией — невозможен.
При включении модема, маршрутизатора интернет-провайдер выделит, для входа в сеть Интернет с вашего компьютера, динамический (временный) IP — адрес (ай-пи-адрес).
, в [an error occurred while processing this directive] вам выделен IP — [an error occurred while processing this directive]
Как настроить конфигурацию виртуального хоста Apache (с примерами)
Используя виртуальный хост Apache, вы можете запускать несколько веб-сайтов на одном сервере.
Например, я могу запустить и thegeekstuff.com, и top5freeware.com на одном физическом сервере, на котором работает один веб-сервер Apache.
Рис. Виртуальный хост Apache (несколько веб-сайтов, один Apache)
Существует два типа конфигураций виртуального хоста Apache: 1) виртуальный хост на основе IP и 2) виртуальный хост на основе имени.Виртуальный хост на основе имени рекомендуется для большинства сценариев.
Виртуальный хост на базе IP
В этой конфигурации, когда вы указываете два веб-сайта (с разными IP-адресами) на сервер, на котором работает Apache, на этом физическом сервере должны быть настроены два разных IP-адреса.
Это означает, что на сервере должны быть две карты Ethernet, каждая из которых настроена на IP-адрес соответствующего веб-сайта, который будет обслуживать виртуальный хост Apache. Таким образом, для большинства аспектов это непрактично, и вам не следует его использовать.
В следующем примере сервер содержит две карты NIC, одна настроена с IP-адресом 192.168.101.1 для thegeekstuff.com, другая — с 192.168.102.1 для top5freeware.com. Оба эти IP-адреса обслуживаются одним веб-сервером Apache, работающим на этом сервере с использованием виртуального хоста на основе IP.
Рис. Виртуальный хост на базе IP Apache
Виртуальный хост на основе имени
В этой конфигурации, когда веб-сервер Apache получает запрос, он ищет имя хоста в заголовке HTTP и, в зависимости от имени хоста, обслуживает разные веб-сайты. Это очень просто, так как вам нужен только один IP-адрес на этом физическом сервере; но вы обновляете DNS, добавляя несколько имен веб-сайтов, указывающих на один и тот же IP-адрес. Для всех практических целей вы будете использовать только конфигурацию виртуального хоста на основе имени.
В следующем примере сервер содержит только одну карту NIC, для которой настроен IP-адрес 192.168.101.1. Запись DNS для веб-сайтов thegeekstuff.com и top5freeware.com указывает на IP-адрес 192.168.101.1. Когда Apache получает запрос, он ищет запись имени хоста в заголовке HTTP и обслуживает соответствующий веб-сайт.
Рис. Виртуальный хост на основе имени Apache
1. Раскомментируйте httpd-vhosts.conf в httpd.conf
Если вы установили Apache 2 из исходного кода, по умолчанию следующая строка будет прокомментирована в файле httpd.conf. Раскомментируйте эту строку.
# vi /usr/local/apache2/conf/httpd.conf Включите conf / extra / httpd-vhosts.conf
2. Настройка виртуальных хостов
Измените httpd-vhosts.conf, как показано ниже, чтобы настроить именованный виртуальный хост для двух хостов.
- NameVirtualHost *: 80 — указывает, что все виртуальные хосты на основе имен будут прослушивать порт по умолчанию 80
-
- В следующем примере мы настраиваем виртуальный хост для thegeekstuff.com и top5freeware.com, прослушивающих один и тот же порт 80.Итак, будет два
- Когда вы переходите на thegeekstuff.com, файлы в / usr / local / apache2 / docs / thegeekstuff будут обслуживаться Apache; и access_log и error_log для этого сайта будут находиться в / usr / local / apache2 / logs / thegeekstuff
# vi /usr/local/apache2/conf/extra/httpd-vhosts. conf ИмяVirtualHost *: 80ServerAdmin [email protected] DocumentRoot "/ usr / local / apache2 / docs / thegeekstuff" Имя сервера thegeekstuff.com ServerAlias www.thegeekstuff.com ErrorLog "журналы / thegeekstuff / error_log" CustomLog "журналы / thegeekstuff / access_log" общие ServerAdmin [email protected] DocumentRoot "/ usr / local / apache2 / docs / top5freeware" ServerName top5freeware.com ServerAlias www.top5freeware.com ErrorLog "журналы / top5freeware / error_log" CustomLog "журналы / top5freeware / access_log" общие
3.Проверьте синтаксис конфигурации VirtualHost
Проверьте синтаксис виртуальной конфигурации с помощью «httpd -S», как показано ниже. Когда все настроено правильно, отображается просто «Синтаксис ОК».
# / usr / локальный / apache2 / bin / httpd -S Конфигурация VirtualHost: Синтаксис OK
Если что-то не настроено должным образом, будет отображаться предупреждающее сообщение, в том числе сообщение «каталог не выходит», как показано ниже.
# / usr / локальный / apache2 / bin / httpd -S Предупреждение: DocumentRoot [/ usr / local / apache2 / docs / top5freeware] не существует Предупреждение: ErrorLog [/ usr / local / apache2 / logs / thegeekstuff] не существует Синтаксис OK
4.Перезагрузите Apache и проверьте
# / usr / local / apache2 / bin / apachectl перезапуск
Теперь, когда вы переходите на thegeekstuff.com (или www.thegeekstuff.com), apache будет обслуживать файлы из каталога / usr / local / apache2 / docs / thegeekstuff.
Когда вы переходите на top5freeware.com (или www.top5freeware.com), тот же apache, работающий на том же сервере, будет обслуживать файлы из каталога / usr / local / apache2 / docs / top5freeware.
Повторим, что для правильной работы виртуального хоста на основе имени запись DNS для обоих этих веб-сайтов должна указывать на один и тот же внешний IP-адрес физического сервера, на котором работает веб-сервер 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 файл и поместим его в корень документа виртуального хоста
$ nano /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
$ sudo 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 в Ubuntu 18.04
Apache Virtual Hosts позволяет размещать несколько веб-сайтов на одном сервере.Apache разделит свои функции и компоненты на отдельные блоки, чтобы мы могли настраивать их независимо. В этом руководстве вы узнаете, как настроить виртуальные хосты Apache на сервере Ubuntu 18.04.
Создание виртуальных хостов в Ubuntu 18.04 #
С помощью виртуальных хостов мы можем указать отдельный корень документа веб-сайта, политику безопасности, использовать разные сертификаты SSL и многое другое.
Предварительные требования #
Создание структуры каталогов #
Во-первых, нам нужно создать каталог, в котором мы будем хранить файлы сайта домена и обслуживать ответы посетителей сайта.Обычно он называется DocumentRoot. Вы можете установить корень документа в любое место по вашему желанию, но лучше всего установить его в структуре каталогов. Таким образом, мы будем хранить все по адресу / var / www
.
/ var / www /
├── example1.com
│ └── public_html
├── example2.com
│ └── public_html
По сути, мы создадим отдельный каталог внутри каталога / var / www для каждого домена, который мы хотим разместить на нашем сервере. Внутри этих каталогов мы создадим каталог public_html, в котором будут храниться файлы веб-сайта домена.
судо mkdir -p /var/www/example.com/public_html
Создайте файл index.html
в корневом каталоге документа домена для целей тестирования. По умолчанию эта страница отображается, когда посетители заходят на ваш сайт.
Чтобы создать новый файл index.html
с помощью вашего любимого текстового редактора, введите:
судо нано /var/www/example.com/public_html/index.html
После этого добавьте в него следующие строки:
Добро пожаловать !!
Отлично! пример. com завершена!
Все команды выполняются от имени пользователя sudo, а вновь созданные файлы и каталоги принадлежат пользователю root. Поэтому нам нужно изменить владельца корневых каталогов документов, чтобы избежать проблем с разрешениями для нашего обычного пользователя. Таким образом, обычный пользователь может без проблем изменять файлы в наших веб-каталогах.
sudo chown -R www-data: /var/www/example.com
Создание файлов виртуального хоста #
Файлы конфигурации виртуальных хостов Apache будут храниться в каталоге / etc / apache2 / sites-available
, и мы можем включить его, создав символические ссылки на каталог / etc / apache2 / sites-enabled
.
Создайте новый файл с помощью выбранного текстового редактора, набрав:
судо нано /etc/apache2/sites-available/example.com.conf
ServerName example.com
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} / пример.com-error.log
CustomLog $ {APACHE_LOG_DIR} /example.com-access.log вместе
- ServerName: Это должно быть ваше доменное имя и соответствовать конфигурации виртуального хоста.
- ServerAlias: Все другие домены или субдомены, которые также должны соответствовать этому виртуальному хосту, обычно субдомен www.
- DocumentRoot: Путь к каталогу виртуального хоста, из которого Apache будет обслуживать файлы домена.
- Опции: Эта директива определяет, какие функции сервера доступны в определенном каталоге.
- -Indexes: Это предотвратит отображение каталогов.
- FollowSymLinks: Apache будет следовать символическим ссылкам, если этот параметр включен.
- AllowOverride: Указывает, какие директивы, объявленные в файле .htaccess, могут переопределять директивы конфигурации.
- ErrorLog, CustomLog: Задает расположение файлов журнала.
Вы можете дать любое имя вашему файлу конфигурации, но рекомендуется давать имя файла так же, как имя домена.
Теперь мы создадим символическую ссылку в каталоге / etc / apache2 / sites-enabled, чтобы включить вновь созданный веб-сайт.
По умолчанию в системах Ubuntu есть вспомогательный скрипт для создания символических ссылок. Чтобы создать с помощью вспомогательного скрипта a2ensite, выполните следующую команду:
sudo a2ensite example.com
Вы также можете создать символическую ссылку вручную по типу:
sudo ln -s / etc / apache2 / sites-available / example.com.conf / и т. д. / apache2 / с поддержкой сайтов /
После создания проверьте синтаксические ошибки, используя:
sudo apachectl configtest
Если ошибок нет, он покажет результат ниже:
Выход
Синтаксис OK
Вам следует перезапустить службу apache2, чтобы изменения вступили в силу с помощью следующей команды:
sudo systemctl перезапустить apache2
Наконец, вы можете подтвердить, открыв свой http://example. com в своем веб-браузере, и он должен показать вам следующее:
Заключение №
В этом руководстве вы узнали, как создавать файлы виртуального хоста apache для размещения нескольких доменов на одном сервере Ubuntu.Если у вас есть какие-либо вопросы, вы можете задать их в поле для комментариев ниже.
Если наш контент вам поможет, рассмотрите возможность покупки нам кофе
Спасибо за вашу поддержку.
RHEL7: настройка виртуального хоста Apache.
Примечание. Это цель экзамена RHCE 7.
Предварительные требования
Сначала следуйте инструкциям по установке веб-сервера Apache.
Примечание. Не забудьте установить пакет httpd-manual .Это может очень помочь вам с любой проблемой синтаксиса.
Процедура настройки
Предположим, ваш веб-сайт называется dummy-host.example.com .
Создайте каталог /var/www/html/dummy-host.example.com :
# cd / var / www / html # mkdir dummy-host. example.com
Создайте файл index.html и назначьте правильный контекст SELinux :
# echo "Это тест."> dummy-host.example.com/index.html # restorecon -R dummy-host.example.com
Создайте файл /etc/httpd/conf.d/vhosts.conf и вставьте следующие строки:
ServerAdmin [email protected] DocumentRoot /var/www/html/dummy-host.example.com Имя сервера dummy-host.example.com Журналы ErrorLog / dummy-host.example.com-error_log Журналы CustomLog / dummy-host.example.com-access_log common
При желании переименуйте файл / etc / httpd / conf.d / ssl.conf , иначе вы получите дополнительный нерабочий виртуальный хост https , отображаемый в конфигурации.
# cd /etc/httpd/conf.d ; mv ssl.conf ssl.conf2
Проверить правильность конфигурации :
# конфигурация apachectl Синтаксис ОК
Примечание. Вы также можете ввести: # httpd -t
Перезапустите службу httpd :
# перезапуск apachectl
Примечание 1: Вы также можете ввести: # systemctl restart httpd
Примечание 2: Для незначительных изменений конфигурации также можно перезапустить демон Apache без потери текущих соединений: # apachectl graceful
Проверьте конфигурацию виртуального хоста (ов):
# httpd -D DUMP_VHOSTS Конфигурация VirtualHost: *: 80 - это NameVirtualHost фиктивный хост сервера по умолчанию.example.com (/etc/httpd/conf.d/vhosts.conf:1) порт 80 namevhost dummy-host.example.com (/etc/httpd/conf.d/vhosts.conf:1) порт 80 имя vhost dummy-host.example.com (/etc/httpd/conf.d/vhosts.conf:1)
Время тестирования
Проверить конфигурацию:
# yum install -y elinks # elinks http://dummy-host. example.com
Как создать виртуальные хосты Apache в Ubuntu 18.04
В этом руководстве мы узнаем, как создать виртуальный хост с нуля в ubuntu 16.04 и 18.04
Если вы не установили Apache2, PHP, Mysql (LAMP), вы можете следовать ниже
Установите Apache2, PHP, Linux, Mysql (LAMP)
Виртуальный хост — это способ запуска нескольких веб-сайтов на одной машине. например webiste1.com, website2.com и т. д. Существует два типа виртуальных хостов:
- виртуальных хостов на основе IP.
- Виртуальные хосты на основе имени.
В этом руководстве мы узнаем, как создать виртуальный хост на вашем локальном компьютере.
Примечание: Это руководство предназначено только для пользователей Ubuntu.
Итак, приступим.
Шаг 1. Создайте каталог для каждого домена.
В этом посте мы рассмотрим пример создания виртуального хоста для двух доменов. Ниже представлен домен, который мы собираемся создать виртуальный хост
.
- example1.local
- example2.local
Прежде чем мы приступим к созданию виртуального хоста, нам нужно будет создать отдельный каталог для каждого домена.Для этого введите следующую команду:
# / var / www / html /
mkdir пример1 пример2
Приведенная выше команда создаст два каталога example1
и example2
в / var / www / html
path
Шаг 2. Настройка разрешений
Затем мы дадим доступ к папке apache2. Введите следующую команду
sudo chown -R www-data: www-data / var / www / html / example1
sudo chown -R www-data: www-data / var / www / html / example2
Шаг 3.Создайте демонстрационную страницу для каждого виртуального хоста.
Мы создадим демонстрационную страницу для примера1
# / var / www / html / example1 / index. html
Демо-заголовок для домена example1
Это демонстрационная страница для домена example1.
Теперь мы создали демонстрационную страницу для домена example1.нам не нужно каждый раз создавать новый файл. мы можем скопировать этот файл в другой домен и отредактировать. Для этого введите следующую команду.
cp /var/www/html/example1/index.html /var/www/html/example2/index.html
Отредактируйте и измените содержимое.
# / var / www / html / example2 / index.html
Демо-заголовок для домена example2
Это демонстрационная страница для домена example2.
Шаг 4. Создайте файл виртуального хоста для каждого хоста.
Теперь создадим виртуальный хост для каждого домена.
скопируем и отредактируем существующий 000-default.conf
. Для этого введите следующую команду для домена example1.
sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/example1.conf
Теперь отредактируйте скопированный файл в редакторе кода.
# / etc / apache2 / sites-available / example1.conf
ServerName example1.local
ServerAlias www.example1.local
DocumentRoot / var / www / html / example1
ErrorLog $ {APACHE_LOG_DIR} /error.log
CustomLog $ {APACHE_LOG_DIR} /access.log вместе
Тот же процесс для домена 2.
sudo cp /etc/apache2/sites-available/000-default.conf / etc / apache2 / sites-available / example2.конф
# / etc / apache2 / sites-available / example2. conf
ServerName example2.local
ServerAlias www.example2.local
DocumentRoot / var / www / html / example1
ErrorLog $ {APACHE_LOG_DIR} /error.log
CustomLog $ {APACHE_LOG_DIR} /access.log вместе
Шаг 5. Включите виртуальный хост (демонстрационный сайт)
Затем включите созданные виртуальные хосты.
Для включения домена example1.введите следующую команду.
sudo a2ensite example1.conf
Выход:
Включение сайта example1.local
Чтобы активировать новую конфигурацию, вам необходимо запустить:
перезагрузка службы apache2
То же для домена 2.
sudo a2ensite example2.conf
Выход:
Включение сайта example2.local
Чтобы активировать новую конфигурацию, вам необходимо запустить:
перезагрузка службы apache2
Шаг 6.Перезагрузите сервер apache2
Теперь перезапустите сервер.