Как сделать персональный веб-хостинг. Как из каких комплектующих собрать веб-сервер. Собираем компьютер, устанавливаем веб-панель, размещаем сайты на хостинге - обложка статьи блога
28.02.2021

Веб-сервер в антресоли. Как сделать свой веб-хостинг

Автор: Andrew Lazarev

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

Если у Вас есть один или несколько достаточно больших сайтов, например интернет-магазин на 10000 товаров, то со временем Вы столкнетесь с тем, что производительности хостингов, предоставляемых в аренду будет не хватать, или цена за аренду такой виртуальной машины будет уже не такая, как была на этапе внедрения Ваших сайтов, когда 1 ядра CPU + 256 МБ ОЗУ + 1 ГБ SSD было достаточно. Особенно будет заметна нехватка машинных ресурсов с сайтами на CMS WordPress и Bitrix.

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

Какими способами можно сделать персональный веб-хостиг?

Поэтому со временем Вы захотите покинуть эту коммунальную квартиру и переехать в отдельное свободное жилье. И тут у Вас будет 3 варианта:

  1. снимать это жилье — аренда виртуального сервера VPS

  2. купить собственную квартиру — сделать свой собственный физический веб-сервер

  3. переехать в дом престарелых родителей — сделать веб-сервер под виртуальной машиной основного сервера предприятия.

1. Аренда VPS (Virtual Private Server).

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

  • часть работ по поддержанию работоспособности сервера арендодатель берет на себя

  • веб-сервер будет онлайн 24/7 практически всегда, так как у арендодателя несколько входящих каналов связи с интернетом и вероятно организовано бесперебойное питание компьютеров

Недостатки у VPS следующие:

  • аренда сервера будет обходиться Вам примерно 20 USD в месяц и это будут Ваши прямые расходы

  • в прайс-листах компаний, предоставляющих в аренду VPS, указано количество ядер Xeon, но не указано какие это Зеоны, а они могут быть не первой свежести, наподобие Xeon E5 2620

  • нагрузка на сетевые соединения дата-центра может в пике быть больше ширины канала дата-центра

  • ну и как с любой съемной квартиры Вас однажды могут попросить съехать

  • VPSскорее всего работает в виртуальном контейнере, а если вам нужен функционал виртуализации, то соответственно, он будет недоступен.

3. Установка веб-хостинга на виртуальную машину Hyper-V

Третий случай самый комфортный из всех.

Например у вас на предприятии трудится мощный сервер под управлением Windows Server. Создаем на нем виртуальную машину под Hyper-V, отдаем ей 3 ядра, 8 ГБ ОЗУ, 64 ГБ дискового пространства и радуемся жизни.

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

Поэтому из родительского дома пришлось съезжать в свое отдельное жилье…

2. Второй случай — переезжаем на отдельный физический сервер

Недостатки такие:

  • первоначальные расходы на приобретение железа

  • нужно платить за электроэнергию

  • обслуживание веб-сервера ложится полностью на нас

  • веб-сервер занимает пространство в помещении и шумит

  • интернет соединение может теряться

  • форс-мажор: пожар, воры и т.п.

Достоинства:

  • несмотря на большие расходы по приобретению железа, это не прямые затраты и компьютер при ненадобности можно продать; а если компьютер у Вас уже есть, то по сути Вы получите бесплатный хостинг (не считая счетов за электричество конечно) 

  • в Вашем доме скорее всего все сидят на 100 Мб/с пакетах и вряд ли будут запирать канал ваших данных, особенно если у вас пакет 1 Гб/с

  • все данные, хранящиеся на сервере в пределах непосредственной доступности и «случайно» не потеряются

  • сервер полностью под Вашим контролем — хотите перезагружайте, хотите делайте апгрейд компьютера

  • бекап на внешние носители выполняется быстро по локальной гигабитной сети.

Какой компьютер подойдет для веб-сервера?

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

  1. Intel Celeron J1800 — 10 Вт

  2. Ryzen 3 2200G — 65 Вт

  3. AMD FX-9830P — 35 Вт.

Селероны типа j1800 не годятся для наших целей, они пригодны лишь для построения небольших NAS.

Производительность процессоров класса Ryzen 3 2200G избыточна для веб-сервера. Убедился в этом на личном опыте и оплачивать лишние 30 Вт/ч пока что желания нет.

Недавно Biostar представили материнскую плату с распаянным на ней ноутбучном процессоре Biostar FX-9830P по цене 120 USD в рознице. Перед покупкой, читая обзоры этой материнки, я видел как народ в комментариях троллит этот шаг Biostar’а. А я увидел в этом золотую середину для решения моей задачи и для своего веб-сервера купил именно FX-9830P.

Материнская плата со встроенным процессором Biostar FX9830M Ver. 6.0

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

Остальные комплектующие:

  • какой-то корпус, валявшийся на работе без дела

  • тихий блок питания на 400 Вт (из той же серии, что покупал для сборки компьютера для видеомонтажа) — с запасом на тот случай, если в дополнение к веб-серверу буду использовать этот компьютер еще как NAS

  • 8 ГБ ОЗУ — любая совместимая с материнской платой оперативная память DDR4

  • 256 ГБ SSD — M.2 256GB Transcend (TS256GMTE220S) — недорогой и быстрый. 256 ГБ с запасом, чтобы был TBW побольше, так как веб-сервер это достаточно агрессивная среда с точки зрения записи на диск

  • Роутер MikroTik RB951G-2HnD — гигабитный маршрутизатор, который работает годами без зависаний и прочих проблем и имеет гибкие настройки.

