Превращаем домашний компьютер в полноценный веб-сервер: пошаговое руководство
hard

Превращаем домашний компьютер в полноценный веб-сервер: пошаговое руководство

Местами сложно, зато всё своё

Если нужен собственный веб-сервер — например, чтобы хранить фотографии и видео и делиться ими, — можно арендовать виртуальный (VDS) или физический сервер в стойке провайдера. Но такой сервер не будет нашим на все сто. Сегодня мы настроим веб-сервер, которым больше никто не сможет управлять. 

Это практическая инструкция о том, как запустить свой веб-сервер. Минимальные требования к железу такие:

  • видеокарта, которая умеет выводить в 1024×768 пк;
  • процессор с тактовой частотой от 2 ГГц;
  • жёсткий диск с хотя бы 20 Гбайт свободного пространства;
  • оперативная память от 4 ГБайт.

Операционная система может быть любой начиная с Windows 95 и Linux Mint. Мы используем Fedora Server.

Ещё веб-сервер можно поднять на сетевом хранилище или на Wi-Fi-роутере. Об этих способах расскажем в другой раз.

Устанавливаем софт

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

Чтобы установить Apache2, вводим в командной строке по очереди две команды — первая обновляет менеджер пакетов, вторая ставит всё, что нужно:

$ sudo apt update
$ sudo apt install lamp-server^ -y

Таким образом мы подключим сразу 5 пакетов: сам Apache2, язык сценариев PHP5, клиент PHP5-MySQL и реляционную базу данных MySQL-Server. Сценарии мы будем писать на Python, но PHP5 этому не помешает.

Чтобы проверить, что наш сервер работает, введём адрес 127.0.0.1 или localhost в адресную строку браузера:

Превращаем домашний компьютер в полноценный веб-сервер: пошаговое руководство

Это стандартная заглушка Apache2, которая используется для проверки работы сервера. На ней буквально написано: «если вы видите страницу, значит, всё в порядке».

Ещё статус сервера можно проверить такой командой:

$ sudo systemctl status apache2

Настраиваем сеть

Теперь покажем наш веб-сервер другим пользователям. Пока сервер домашний, подключиться к нему могут только пользователи локальной сети — с тех устройств, которые подключены к нашему роутеру. Чтобы это исправить, нужно приобрести «белый», или публичный, IP у провайдера. Тогда наш веб-сервер станет доступен из любой точки, где есть интернет. В среднем белый IP стоит 200 рублей в месяц.

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

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

Чтобы решить проблему с нехваткой белых адресов, существуют серые IP-адреса в диапазоне 192.168.0.1–192.168.255.254. Например, если у нас несколько компьютеров, не обязательно присваивать белые адреса им всем. Роутер распределит между ними серые IP, а для доступа в интернет хватит одного белого. Так устроен NAT — механизм, который конвертирует внутренние адреса во внешние и наоборот.

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

Настроим статический DHCP — сетевой протокол, который позволяет устройствам автоматически получать IP-адреса. Динамический IP присваивается на определённый срок, например на 24 часа. Если не настроить DHCP, то через сутки придётся снова заходить в административную панель роутера, чтобы узнать актуальный адрес. Статическая настройка решает эту проблему навсегда. 

Покажем, как это работает, на примере роутера ZTE H298A. У вас может быть любой другой роутер, но принцип настройки будет одинаковым, различие только в названиях пунктов меню. 

Зайдём в панель администратора роутера по адресу 192.168.0.1 и найдём раздел «Локальная сеть»:

Превращаем домашний компьютер в полноценный веб-сервер: пошаговое руководство

Листаем страницу вниз и находим пункт «Привязка DHCP»:

Превращаем домашний компьютер в полноценный веб-сервер: пошаговое руководство

Чтобы настроить DHCP, нам нужно выяснить MAC-адрес нашего роутера. Сделать это можно при помощи команды ifconfig в командной строке:

Превращаем домашний компьютер в полноценный веб-сервер: пошаговое руководство

Теперь смотрим настройки роутера. Действительно, у нашего сервера IP-адрес 192.168.0.10, а MAC-адрес — a8:a1:59:1a:9a:33. IP выдан нам на 23 часа и 46 минут. Это значит, что через сутки адрес поменяется и мы уже не сможем по нему зайти на сервер с другого устройства:

Превращаем домашний компьютер в полноценный веб-сервер: пошаговое руководство

Присвоим нашему серверу постоянный DHCP, чтобы адрес всегда был одним и тем же. Для этого скопируем значение MAC-адреса и вставим его в поле «MAC Адрес». В поле «IP Адрес» первые 3 ячейки заполняем числами 192, 168, 0. В последней ячейке можно указать любое число от 2 до 255. У нас получилось так:

Превращаем домашний компьютер в полноценный веб-сервер: пошаговое руководство

Подтверждаем создание элемента и перезагружаем роутер. Ждём пару минут, пока он загрузится снова, и опять заходим в настройки локальной сети:

Превращаем домашний компьютер в полноценный веб-сервер: пошаговое руководство

Замечаем статус Infinity. Это значит, что адрес 192.168.0.200 бессрочно закреплён за нашим сервером. Теперь мы точно знаем, что он не поменяется. Давайте протестируем наши настройки. 

Попробуем зайти с телефона:

Превращаем домашний компьютер в полноценный веб-сервер: пошаговое руководство

Проверим доступность сервера с другого компьютера командой ping и зайдём с браузера:

Превращаем домашний компьютер в полноценный веб-сервер: пошаговое руководство
Превращаем домашний компьютер в полноценный веб-сервер: пошаговое руководство

Всё работает. Другие устройства, подключённые к Wi-Fi, видят наш сервер. Это значит, что план-минимум мы выполнили: настроили софт и подняли локальный сервер. 

Что дальше

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

Текст:

Абдурахман Гаджиев

Редактор:

Инна Долога

Обложка:

Алексей Сухов

Корректор:

Ирина Михеева

Вёрстка:

Мария Дронова

Соцсети:

Юлия Зубарева

Курс «C++ для бэкенда»
Если интересно делать быстрые высоконагруженные системы, посмотрите на программу курса «Яндекс Практикума». Понятная теория, тренажеры, поддержка ревьюеров и обучение в группе, всё как надо.
Посмотреть
Курс «C++ для бэкенда»
Курс «C++ для бэкенда»
Курс «C++ для бэкенда»
Курс «C++ для бэкенда»
Получите ИТ-профессию
В «Яндекс Практикуме» можно стать разработчиком, тестировщиком, аналитиком и менеджером цифровых продуктов. Первая часть обучения всегда бесплатная, чтобы попробовать и найти то, что вам по душе. Дальше — программы трудоустройства.
Начать карьеру в ИТ
Получите ИТ-профессию Получите ИТ-профессию Получите ИТ-профессию Получите ИТ-профессию
Еще по теме
hard