Как сделать локальный домен для сайта

Обновлено: 05.07.2024

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

Как создать сервер с нуля

Существует два способа создания собственного сервера: с помощью использования персонального компьютера или арендовать VPS у хостинг-провайдера .

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

Следующий этап — установить программное обеспечение (ПО). Наиболее популярными являются Open Server, Denwer, XAMPP. Это такие серверные платформы, с которыми работают веб-разработчики.

Например, Open Server уже включает в себя PHP, Apache, MySQL и прочие утилиты. С помощью нее запускается сервер дома и загружается сайт. На примере Open server можем проследить как осуществляется установка:

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

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

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

4. После открытия программы появится флажок красного цвета, кликнув по которому переходим в настройки.

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

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

Когда разрабатываешь сайт по ходу дела могут появляться какие-либо вопросы к заказчику. Так вот эти вопросы удобнее, а в некоторых случаях просто обязательно обсуждать, когда заказчик видит сам сайт. Как мы можем показать сайт заказчику если он разрабатывается на локальном сервере? Можно, конечно, выгрузить на хостинг, это как вариант. Но для меня лично это неудобно, т.к. придется делать обновление на хостинге периодически по мере поступления вопросов. Можно также работая на локалке, при каждом сохранении файлов выгружать их на хостинг, причем делается это автоматически, например, в редакторе Sublime Text 3 + плагин Sftp есть такая возможность.

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

В качестве веб-сервера я буду использовать мой любимый Open Server.

Доступ к сайту по локальной сети

Настройки Open Server вкладка Сервер

Запуск командной строки в Windows

Командная строка Windows

Исходный и конечный домены во вкладке Алиасы Open Server

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

Доступ к локальному сайту из интернета

Можно дать возможность пользователям смотреть на сайт из интернета. В данном случае локальный сервер будет выступать в роли виртуального хостинга. Но здесь есть некоторый нюанс — у вас должен быть выделенный (статичный) внешний IP-адрес. Ваш интернет-провайдер должен назначить вашему компьютеру в своей сети IP-адрес, который останется неизменным. Обычно такую услугу провайдеры предоставляют за отдельную дополнительную плату. Имея выделенный IP-адрес, доступ к локальному сайту можно решить на раз, два…

Безопасность компьютера!

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

Узнать свой IP-адрес на сайте 2ip.ru

Следующее, что нам необходимо будет сделать это создать переадресацию портов в маршрутизаторе. Для чего это нужно? Когда обращаются к нашему IP-адресу из сети компьютер должен знать куда перенаправлять эти запросы. Так вот, с помощью переадресации мы как-бы говорим открой такой то сайт. Я покажу на примере своего роутера Asus RT-N12, но суть у всех роутеров будет та же самая, поэтому тут проблем не должно возникнуть. Если у вас английская прошивка, то ищите что-то типа Port Forwarding. На крайний случай почитайте в интернете, как создать переадресацию портов в вашем роутере.

Переадресация портов в роутере Asus RT-N12

Что делать, если у вас нет выделенного IP-адреса?

Выбор тарифного плана на сайте no-ip.com

Создание хоста на сайте no-ip.com

Настройка DDNS в роутере Asus RT-N12

Добавление нового алиаса хоста в Open Server

Доступ к локальному сайту из интернет

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

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

Как создать локальный домен

  • Как создать локальный домен
  • Как настроить доменную сеть
  • Как включить компьютер в домен

Скачайте нужные скрипты для установки сервера (например, можно воспользоваться DataLifeEngine). При этом выбор скрипта не влияет на сам процесс инсталляции. В папке home создайте новую директорию с любым именем на латинице. При этом учтите, что делать это нужно как раз в случае установки сайтов с локальным доменом.

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

Зайдите в административную панель, создайте нового пользователя и установите пароль для него. На главной странице админки вы увидите ссылку к базам данных MySQL. Щелкните по ней, и вы перейдете на страницу загрузки баз данных.

Наберите в базе имя домена и через символ слеша введите команду install.php. Команда в некоторых случаях будет иной, и зависит это от конкретного скрипта. Ознакомьтесь для начала с его документацией.

gost-main-dns

Proxmox

В прошлый раз мы установили и настроили Систему виртуализации Proxmox-VE.
Список цикла статей:

Предисловие

В данной статье мы установим отдельный контейнер LXC, я кратко расскажу чем контейнеры отличаются от обычных виртуальных машин.
Установим и настроим сервис для обработки доменных имен в своей локальной сети BIND9
Настроим роутер(MikroTik) и сеть для того, чтобы наши устройства в локальной сети могли находить наши доменные имена.
И для примера настроим наш PVE1(сам сервер) для доступа к нему по доменному имени, а не IP адресу

Вроде ничего не упустил 🙂 Кому интересно прошу далее под кат!
Текста много, предупреждаю сразу 😉

Установка контейнера LXC в Proxmox-VE

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

