Меню Рубрики

Установка dns для apache

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

sudo systemctl restart apache2

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

Читайте также:  Установка по настройке протокол

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

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

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

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

SSLOptions +StdEnvVars

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

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

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

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

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

Выводы

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

источник

Как настроить apache2 и домены на домашнем сервере?

Введение
Итак. Есть домашний сервер, на нем стоит Debian(без графических дополнений).
Так же были установлены apache2 php5 mysql и кое как настроены.
Сервер подключен к маршрутизатору(dlink320),маршрутизатор к интернету. (вся настройка идет по ssh)
IP статический и белый.
Так же был куплен домен в .ru зоне.

Ну и соответственно есть несколько вопросов.

1. Я написал в саппорт хостера, чтобы они сменили NS купленного домена на мой IP. Это правильное решение?
т.к есть же некие сторонние днс сервера пост на хабре, но я пока не понимаю зачем они нужны.

2. было созданно несколько заготовок под сайты (например test.ru, other.ru diplom.ru и т д)
и в apache2/sites-available были созданы конфиги под них,

но если я вбиваю в браузере свой ip(109.172.68.76) то выдается только тот сайт, который прописан в
sites-available/default (test.ru)
как перейти на другие заготовки?
в /etc/hosts прописанно
127.0.1.1 test.ru
127.0.1.2 diplom.ru

3. Возможно мне нужно будет знать, что то еще?

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

В Вашем днс сервере должна быть корректно описанана днс зона для Вашего domain.zone
in a, mx, www алиасы, указывающие на «белый» ip вашего домашнего сервера.
в веб сервере надо указать что есть виртуал хост domain.zone, с корневым каталогом /var/www/domain.zone и подкаталогами /var/www/forum как forum.domain.zone
взяты мной для примера.
ну и да, Ваш домашний сервер теперь должен работать круглосуточно 24/7/365, быть доступен по 53 и 80 портам, а так же, если вы прописали на него MX, и 25 порт для приёма почты для домена.

Поздравляю, Вы сделали сайт непонятно зачем живущий у Вас дома, вместо того чтобы за пару баксов в месяц (это дешевле, чем оплачивать счета за свет) купить простейшую виртуалку у любого хостера вроде hetzner или в любом облаке вроде amazon/azure c реальной доступностью 24/7/365

теперь остаётся только смотреть за скриптами, что Вашу машину не проломали по уязвимостям, беспокоиться за её работу.

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

Вот вам пошаговая инструкция, как запустить сайт по адресу supersite на виртуальном хосте:
1. Открываем /etc/hosts
2. Пишем 127.0.0.1 supersite
3. Открываем /etc/apache2/sites-available/default, копируем все и закрываем.( открываем через консоль sudo gedit /etc/apache2/sites-available/default), иначе может не получится скопировать.
4. Далее пишем в консоле sudo gedit /etc/apache2/sites-available/supersite. Вставляем то, что скопировали . Теперь меняем следующее:
— ServerName supersite
— DocumentRoot путь до папки supersite
— В первых двух блоках, приблизительно такого вида

Читайте также:  Установка вентилятора в газовую колонку

источник

Часть 1. Установка и настройка авторитетного DNS сервера на основе решения PowerDNS // Базовая установка

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

PowerDNS — представляет собой высокопроизводительный DNS-сервер, написанный на C++ и лицензируемый под лицензией GPL. Разработка ведётся в рамках поддержки Unix-систем; Windows-системы более не поддерживаются.
Сервер разработан в голландской компании PowerDNS.com Бертом Хубертом и поддерживается сообществом свободного программного обеспечения.
PowerDNS использует гибкую архитектуру хранения/доступа к данным, которая может получать DNS информацию с любого источника данных. Это включает в себя файлы, файлы зон (англ.) BIND, реляционные базы данных или директории LDAP.
PowerDNS по умолчанию настроен на обслуживание запросов из БД.
После выхода версии 2.9.20 программное обеспечение распространяется в виде двух компонентов — (Authoritative) Server (авторитетный DNS) и Recursor (рекурсивный DNS). Официальный сайт: www.powerdns.com

Итак, начнем все с чистой операционной системы CentOS, скачанной с официального сайта www.centos.org.
Конфигурация моего оборудования:
HDD: 15Gb
RAM: 16Gb
CPU: 8*2,4GHz
OS: CentOS 7 (x64)
Дистрибутив: CentOS-7-x86_64-Minimal-1503-01.iso

Моя версия ПО:
PowerDNS authoritative v3.4.8
PowerDNS recursor v3.7.3
Poweradmin v2.1.7

1) Обновляем систему и подключаем репозитории:

2) Устанавливаем различные полезные утилиты

3) Отключение firewalld и устанавливаем iptables

Создаем правила для файервола

4) Создаем папку со скриптами для управления

5) Устанавливаем базу данных. Для Centos 7 лучше подходит MariaDB.
Тут есть несколько вариантов:
— Локальная база без репликации
— SQL кластер.

Установка локальной базы без репликации
Добавляем репозиторий.

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

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

Затем выберите «Y» (Да) для остальных подсказок, пока вы не закончите.

Последнее, необходимо заменить cnf.ini файл по умолчанию в /etc/ для MariaDB. Но для начала нужно перейти в:

И использовать один из предопределенных cnf.ini конфигураций которые доступны (Huge, Medium и Small) в данной папке.
Сделаем резервное копирование cnf.ini файла:

Затем скопируйте один из предварительных конфигураций в MariaDB:

Перезапускаем MariaDB и добавляем в автозапуск

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

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

