Нижеследующая инструкция потребуется, если предстоит самостоятельно контролировать ход установки системного и прикладного ПО. В таком случае потребуются некоторые знания ОС Linux. Если вы желаете установить все компоненты в автоматическом режиме, обратитесь к инструкции.
Системе WNAM требуется для корректной работы ряд системного ПО, которое требуется установить на сервере.
Внимание
Большинство из указанных действий требуют повышения привилегий, поэтому их следует выполнять через команды: sudo или su -.
1. Система управления базой данных MongoDB
Все данные (настройки, страницы портала абонентов, сведения о пользователях сети Wi-Fi, их сессиях и т.п.) хранятся в No-SQL БД MongoDB. Для ОС Ubuntu 20.04, AstraLinux 1.7 и Debian 11 рекомендуется использовать версию 4.4 этой БД. Для Ubuntu 22.04 и Debian 12 рекомендуется к установке MongoDB 6.х. К сожалению, в штатных репозиториях ОС Debian соответствующие пакеты отсутствуют.
1.1. Вариант установки последней версии БД можно найти по официальной инструкции от производителя https://docs.mongodb.com/manual/tutorial/install-mongodb-on-debian/. Для установки MongoDB 4.4 будет необходимо выполнить следующие команды:
apt-get install gnupg
wget -qO - https://www.mongodb.org/static/pgp/server-4.4.asc | apt-key add -
echo "deb http://repo.mongodb.org/apt/debian buster/mongodb-org/4.4 main" | tee /etc/apt/sources.list.d/mongodb-org-4.4.list
apt-get update
apt-get install -y mongodb-org
systemctl enable mongod
systemctl start mongod
systemctl status mongod
Если ваша система не поддерживает установку 4.4, то установите MongoDB версии 6.х согласно инструкции ниже:
Для начала следует выполнить проверку необходимых для работы MongoDB инструкций процессора командой:
grep -i avx /proc/cpuinfo
Если в результате выполнения данной команды вы получили пустой вывод, то ваша система не подходит для установки.
Если вывод не пуст, то установите БД MongoDB 6.x с помощью следующих команд:
apt-get install gnupg
wget -qO - https://www.mongodb.org/static/pgp/server-6.0.asc | apt-key add -
echo "deb https://repo.mongodb.org/apt/ubuntu jammy/mongodb-org/6.0 multiverse" | tee /etc/apt/sources.list.d/mongodb-org-6.0.list
apt-get update
apt-get install -y mongodb-org
systemctl enable mongod
systemctl start mongod
systemctl status mongod
1.2. Если сайт с БД MongoDB не доступен, а также не доступен репозиторий http://repo.mongodb.org, то следует воспользоваться копией с deb-пакетом MongoDB версии 4.4.15 на нашем сервере. Для ОС Debian 10/11 следует выполнить команды:
cd /tmp
wget -m --no-parent http://packages.wnam.ru/mongodb-org/
cd packages.wnam.ru/mongodb-org/
apt install ./*.deb
cd /tmp
rm -rf packages.wnam.ru
systemctl unmask mongod
systemctl enable mongod
systemctl start mongod
Для ОС Debian 9 потребуется выполнить следующие команды:
cd /tmp
wget -m --no-parent http://packages.wnam.ru/mongodb-org-stretch/
cd packages.wnam.ru/mongodb-org-stretch/
apt install ./*.deb
cd /tmp
rm -rf packages.wnam.ru
systemctl unmask mongod
systemctl enable mongod
systemctl start mongod
Настраивать БД MongoDB не требуется, кроме случая подготовки отказоустойчивого кластера и задачи разграничения доступа для нескольких пользователей/приложений. Следует учитывать, что по умолчанию база создается в разделе /var по пути /var/lib/mongodb. Убедитесь, что на этом разделе достаточно места (для небольшой инсталляции будет достаточно 4 Гб). Если требуется создать нагруженный сервер, рекомендуется хранить БД MongoDB на отдельном разделе с файловой системой XFS на носителях типа SSD.
2. Среда выполнения Java
Поскольку система WNAM практически полностью реализован на языке Java, необходимо установить среду исполнения Java-программ: JDK/JRE.
Установите его с помощью команды:
apt-get install openjdk-8-jdk
Поддерживается работа с версией 11 в различных исполнениях (OpenJDK, Oracle JDK). Штатный пакет в ОС Debian 10/11 называется openjdk-11-jdk.
Установить пакет можно следующей командой:
apt-get install openjdk-11-jdk
Так как openjdk версии 11 отсутствует в ОС Debian 12, требуется подключить репозиторий:
Добавьте в конец файла /etc/apt/sources.list строку
deb http://deb.debian.org/debian unstable main non-free contrib
Также добавьте в файл /etc/apt/preferences строки:
Package: *
Pin: release a=stable
Pin-Priority: 900Package: *
Pin: release a=unstable
Pin-Priority: 50
Это необходимо для того, чтобы система не обновлялась из добавленного репозитория.
Далее установите пакет java 11
apt-get install openjdk-11-jdk
После установки рекомендуется проверить версию, используя:
java -version
В ответ на команду должны выйти строки типа:
openjdk version "11.0.11" 2021-04-20
OpenJDK Runtime Environment (build 11.0.11+9-post-Debian-1deb10u1)
OpenJDK 64-Bit Server VM (build 11.0.11+9-post-Debian-1deb10u1, mixed mode, sharing)
Если по каким-то причинам используется версия 8 ОС Debian (например, из пакета AdoptOpenJDK, https://linuxize.com/post/install-java-on-debian-10/#installing-openjdk-8) и система WNAM версии 1.5 и младше, может возникнуть проблема с сертификатом сервера лицензирования.
3. FreeRADIUS.
Если по какой-то причине требуется произвести переустановку системы WNAM версии 1.3 -1.5, в которой используется FreeRADIUS, следует обратиться к данной инструкции. Для работы системы WNAM версии 1.6 FreeRADIUS не требуется. Если FreeRADIUS установлен, то необходимо удалить пакет или, как минимум, остановить выполнение и авто-запуск FreeRADIUS (radiusd).
4. Веб-сервер nginx
Система WNAM по умолчанию запускается на TCP порту 8080. Можно оставить запуск системы на этом порту, но рекомендуется использовать проксирующий сервер nginx для обработки запросов на порту 80, для SSL шифрования (порт 443), контроля доступа и кэширования.
Установка сервера Nginx производится следующей командой:
apt-get install nginx
Дале следует отредактировать конфигурационный файл /etc/nginx/sites-available/wnam:
server {listen 80;access_log /var/log/nginx/access.log;location / {proxy_pass http://127.0.0.1:8080/;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_read_timeout 120;
proxy_connect_timeout 120;
}}
Если имеется SSL-сертификат (купленный, или приобретенный от Let's Encrypt) и требуется использовать сервер системы WNAM так, чтобы он был доступен абонентам по протоколу HTTPS, необходимо использовать следующую конфигурацию:
server {
listen 80 default_server;
return 301 https://$server_name$request_uri;
server_name wnam.provider.ru;
}server {
listen 443 ssl default_server;
ssl_certificate /etc/letsencrypt/live/wnam.provider.ru/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/wnam.provider.ru/privkey.pem;ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_ciphers "EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH";
ssl_ecdh_curve secp384r1;
ssl_session_cache shared:SSL:10m;
ssl_session_tickets off;
ssl_stapling on;
ssl_stapling_verify on;
resolver 8.8.8.8 8.8.4.4 valid=300s;
resolver_timeout 5s;
add_header Strict-Transport-Security "max-age=63072000; includeSubdomains";
add_header X-Frame-Options SAMEORIGIN;
add_header X-Content-Type-Options nosniff;ssl_dhparam /etc/ssl/certs/dhparam.pem;root /var/www/html;index index.html;server_name wnam.provider.ru;location / {
proxy_pass http://127.0.0.1:8080/;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_read_timeout 120;
proxy_connect_timeout 120;
}}
Не забудьте сгенерировать файл dhparams:
openssl dhparam -out /etc/ssl/certs/dhparam.pem 4096
Затем необходимо создать ссылку:
cd /etc/nginx/sites-enabledln -s ../sites-available/wnam wnam
Далее требуется обязательно удалить /etc/nginx/sites-enabled/default:
rm /etc/nginx/sites-enabled/default
Затем проверить правильность конфигурационного файла командой:
nginx -t
После произведенных действий следует перезапустить сервис:
service nginx restart
5. Библиотека генерации миниатюр конструктора страниц портала
Система WNAM использует внешнюю библиотеку phantomjs при формировании миниатюрного изображения (превью) абонентских страниц в разделе "Конструкторе страниц". Для использования указанной библиотеки необходимо её скачать и установить:
cd /tmp/wget https://bitbucket.org/ariya/phantomjs/downloads/phantomjs-2.1.1-linux-x86_64.tar.bz2apt-get install bzip2tar jxvf phantomjs-2.1.1-linux-x86_64.tar.bz2mv phantomjs-2.1.1-linux-x86_64/bin/phantomjs /usr/local/bin/phantomjswget http://www.netams.com/files/wnam/misc/render.jswget http://www.netams.com/files/wnam/misc/render.shmv render.sh render.js /usr/local/bin/chmod +x /usr/local/bin/render.sh
Далее запустить команду:
/usr/local/bin/render.sh
Процесс должен завершиться без ошибок.
Для изменения размера изображений превью файл /usr/local/bin/render.js можно отредактировать.
Если используется ОС Ubuntu, может оказаться, что страницы предпросмотра (миниатюры) не содержат русских букв. Это вызвано тем, что дистрибутив ОС Ubuntu зачастую сконфигурирован некорректным способом в части поддержки шрифтов. Вероятно, предстоит выполнить следующие команды для корректного отображения шрифтов:
ln -s /usr/lib/x86_64-linux-gnu/libfontconfig.so.1 /usr/lib/phantomjs/libfontconfig.so.1ln -s /usr/share/fonts/truetype/dejavu/ /usr/lib/x86_64-linux-gnu/fonts
Если возникли ошибки типа (например, на Debian 10 старых версий):
Auto configuration failed
140687369703040:error:25066067:DSO support routines:DLFCN_LOAD:could not load the shared library:dso_dlfcn.c:185:filename(libssl_conf.so): libssl_conf.so: cannot open shared object file: No such file or directory
140687369703040:error:25070067:DSO support routines:DSO_load:could not load the shared library:dso_lib.c:244:
140687369703040:error:0E07506E:configuration file routines:MODULE_LOAD_DSO:error loading dso:conf_mod.c:285:module=ssl_conf, path=ssl_conf
140687369703040:error:0E076071:configuration file routines:MODULE_RUN:unknown module name:conf_mod.c:222:module=ssl_conf
То решение заключается в добавлении следующих строк в середину файла /usr/local/bin/render.sh:
export OPENSSL_CONF=/etc/ssl/
6. Проверка языка операционной системы
Обязательно необходимо убедиться, что язык системы (locale по умолчанию) соответствует "ru_RU.UTF-8". Проверить это можно командой "locale", в ответ на которую будет отображена информация по выбранному языку системы. Локаль сервера можно изменить следующей командой:
dpkg-reconfigure locales