Что такое LXC контейнер?
LXC (англ. Linux Containers) — система виртуализации на уровне операционной системы для запуска нескольких изолированных экземпляров операционной системы Linux на одном узле. LXC не использует виртуальные машины, а создаёт виртуальное окружение с собственным пространством процессов и сетевым стеком. Все экземпляры LXC используют один экземпляр ядра операционной системы.
В чем отличие обычной Виртуальной машины от LXC контейнера?
Подробно разбирать не буду, к данной статье это не относится. Просто для справки опишу основное отличие:
Контейнер использует ядро операционной системы сервера. У виртуальной машины может быть совершенно отличное ядро. Для лучшего понимания — в виртуальной машине можно запустить почти все, от Windows, до специфических Linux систем, а в контейнере можно запустить только Linux систему с тем же ядром, Windows уже не запустишь.

Начнем мы с добавления в наш сервер специального шаблона(Template) операционной системы. В Proxmox их можно скачать из своих репозиториев.
Откроем панель управления через WEB по IP адресу. И перейдем к нашему хранилищу Local(pve1), потом переходим к содержимому(Content) и нажмем кнопку Шаблоны(Templates)
Добавление шаблона Т.к. наш Proxmox основан на ОС Debian, то я принял для себя решение использовать LXC Debian 9 версии. Мне с ними удобнее работать.
Находим нужный шаблон и грузим его.
Находим наш шаблон и загружаем его Нам остается только подождать окончания загрузки.
Окончание загрузки

gost-proxmox-4

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

gost-proxmox-15

Запускаем контейнер по кнопке Start если еще не сделали это сами 🙂
Запуск контейнера Все дальнейшие действия будем проводить через консоль:
Переходим к консоли контейнера Далее начинается сам процесс установки и настройки DNS сервиса…

Установка и настройка DNS сервиса BIND9

Ждем окончания установки и пока останавливаем сервис

Для того, чтобы все работало как нужно в моей нашей сети, необходимо продумать как будут проходить запросы от сети с другим шлюзом и другим роутером обрабатывающим основные DNS запросы не относящиеся к нашей локальной сети.
Согласно статьи: Создание домашней сети на базе устройств MikroTik: Часть 7 – Firewall правильное перенаправление портов в сети с двумя шлюзами

Необходимо сделать так, чтобы локальный DNS сервис корректно обрабатывал локальное доменное имя, а остальные запросы отправлял основному роутеру(шлюзу)

Все файлы настроек и зон в bind9 находятся по пути /etc/bind/

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

Т.к я пока не планирую выводить работу BIND9 на IPv6, то я запустил службу только для IPv4. Для этого необходимо добавить опцию запуска в файл /etc/default/bind9
Добавляем опцию -4 в параметр OPTIONS

Правим основной файл настроек named.conf:

include — подключение отдельных конфигурирующих файлов. Причем порядок не менее важен.
server — определяет свойства или поведение, которое этот сервер будет использовать. Например IP адрес и вложенные параметры для него.
server -> keys — определяет какой ключ использовать для подписи при активном DNSSEC
acl trusted-dns — определяет отдельный список доступа и какой ключ использовать для него.
controls — описывает и контролирует доступ к каналу управления, используемому удаленным администратором при использовании утилиты rndc

Файл named.conf.options уже есть, проводим некоторые настройки:

directory — указывает абсолютный путь к рабочему каталогу сервера. Все последующие относительные пути используют этот базовый каталог. Если параметры каталога не указаны, используется каталог, из которого был загружен BIND.
dnssec-enable — указывает, что используется защищенная служба DNS
dnssec-validation — указывает, что распознаватель(сервер имен с кэшированием или только для кэширования) будет пытаться проверить ответы из включенных(подписанных) зон DNSSEC
dump-file — определяет абсолютный путь, по которому BIND создает дамп базы данных (кеша) в ответ на rndc dumpdb
statistics-file — Этот оператор определяет имя файла, в который будут записываться данные при выдаче команды rndc stats
version — выводить версию сервера или нет при специфических запросах.
port — на каком порту обрабатывать запросы. Лучше не менять, т.к. порт для всех DNS запросов стандартный 53
listen-on — на каких IPv4 ожидать поступления DNS запросов
listen-on-v6 — на каких IPv6 ожидать поступления DNS запросов
allow-transfer — определяет список совпадений, например IP-адрес(а), которому разрешено передавать(копировать) информацию о зоне с сервера(главного или подчиненного для зоны)
allow-query — определяет список совпадений IP-адресов, которым разрешено отправлять запросы на сервер
allow-recursion — определяет список совпадений IP-адресов, которым разрешено отправлять рекурсивные запросы на сервер

Создаем отдельный файл named.conf.logging:
В этом разделе описывается условие ведения журнала.

channel — BIND принимает несколько определений каналов и параметры того, как их вести.
category — управляет тем, какие категории заносятся в различные определенные или стандартные имена каналов.