Также в качестве базы данных для PowerDNS, можно использовать SQL кластер.
Настройка SQL кластера
Ноды кластера устанавливаются на тех же серверах, что и сам PowerDNS. При изменении зоны на одном сервере, происходит репликация базы, следовательно зона изменяется на другом сервере.
Я устанавливал кластер так:
Добавляем репозиторий MariaDB как в первой части статьи и устанавливаем необходимые пакеты.

Запуск на первичной ноде (primary)

Запуск на остальных нодах (secondary)

Проверяем репликацию
На каждой ноде смотрим статус кластера:

Создаем тестовую базу данных на первой ноде

Проверяем наличие этой базы на каждой ноде

На всех нодах, должно быть правильно установленно время, это обязательно. Иначе вы столкнётесь с тем что, при SST ноды с донора, синхронизируемая нода будет просто чего-то ждать, без каких бы то ни было признаком активности.
Устанавливаем ntp:

Также можно указать свой ntp сервер в файле /etc/ntp.conf

6) Создание и настройка базы данных для PowerDNS
Описано на официальном сайте doc.powerdns.com
Создаем файл pdns.sql в /root и выполняем команду:

7) Устанавливаем PowerDNS autoritative.
Через репозиторий epel

Либо из исходников
Исходники PowerDNS можно найти на github.
Устанавливаем необходимые программы для сборки из исходников и выполняем предварительное конфигурирование.

Далее собираем и устанавливаем PowerDNS. Также можно посмотреть доступные опции.

8) Настраиваем конфигурацию авторитетного сервера

9) Устанавливаем рекурсивный DNS

v4.0.0 Через репозиторий powerdns

10) Установка веб интерфейса администратора
Подготовительные действия.

Открываем доступ к веб GUI

11) Загружаем последнюю версию PowerAdmin с сайта www.poweradmin.org
Я использовал версию 2.1.7

В этом файле меняются строки:
$db_host = ‘localhost’;
$db_port = ‘3306’;
$db_user = ‘imperituroard’;
$db_pass = ‘password’;
$db_name = ‘powerdns’;
$db_type = ‘mysql’;

Меняем Default session encryption key

12) Финальная настройка
Заходим по адресу 172.24.184.177/poweradmin/install/index.php
Где 172.24.184.177 — IP вашего сервера.
И вводим все предложенные данные.
После завершения установки, удаляем папку /var/www/html/poweradmin/install и заходим в веб интерфейс управления по
адресу 172.24.184.177/poweradmin/index.php
При настройке, есть несколько особенностей:
-при вводе сервера, где находится база, следует вводить localhost а не 127.0.0.1
-следует обязательно создавать пользователя с ограниченными правами на последнем шаге, в противном случае у админа будут ограниченные права.
А вот так выглядит веб интерфейс (есть русский язык):

Читайте также:  Установка второго акб приора

P.S. Эта статья — первая часть моего рассказа. В следующей части я расскажу про дальнейшие настройки, для оптимизации производительности и пр.

Редакторский дайджест

Присылаем лучшие статьи раз в месяц

Скоро на этот адрес придет письмо. Подтвердите подписку, если всё в силе.

Похожие публикации

Как послать провайдера подальше, и включить DNS по HTTPS в любом браузере

Про зеркала репозиториев Centos и выбор лучшего из них

Записи в DNS из NetXMS

Вакансии

AdBlock похитил этот баннер, но баннеры не зубы — отрастут

Комментарии 20

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

Хороший тон — это привести настройки и для firewalld, и для iptables. В крайнем случае — указать вначале: «Далее я предполагаю, что в системе используется iptables. Информацию о настройке firewalld можно найти там-то.»

А зачем вы ставите postgresql и pdns-backend-postgresql если в итоге используете mysql?

Я особо не знаком с pdns, но вот эта строчка

А зачем вы ставите postgresql и pdns-backend-postgresql если в итоге используете mysql?

Согласен, эти пакеты не нужны. Погорячился.

Я особо не знаком с pdns, но вот эта строчка
allow-recursion=0.0.0.0/0
разве не откроет возможность рекурсивных запросов для всех желающих?

Для этого нужно один сервер сконфигурировать как supermaster а другой как slave. Тогда, если у slave сервера не будет такой зоны как у supermaster-а, то он автоматически ее себе добавит.
Есть еще мысль (не проверял), сделать mysql кластер и указать на обоих серверах адрес кластера.

— как динамически обновлять адреса?

— стоит ли ставить свой линукс, полностью самостоятельно собранный из исходников?

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

Конечно стоит, так делают в маил.ру

З.Ы. Статья интересная, но интересует динамическое обновление адресов.

Уже давно можно сказать yum install epel-release

5) Устанавливаем MariaDB
Добавляем репозиторий.

Я устанавливаю из исходников, что и вам советую.

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

Я устанавливаю из исходников, что и вам советую.

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

Если вы ставили пакет из исходников, то вам, во-первых, придется следить за всеми CVE самостоятельно, поскольку безопасность вашей сборки — только ваша проблема. При установке пакета из репозитория за безопасностью следит security team дистрибутива, а она у CentOS вроде ничё так.

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

В третьих, установка через make install — «одноразовая» — никто не учитывает, какие файлы куда поставились, при обновлении непонятно, что будет с конфигами, при удалении может остаться мусор или наоборот можно стереть что-нибудь нужное. Пакетный менеджер позволяет не беспокоится о таких проблемах. Кроме того, в make install могут быть досадные ошибки.

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

Мне кажется что это такой троллинг-пост , начиная где-то вот с этого места:
Конфигурация моего оборудования: HDD: 15Gb RAM: 16Gb CPU: 8*2,4GHz

источник

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

Adblock
detector