КомплектующееЦена, USD
Материнская плата с процессором117
ОЗУ 8 ГБ DDR4 240035
NVMe SSD 256 ГБ53
Блок питания 450 Вт31
Итого:236

После того как собрал и включил в первый раз компьютер расстроился — вентилятор процессора оказался довольно шумным. Настройку регулирования оборотов вентилятора в BIOS (UEFI) нашел не сразу — это отдельная от основного интерфейса БИОСа виртуальная кнопка в верхней части экранного пространства, дублируемая клавишей F5.

Когда установил профиль охлаждения Silent, шум вентилятора процессора стал еле заметен.

Бесплатная веб-панель для хостинга

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

Панель имеет отличный функционал и неплохую тех. поддержку на русском языке. Панель ставится поверх чистой операционной системы Linux CentOS 7 в минимальной ее конфигурации. Это немного грустно, потому что нельзя поставить оконную среду и подключаться к серверу по xRDP. Поэтому нам остается только хардкор, только SSH. Если установите оконную рабочую среду CentOS 7 — будут проблемы с обновлением Linux.

Загрузочную флешку с системой CentOS 7 следует записывать программами, умеющими формировать GPT-структуру диска, такими как balenaEtcher, так как загружаться будем по EFI, а не Legacy.

Устанавливать CentOS 7 нужно на английском языке, иначе будут проблемы с отображением кириллических символов в терминале macOS.

После того, как установили CentOS 7, компьютер можно отправлять в место его постоянной дислокации (в моем случае это антресоль над входной дверью), а все дальнейшие действия будем производить удаленно по SSH.

На всякий случай напомню, что клиент SSH встроен Power Shell Windows 10 и необходимости в программах типа PuTTY больше нет. В macOS и Linux клиенты SSH также встроены в систему.

Обновляем CentOS и устанавливаем BrainyCP командной строкой, которую можно сгенерировать на странице загрузки веб-панели. Дожидаемся окончания установки веб-панели и перезагружаем сервер.

В моем случае я выбрал такую конфигурацию программного обеспечения:

  • Apache 2.4 (практическим перебором вариантов определил, что именно на Апач без NGINX сайты работают быстрее)
  • PHP 7.4
  • Пакеты: + memcached и certbot
  • MySQL: MariaDB 10.5.

Устанавливаем сервис мониторинга состояния сервера Cockpit, благодаря которому можно отслеживать нагрузку на сервер в визуально понятном веб-интерфейсе. Репозиторий CentOS содержит эту программу, поэтому достаточно ее установить с помощью Yum:

  • yum -y install cockpit cockpit-storaged
  • sudo systemctl start cockpit
  • sudo systemctl enable cockpit.socket

Из графиков Cockpit видно, что процессор AMD FX-9830P справляется со своей задачей, а менее 8 ГБ оперативной памяти в веб-сервер лучше не ставить.

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

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

Почта — Сервер исходящей почты — Управление через пакетный менеджер — Настроить — qualify_domain.

qualify_domain — это любой из Ваших доменов, имеющий в DNS-записях ключ DKIM. Без этой настройки почта, отправленная из контактных форм на сайтах, не будет доходить до получателя и будет помечена Exim как Frozen.

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

В хост-аккаунте добавляем домены сайтов, генерируем Let’s Encrypt сертификаты доменов сайтов и восстанавливаем сайты из бекапов или устанавливаем новые CMS из установщика CMS.

Так как я сделал свой основной сайт бесплатно сам, то в моем случае устанавливаю WordPress, устанавливаю в панели администратора сайта плагин Updraft Backup, по FTP копирую файлы бекапа на веб-сервер и восстанавливаю бекап.

В настройках почты доменов включаем DKIM, SPF и DMARC. Хостинг-панель генерирует соответствующие DNS-записи с ключами, которые мы должны прописать в редакторе DNS-зон регистратора доменного имени или, если Вы пользуетесь Cloudflare, на вкладке DNS Вашего аккаунта в Cloudflare.

Далее меняем A-записи доменов у регистратора доменного имени на IP-адрес нашего сервера. Ждем некоторое время и убеждаемся, что всё работает.

Связываемся со своим интернет провайдером и просим его создать PTR DNS-запись для нашего IP-адреса. Иначе почтовые серверы Google могут не принимать нашу почту. Домен в PTR записи должен быть равен qualify_domain. Домен веб сервера меняем с localhost на qualify_domain, генерируем Let’s Encrypt сертификат с автопродлением для сервиса SMTP, иначе некоторые почтовые сервисы (например i.ua) не будут принимать нашу почту из-за несоответствия сертификата.

Проверяем корректность настройки почтового сервера с помощью сервиса mail.tester.com.

Когда всё заработало, отключаем сервер от интернета, загружаемся с загрузочной флешки с Macrium Reflect и делаем полный бекап SSD веб-сервера на внешний жесткий диск. Далее в BIOS (UEFI) веб-сервера устанавливаем настройку:

при потере питания всегда включать

Всё, пользуемся. И не забываем делать бекапы сайта по мере надобности.

© 2021 Andrew Lazarev Production — видеограф, фотограф и видеомонтаж в Харькове и харьковской области. Блог фотографа. Блог видеографа.