На файле named.conf.local-zones я бы хотел остановится немного подробнее. Именно в данном файле мы определяем направления. Именно в этом файле указываются сами зоны с доменными именами и правила их обработки. Как я уже писал, у меня всего две зоны и именно для двух зон мне необходимо сделать идентичные описания, но с различными параметрами.

Переименуем стандартный файл named.conf.local в named.conf.local-zones

И отредактируем файл named.conf.local-zones:

Файл rndc.conf создавать не обязательно, но если вы хотите изменить ключ rndc.key, то можно воспользоваться данным механизмом.
Необходимо подать команду:

Содержимое файла выглядит так:

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

Переносим файлы с описанием базовых зон:

Переносим базовые файлы ключей:

Теперь самое интересное, а именно описание доменных зон!

Описание локальных доменных зон

У нас уже есть базовые доменные зоны и мы указали в файле конфигурации наши локальные зоны. Возможно вы это заметили в файле named.conf.local-zones
Пункты:

Представляю вам файл зоны прямого просмотра:

Остался файл зоны обратного просмотра:

Сохраняем все наши файлы и пробуем запустить сервис BIND9

Для проверки работает или нет, сначала проверяем сервис

Если видим что-то похожее значит все ок

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

И не забывайте менять строку Serial при каждом внесении изменений!

Теперь проверим, как резолвится доменное имя:

Если вы установили пакет dnsutils, вы можете проверить свою установку используя обзорную утилиту DNS dig

После установки BIND9 примените dig к интерфейсу обратной петли (loopback), чтобы убедиться, что порт 53 прослушивается. Из терминала наберите:

В ответ получите, что-то такое:

Хороший способ проверить ваши файлы зон — это использовать утилиту named-checkzone, установленную вместе с пакетом bind9. Эта утилита позволяет вам убедиться в корректности настроек до перезапуска BIND9 и применения изменений.

Очистить кеш данных DNS сервиса можно командой rndc flush
Для нормальной обработки доменных имен обычно необходимо подождать некоторое время, от минуты до десяти минут.

Все хорошо. Займемся настройкой сети, ведь мы хотим, чтобы локальные доменные имена работали на всех наших локальных устройствах (умеющих работать с DNS)

Настройка локальной сети для обработки внутренних DNS запросов

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

Я покажу, как добавить DNS в DHCP сервер, на примере своего роутера MikroTik

gost-winbox-1

Открываем Winbox или терминал, подключаемся к нашему роутеру и идем по пути: IP -> DHCP Server вкладка Networks
Добавляем IP адрес нашего BIND9 выше IP роутера Консольно:

Далее обновляем аренду для всех клиентов или какого-то одного для проверки.

Например в Windows 10 можно запустить командную строку(cmd) и проверить получение DNS:

Видим строку DNS-серверы. . . . . . . . . . . : 192.168.88.7 значит наш ПК получает DNS корректно.

Настройка открытия WEB интерфейса Proxmox-VE по доменному имени

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

gost-nginx-1

Переходим к консоли хост машины:
Нам нужна консоль хостовой машины

Проверка IP адреса

Для начала давайте поставим nginx:

Файлы nginx хранит по пути /etc/nginx/:

Давайте удалим базовую WEB страницу, она нам не нужна

Ничего страшного это всего лишь simlink, оригинал лежит тут: /etc/nginx/sites-available/default

Все файлы дополнительных конфигураций можно располагать в папке /etc/nginx/conf.d/
Она как раз подключена в основном файле конфигурации.

Создадим файл настройки для нашего PVE1:

Заполним его такими настройками

gost-browser-1

Открытый WEB через доменное имя

Если вы столкнулись с ошибкой "401 no token":
Необходимо отредактировать файл запуска сервиса nginx

и добавить такие строки

Не забудем перезапустить нужные службы

Спасибо за наводку комментатору: Pavel !

Заключение

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

Существуют и системы альтернативные BIND. Например PowerDNS, Unbound, djbdns, Dnsmasq.
Вы можете рассмотреть их для реализации похожего функционала.

Мне остается только напомнить про дальнейшие шаги по реализации своего домашнего сервера:

  1. Torrent Transmission - качалка торрентов. Домашний Сервер: Часть 4 – Настройка Transmission daemon в контейнере LXC Proxmox-VE
  2. Plex Mediaserver - домашний медиа сервер.
  3. The Dude - мониторинг девайсов в домашней сети.
  4. openHAB 2 - домашний IoT.
  5. FreePBX (Asterisk) - IP телефония.

Делитесь своими методиками и способами реализации доменной системы. Читателям будет интересно узнать про альтернативы! 🙂

Благодарю за ваше время!
Всего хорошего на просторах Интернета 😉

Если Вам не безразлична судьба блога или Вы просто хотите отблагодарить Автора за его труд, смело переходите на страницу Поддержки, там описана вся информация, по тому, как это сделать. Заранее благодарен вам за данную инициативу!

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

Читайте также: