Содержание
Настройка домашнего веб-сервера под управлением Windows 10
Решил я установить DataExpress Web Server на свой домашний компьютер. Да не просто установить, а настроить работу по протоколу https с использованием сертификатов Let’s Encrypt. Мой компьютер находится в домашней сети, а доступ к Интернет осуществляется через роутер TP-Link TL-WR840N. Т.е. компьютер в сети Интернет недоступен. Плюс у меня не было статического IP-адреса и мне пришлось подключить эту услугу у своего провайдера Интернет. И еще… Мне потребуется привязать домен к статическому IP-адресу и подтвердить, что я владелец домена, иначе сертификат Let’s Encrypt не получить. Хорошо, что у меня есть сайт! План действий такой:
- Настройка в роутере проброса портов, чтобы компьютер был доступен в сети Интернет.
- Установка СУБД Firebird 2.5 или 5.
- Установка DataExpress Web Server.
- Привязка IP-адреса к домену в панели управления хостингом.
- Получение сертификата с помощью утилиты win-acme.
- Установка веб-сервера nginx, настройка обратный прокси.
- Настройка автоматического запуска веб-серверов с помощью утилиты nssm.
Проброс портов
Вот, что у меня получилось:
Порт 8090 — это порт DataExpress Web Server. Его пробрасывать не обязательно, но я сделал этот для проверки работы веб-сервера. Порт 443 — это порт https, который будет использоваться веб-сервером nginx.
Установка СУБД Firebird
Установка DataExpress Web Server
Скачиваем веб-сервер по ссылке https://mydataexpress.ru/files/dxwebsrv_win32.zip и распакуем в папку, например d:\dxwebsrv_win32. Настраиваем веб-сервер. У меня получился такой конфигурационный файл dxwebsrv.cfg:
[Server] Language=ru Port=8090 Firebird=25 UseSSL=0 PrivateKey= Certificate= [DemoDB] Database=127.0.0.1:d:\dxwebsrv_win32\demo_db.fdb Templates=d:\dxwebsrv_win32\templates SessionTime=30 DBPwd=
Порт сервера 8090, используется Firebird версии 2.5, настроил подключение к демонстрационной базе. Т. к. пароль SYSDBA в моем случае стандартный, то параметр DBPwd оставляю пустым. Подробнее о параметрах читайте тут.
Обратите внимание на IP-адрес в пути к базе данных. Т. к. СУБД Firebird устанавлен на том же компьютере, что и веб-сервер, то указывается именно такой IP-адрес или localhost.
Запустим веб-сервер для проверки работы. Должно появится консольное окно.
Если консольное окно исчезло, значит что-то пошло не так. Посмотрите файл dxwebsrv.log. Основной причиной ошибки является занятый порт другим приложением или веб-сервер запущен дважды.
Проверьте работу веб-сервера, введя в браузере следующий адрес: http://127.0.0.1:8090/demodb/ или http://static_IP_address:8090/demodb/. Вы должны увидеть страницу ввода пользователя и пароля. Если вариант со статическим IP-адресом не работает, то убедитесь что вы правильно пробросили порт 8090.
Привязка IP-адреса к домену
Для успешного получения сертификатов Let’s Encrypt требуется, чтобы у вашего сервера было доменное имя, например: base.mysite.ru. Если у вас есть какой-нибудь сайт, то в панели управления хостинга должна быть возможность создания бесплатного домена третьего уровня, который затем можно привязать к IP-адресу вашего сервера. Если же сайта нет, то вам нужно купить домен у регистратора доменов и в личном кабинете регистратора привязать домен к IP-адресу.
В данном руководстве подробнее остановлюсь только на первом варианте. В моем случае хостером является TimeWeb. В панели управления хостингом в разделе «Домены» добавляю домен третьего уровня.
Затем перехожу в редактор DNS и добавляю A-запись, т. е. привязываю свой статический IP-адрес к домену.
Теперь мой сервер доступен по имени домена. В моем случае это http://signal.mydataexpress.ru:8090.
Получение сертификатов Let’s Encrypt
Для получения сертификатов Let’s Encrypt будем использовать утилиту win-acme. Скачайте утилиту с сайта https://www.win-acme.com/. Распакуйте архив в папку, например d:\utils\win-acme.
У меня нет возможности подтвердить подлинность домена по протоколу http, т. к. я не могу пробросить порт 80 в роутере. А для проверки подлинности используется именно этот порт и никакой другой (хотя есть вариант через 443 порт, но я не знаю как).
Если у вас есть возможность использовать порт 80, то это будет самый простой и удобный способ проверки. В этом случае нужно запустить утилиту с правами администратора, чтобы утилита могла запустить свой встроенный веб-сервер для проверки подлинности. К тому же сертификат будет обновляться утилитой автоматически.
Я же буду использовать метод DNS. Обновлять сертификат придется вручную, раз в 3 месяца. Запустим утилиту wacs.exe с правами простого пользователя прямо из проводника.
Вводим N для создания нового сертификата с настройками по умолчанию.
Вводим 2, чтобы указать домен, для которого выпускается сертификат, вручную.
Вводим имя домена.
Для проверки подлинности выбираем 6 пункт.
Выбираем формат сертификатов PEM.
Указываем в какой папке будут хранится сертификаты. Пароль для закрытого ключа устанавливать не будем. Никаких скриптов и программ не выполняем - вводим 3.
Далее утилита показывает TXT-запись, которую нужно добавить в редакторе DNS.
Добавляем TXT-запись в редакторе DNS панели управления хостинга.
После того как добавили запись в редактор DNS подождем минут 5 и жмем в окне утилиты Enter. Если утилита сообщает, что TXT-запись не найдена, значит сведения в DNS еще не обновились. Подождите еще немного и введите 1 (Retry check) для повторной проверки.
После успешного подтверждения удаляем TXT-запись в редакторе DNS и снова жмем ENTER.
Сертификаты созданы и сохранены в папке d:\cert.
Настройка nginx
Скачиваем веб-сервер по ссылке https://nginx.org/ru/download.html и распаковываем в папку, например d:\utils\nginx. Включим https-протокол на веб-сервере. Для этого нужно в файле d:\utils\nginx\conf\nginx.conf раскомментировать и отредактировать секцию в конце файла:
Вот, что должно у вас получиться:
# HTTPS server
#
server {
listen 443 ssl;
#server_name localhost;
ssl_certificate d:\cert\signal.mydataexpress.ru-chain.pem;
ssl_certificate_key d:\cert\signal.mydataexpress.ru-key.pem;
#ssl_session_cache shared:SSL:1m;
#ssl_session_timeout 5m;
#ssl_ciphers HIGH:!aNULL:!MD5;
#ssl_prefer_server_ciphers on;
location / {
root html;
index index.html index.htm;
}
#############################################
# Перенаправления на DataExpress Web Server #
#############################################
location ~* /(img|cache|html|demodb) {
proxy_pass http://127.0.0.1:8090;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;
proxy_http_version 1.1;
proxy_set_header Connection "";
proxy_cache off;
}
}
Запустите файл nginx.exe, чтобы проверить работу сервера. Введите в браузере адрес: https://base.mysite.ru/demodb/. Если вы видите страницу входа в базу данных, значит все в порядке.
Автоматический запуск веб-серверов
Осталось теперь настроить автоматический запуск веб-серверов DataExpress и nginx. Версии для Windows не могут запускаться как служба. Для обхода этого ограничения воспользуемся утилитой nssm. Эта утилита позволяет превратить обычное консольное приложение в системную службу и запускать его автоматически при загрузке компьютера.
Скачаем утилиту по ссылке https://www.nssm.cc/download и распакуем архив в папку, например в d:\utils\nssm.
Запускать утилиту нужно из командной строки с правами администратора. В командной строке переходим в папку утилиты и введим следующую команду для установки службы:
nssm install dxwebsrv d:\dxwebsrv_win32\dxwebsrv.exe
Если все нормально установилось, то вы увидите следующее сообщение:
Service "dxwebsrv" installed successfully!
Теперь запустим службу:
nssm start dxwebsrv
Проделываем то же самое для nginx:
nssm install nginx d:\utils\nginx\nginx.exe nssm start nginx
Если нужно удалить службы, введите следующие команды:
nssm stop dxwebsrv nssm remove dxwebsrv nssm stop nginx nssm remove nginx





