Разное

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
  • — заключите все параметры конфигурации apache для каждого виртуального хоста между этими тегами VirtualHost. В контейнере виртуального хоста можно использовать любые директивы apache.
  • В следующем примере мы настраиваем виртуальный хост для 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 *: 80


    ServerAdmin [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.<img class="lazy lazy-hidden" src="//wwwoldi.ru/wp-content/plugins/a3-lazy-load/assets/images/lazy_placeholder.gif" data-lazy-type="image" data-src='/800/600/https/i.stack.imgur.com/FwzJu.png' /><noscript><img src='/800/600/https/i.stack.imgur.com/FwzJu.png' /></noscript> 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. Создайте каталог для каждого домена.

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

.

  1. example1.local
  2. 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

Теперь перезапустите сервер.

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

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