Тут показані розбіжності між вибраною ревізією та поточною версією сторінки.
Порівняння попередніх версій Попередня ревізія | |||
setupfreebsd [2023/06/15 20:34] nightfly знищено |
— (поточний) | ||
---|---|---|---|
Рядок 1: | Рядок 1: | ||
- | ====== Общие аспекты установки Ubilling на FreeBSD 8.x ====== | ||
- | |||
- | |||
- | ====== Внимание ====== | ||
- | Данное руководство актуально для версии Ubilling 0.1.9 (сильно устарело, | ||
- | {{: | ||
- | |||
- | |||
- | |||
- | ===== Возможные конфигурации ===== | ||
- | |||
- | Существует три наиболее распространенных конфигурации | ||
- | - СУБД (MySQL), Stargazer, Ubilling, NAS на одном физическом сервере, | ||
- | - СУБД, Stargazer, Ubilling, NAS - различные физические сервере, | ||
- | - Компромиссный с точки зрения стоимости и быстродействия вариант, | ||
- | |||
- | ===== Требования к установленному ПО ===== | ||
- | * FreeBSD 6.x-8.x | ||
- | * MySQL >=5.x | ||
- | * libexpat | ||
- | * Stargazer версии 2.407 или выше | ||
- | * Конфигураторы Stargazer - sgconf/ | ||
- | * PHP версии >=5.x собранный с поддержкой CLI и MySQL | ||
- | * Apache версии >=1.3 | ||
- | * ISC-DHCPD >=3.x | ||
- | * sudo | ||
- | * Ядро FreeBSD собранное с IPFW и DUMMYNET (для NAS) | ||
- | * bandwidthd (для NAS) | ||
- | * softflowd (для NAS) | ||
- | * thttpd (для NAS) | ||
- | |||
- | |||
- | ===== Конфигурации установки для примера ===== | ||
- | 1. СУБД (MySQL), Stargazer, Ubilling, NAS на одном физическом сервере\\ | ||
- | | ||
- | 2. СУБД, Stargazer, Ubilling размещены на одном сервере а вся обработка пользовательского трафика производиться на удаленном NAS\\ | ||
- | | ||
- | |||
- | ===== Установка требуемого внешнего ПО ===== | ||
- | В данном примере рассматривается установка всего требуемого ПО при помощи системы портов. | ||
- | |||
- | # cd / | ||
- | # cd / | ||
- | # cd / | ||
- | # cd / | ||
- | # cd / | ||
- | # cd / | ||
- | | ||
- | //php5 должен быть собран с поддержкой CLI и модулем Apache// | ||
- | # cd / | ||
- | // | ||
- | # cd / | ||
- | |||
- | **редактируем / | ||
- | mysql_enable=" | ||
- | apache_enable=" | ||
- | dhcpd_enable=" | ||
- | dhcpd_flags=" | ||
- | dhcpd_conf="/ | ||
- | dhcpd_ifaces=" | ||
- | |||
- | **редактируем / | ||
- | User_Alias BILLING = www | ||
- | BILLING | ||
- | |||
- | **запускаем Apache и MySQL** | ||
- | # / | ||
- | # apachectl start | ||
- | |||
- | **устанавливаем новый пароль пользователя root для mysql (newpassword — для примера)** | ||
- | #mysqladmin -u root password newpassword | ||
- | |||
- | ===== Установка Stargazer ====== | ||
- | # fetch http:// | ||
- | # tar zxvf stg-2.407-p1.tar.gz | ||
- | # cd stg-2.407-p1/ | ||
- | # ./build | ||
- | # gmake install | ||
- | # cd ../sgconf && ./build && gmake && gmake install | ||
- | # cd ../ | ||
- | |||
- | **редактируем / | ||
- | Также рекомендуется ознакомиться с [[http:// | ||
- | | ||
- | # путь к логфайлу | ||
- | LogFile = / | ||
- | # путь к pid | ||
- | PIDFile = / | ||
- | # файл с описанием класов трафика | ||
- | Rules = / | ||
- | # время записи детальной статистики в базу | ||
- | DetailStatWritePeriod = 1/4 | ||
- | # время сброса счетчиков трафика в базу | ||
- | StatWritePeriod = 10 | ||
- | # день снятия абонплаты | ||
- | DayFee = 1 | ||
- | # это последний день месяца? | ||
- | DayFeeIsLastDay = no | ||
- | # день обнуления счетчиков трафика | ||
- | DayResetTraff = 1 | ||
- | # " | ||
- | SpreadFee = no | ||
- | # позволять пользователю доступ если у него остался предоплаченый трафик? | ||
- | FreeMbAllowInet = no | ||
- | # писать стоимость предоплаченого трафика? | ||
- | WriteFreeMbTraffCost = yes | ||
- | # снимать полную абонплату ежемесячно? | ||
- | FullFee = yes | ||
- | # названия класов трафика относительно / | ||
- | < | ||
- | DirName0 = Internet | ||
- | DirName1 = Internal | ||
- | DirName2 = | ||
- | DirName3 = | ||
- | DirName4 = | ||
- | DirName5 = | ||
- | DirName6 = | ||
- | DirName7 = | ||
- | DirName8 = | ||
- | DirName9 = | ||
- | </ | ||
- | ExecutersNum = 1 | ||
- | # путь модулей | ||
- | ModulesPath = / | ||
- | # модуль хранения данных | ||
- | < | ||
- | # хост MySQL | ||
- | dbhost = localhost | ||
- | # имя базы | ||
- | dbname = stg | ||
- | # логин пользователя MySQL | ||
- | dbuser = root | ||
- | # пароль пользователя MySQL | ||
- | rootdbpass = newpassword | ||
- | </ | ||
- | < | ||
- | # модуль авторизации AlwaysOnline (рекомендуется) | ||
- | <Module auth_ao> | ||
- | </ | ||
- | # модуль авторизации штатного авторизатора stargazer | ||
- | <Module auth_ia> | ||
- | Port = 5555 | ||
- | UserDelay = 60 | ||
- | UserTimeout = 65 | ||
- | FreeMb = cash | ||
- | </ | ||
- | # модуль коллектора трафика NetFlow | ||
- | <Module cap_nf> | ||
- | TCPPort = 42111 | ||
- | UDPPort = 42111 | ||
- | </ | ||
- | # модуль конфигуратора | ||
- | <Module conf_sg> | ||
- | Port = 5555 | ||
- | </ | ||
- | </ | ||
- | |||
- | **редактируем конфиг / | ||
- | ALL | ||
- | ALL | ||
- | |||
- | **запускаем stargazer** | ||
- | # stargazer | ||
- | |||
- | Убеждаемся в том что модуль store_mysql создал все нужные таблицы в БД | ||
- | # mysql -u root -p stg -e "SHOW TABLES" | ||
- | Enter password: | ||
- | +---------------+ | ||
- | | Tables_in_stg | | ||
- | +---------------+ | ||
- | | admins | ||
- | | messages | ||
- | | stat | | ||
- | | tariffs | ||
- | | users | ||
- | +---------------+ | ||
- | |||
- | Останавливаем stargazer | ||
- | #killall stargazer | ||
- | |||
- | ===== Устанавливаем текущую версию Ubilling ===== | ||
- | # cd / | ||
- | # mkdir billing | ||
- | # cd billing | ||
- | # fetch http:// | ||
- | # tar zxvf ub.tgz | ||
- | # chmod -R 777 content/ config/ multinet/ exports/ remote_nas.conf vservices.php | ||
- | |||
- | **разворачиваем дамп с нужными таблицами по умолчанию** | ||
- | |||
- | # cat docs/ | ||
- | |||
- | убеждаемся нормально ли развернулся дамп | ||
- | #mysql -u root -p stg -e "SHOW TABLES" | ||
- | Enter password: | ||
- | +---------------+ | ||
- | | Tables_in_stg | | ||
- | +---------------+ | ||
- | | address | ||
- | | admins | ||
- | | apt | ||
- | | build | ||
- | | cardbank | ||
- | | cardbrute | ||
- | | cashtype | ||
- | | city | | ||
- | | contracts | ||
- | ..много разных таблиц.. | ||
- | | vcash | ||
- | | vservices | ||
- | | weblogs | ||
- | +---------------+ | ||
- | |||
- | **редактируем конфиг config/ | ||
- | приводя его в соответствие с текущей ситуацией | ||
- | ;Хост БД | ||
- | server = " | ||
- | ;порт MySQL | ||
- | port = " | ||
- | ;логин пользователя MySQL | ||
- | username = " | ||
- | ;его пароль | ||
- | password = " | ||
- | ;имя базы | ||
- | db = " | ||
- | character = " | ||
- | prefix = " | ||
- | |||
- | **редактируем файл config/ | ||
- | Прежде всего следует определиться с методом взаимодействия со stargazer. На данный момент возможен выбор одного из трех обработчиков: | ||
- | |||
- | ; метод взаимодействия со stargazer | ||
- | baseconf = sgconfxml | ||
- | ; путь к sgconf | ||
- | SGCONF=/ | ||
- | ; путь к sgconf_xml | ||
- | SGCONFXML=/ | ||
- | ; хост на котором запущен stargazer | ||
- | STG_HOST=localhost | ||
- | ; порт конфигуратора | ||
- | STG_PORT=5555 | ||
- | ; порт XMLRPC | ||
- | XMLRPC_PORT=8081 | ||
- | ; логин администратора stargazer (по умолчанию admin) | ||
- | STG_LOGIN=admin | ||
- | ; пароль администратора stargazer (по умолчанию 123456) | ||
- | STG_PASSWD=123456 | ||
- | ;Пути окружения | ||
- | ;путь к sudo | ||
- | SUDO=/ | ||
- | ;путь к top в пакетном режиме | ||
- | TOP = / | ||
- | ;путь к cat | ||
- | CAT=/ | ||
- | ;путь к grep | ||
- | GREP=/ | ||
- | ;путь к RC скрипту isc-dhcpd | ||
- | RC_DHCPD=/ | ||
- | ;путь к uptime | ||
- | UPTIME=/ | ||
- | ;путь к ping | ||
- | PING=/ | ||
- | ; путь к kill | ||
- | KILL=/ | ||
- | ; путь к PID файлу stargazer | ||
- | STGPID=/ | ||
- | ; указывает на потребность посылки SIGHUP к stargazer при добавлении NAS-а. | ||
- | STGNASHUP=0 | ||
- | ;путь к PHPSysInfo | ||
- | PHPSYSINFO=phpsysinfo/ | ||
- | ;язык по умолчанию | ||
- | LANG = ua | ||
- | ; | ||
- | TASKBAR_ICON_SIZE = 128 | ||
- | ; опции регистрации новых пользователей | ||
- | ; регистрировать новых пользователей со случайным MAC | ||
- | REGRANDOM_MAC=1 | ||
- | ; регистрировать новых пользователей с флагом " | ||
- | REGALWONLINE=1 | ||
- | ; регистрировать новых пользователей с отключенной детальной статистикой | ||
- | REGDISABLEDSTAT=1 | ||
- | |||
- | |||
- | | ||
- | // | ||
- | |||
- | |||
- | | ||
- | |||
- | |||
- | **разворачиваем заготовки стартовых скриптов** | ||
- | # cp -f docs/ | ||
- | # chmod a+x / | ||
- | |||
- | **редактируем конфиг / | ||
- | прописывая в него текущие параметры MySQL | ||
- | |||
- | host = localhost | ||
- | username = root | ||
- | password = newpassword | ||
- | database = stg | ||
- | |||
- | **редактируем файл / | ||
- | Вписываем интерфейс на котором будет производиться шейпинг пользователей а также контроль доступа в виде | ||
- | |||
- | IFACE=" | ||
- | |||
- | **создаем несколько нужных симлинков** | ||
- | # chmod -R 777 / | ||
- | # ln -fs / | ||
- | # ln -fs / | ||
- | # ln -fs / | ||
- | # ln -fs / | ||
- | |||
- | **редактируем конфиг / | ||
- | |||
- | прописывая в него подсеть пользователей, | ||
- | |||
- | subnet 172.30.0.0/ | ||
- | dev " | ||
- | output_cdf true | ||
- | recover_cdf true | ||
- | |||
- | **запускаем stargazer** | ||
- | |||
- | # stargazer | ||
- | |||
- | и посещаем web-интерфейс который исходя из нашего примера имеет вид: [[http:// | ||
- | |||
- | // | ||
- | |||
- | Если мы увидели нечто подобное рисунку приведенному ниже значит установка идет по плану ;) \\ | ||
- | {{: | ||
- | \\ | ||
- | |||
- | |||
- | ===== Возможные проблемы ===== | ||
- | Возможно в верхней части страницы будет отображаться ошибка\\ | ||
- | //Warning: date() [function.date]: | ||
- | исправляется эта неожиданность довольно просто - вписыванием вашей текущей временной зоны, например date.timezone=" | ||
- | #apachectl restart | ||
- | |||
- | Если при попытке нажать на иконку практически любого из модулей мы видим ошибку //wrong data input// возможно в PHP включен magic_quotes.\\ | ||
- | |||
- | Вставляем в файл **/ | ||
- | |||
- | magic_quotes_gpc = Off | ||
- | magic_quotes_runtime = Off | ||
- | magic_quotes_sybase = Off | ||
- | |||
- | Перезапускаем Apache | ||
- | # apachectl restart | ||
- | |||
- | ===== Первоначальная настройка ===== | ||
- | Весь процес первоначальной настройки вплоть до регистрации первого пользователя запечатлен в виде [[http:// | ||
- | |||
- | В общих чертах последовательность минимальной настройки приемлемой для того чтобы начинать регистрировать пользователей, | ||
- | - добавляем нового админа, | ||
- | - добавляем классы трафика в соответствии с описанными ранее для stargazer | ||
- | - добавляем нужные сети | ||
- | - вешаем на эти сети услуги | ||
- | - добавляем нужные нам тарифы | ||
- | - назначаем им скоростя | ||
- | - добавляем сервера доступа | ||
- | - настраиваем соответствующим образом dhcp | ||
- | - добавляем населенные пункты | ||
- | - добавляем в города улицы и дома куда будем селить абонентов | ||
- | - также желательно заполнить справочник " | ||
- | |||
- | ===== Настройка DHCPD ===== | ||
- | Начиная с версии 0.0.8 глобальный конфиг dhcpd.conf, файлы с хостами и описания подсетей генерируються автоматически исходя из настроек заполненных в модулях " | ||
- | |||
- | Шаблонизация глобального конфига и описаний подсетей при надобности производиться в файлах **config/ | ||
- | ===== Периодические задачи ===== | ||
- | **в # crontab -e добавляем** | ||
- | 20 0 * * 1 cd / | ||
- | |||
- | ===== Стартовый скрипт ===== | ||
- | |||
- | **/ | ||
- | |||
- | #!/bin/sh | ||
- | / | ||
- | / | ||
- | / | ||
- | |||
- | **назначаем ему нужные права** | ||
- | # chmod a+x / | ||
- | |||
- | **останавливаем stargazer и проверяем все ли запускается как надо** | ||
- | после чего смотрим как все запускается вместе: | ||
- | |||
- | # killall stargazer | ||
- | # / | ||
- | # ps aux | grep stargazer | ||
- | # ps aux | grep bandwidthd | ||
- | # ps aux | grep softflowd | ||
- | |||
- | Итак на данный момент мы рассмотрели с вами наиболее примитивный пример в котором сам биллинг, | ||
- | |||
- | |||
- | Более глубоко настройка NAS будет рассмотрена | ||
- | |||
- | ===== Основы конфигурации удаленного NAS на rscriptd ===== | ||
- | ** вставляем в / | ||
- | |||
- | <Module remote_script> | ||
- | SendPeriod = 10 | ||
- | SubnetFile =/ | ||
- | Password = secretpassword | ||
- | UserParams=Cash Tariff | ||
- | Port = 9999 | ||
- | </ | ||
- | |||
- | описания NAS для различных подсетей храняться в файле remote_nas.conf в виде\\ | ||
- | |||
- | 172.30.0.0/ | ||
- | |||
- | что соотвествует тому, что команды для пользователей в подсети 172.30.0.0/ | ||
- | |||
- | ===== Сборка rscriptd ===== | ||
- | |||
- | # fetch http:// | ||
- | # tar zxvf stg-2.407-p1.tar.gz | ||
- | # cd stg-2.407-p1/ | ||
- | # ./build | ||
- | # gmake install | ||
- | |||
- | **редактируем конфиг / | ||
- | |||
- | LogFileName=/ | ||
- | ExecutersNum=1 | ||
- | ConfigDir=/ | ||
- | Password=secretpassword | ||
- | Port=9999 | ||
- | UserTimeout=60 | ||
- | ScriptOnConnect=/ | ||
- | ScriptOnDisconnect=/ | ||
- | |||
- | Скрипты OnConnect/ | ||
- | |||
- | LOGIN=$1 | ||
- | IP=$2 | ||
- | CASH=$4 | ||
- | ID=$3 | ||
- | |||
- | ===== Тонкая настройка ===== | ||
- | **в файле config/ | ||
- | |||
- | | ||
- | |||
- | ===== Кабинет пользователя ===== | ||
- | - находиться в каталоге userstats | ||
- | - следует прописать параметры БД в config/ | ||
- | - параметры самой статистики в config/ | ||
- | - Более подробное описание опций можно увидеть [[userstats|здесь]] | ||
- | |||