Користувальницькькі налаштування

Налаштування сайту


setupfreebsd

Розбіжності

Тут показані розбіжності між вибраною ревізією та поточною версією сторінки.

Посилання на цей список змін

Порівняння попередніх версій Попередня ревізія
setupfreebsd [2023/06/15 20:34]
nightfly знищено
— (поточний)
Рядок 1: Рядок 1:
-====== Общие аспекты установки Ubilling на FreeBSD 8.x ====== 
- 
- 
-====== Внимание ====== 
-Данное руководство актуально для версии Ubilling 0.1.9 (сильно устарело, почитать можно **только для общего развития**). Используйте [[setupubinstaller|Автоматическую установку Stargazer+Ubilling на FreeBSD при помощи UBinstaller]] в реальном мире. 
-{{:alertold.png? |}} 
- 
- 
- 
-===== Возможные конфигурации ===== 
- 
-Существует три наиболее распространенных конфигурации 
-  - СУБД (MySQL), Stargazer, Ubilling, NAS на одном физическом сервере, возможно использование при небольших объемах пользовательских баз и трафика 
-  - СУБД, Stargazer, Ubilling, NAS - различные физические сервере, для обеспечения максимального быстродействия и масштабирования по горизонтали 
-  - Компромиссный с точки зрения стоимости и быстродействия вариант, когда СУБД, Stargazer, Ubilling размещены на одном сервера а вся обработка пользовательского трафика производиться на удаленном NAS 
- 
-===== Требования к установленному ПО ===== 
-  * FreeBSD 6.x-8.x 
-  * MySQL >=5.x 
-  * libexpat 
-  * Stargazer версии 2.407 или выше 
-  * Конфигураторы Stargazer - sgconf/sgconf_xml/xmlrpc  
-  * 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 на одном физическом сервере\\ 
- {{:ubsingle.png?200|}}\\ 
- 2. СУБД, Stargazer, Ubilling размещены на одном сервере а вся обработка пользовательского трафика производиться на удаленном NAS\\ 
- {{:ubremotenas.png?200|}}\\ 
- 
-===== Установка требуемого внешнего ПО ===== 
-В данном примере рассматривается установка всего требуемого ПО при помощи системы портов. 
- 
-  # cd /usr/ports/databases/mysql51-server/ && make install 
-  # cd /usr/ports/net-mgmt/softflowd/ && make install 
-  # cd /usr/ports/net-mgmt/bandwidthd/ && make install 
-  # cd /usr/ports/textproc/expat2 && make install 
-  # cd /usr/ports/security/sudo && make install 
-  # cd /usr/ports/net/isc-dhcp31-server/ && make install 
-   
-//php5 должен быть собран с поддержкой CLI и модулем Apache// 
-  # cd /usr/ports/lang/php5 && make install 
-//собираем модули MYSQL, MBSTRING, ICONV// 
-  # cd /usr/ports/lang/php5-extensions/ && make config && make install 
- 
-**редактируем /etc/rc.conf** 
-  mysql_enable="YES" 
-  apache_enable="YES" 
-  dhcpd_enable="YES"                        
-  dhcpd_flags="-q"                          
-  dhcpd_conf="/usr/local/etc/multinet/dhcpd.conf"     
-  dhcpd_ifaces="em0" 
- 
-**редактируем /usr/local/etc/sudoers** 
-  User_Alias BILLING = www 
-  BILLING         ALL = NOPASSWD: ALL 
- 
-**запускаем Apache и MySQL** 
-  # /usr/local/etc/rc.d/mysql-server start 
-  # apachectl start 
- 
-**устанавливаем новый пароль пользователя root для mysql (newpassword — для примера)** 
-  #mysqladmin -u root password newpassword 
- 
-===== Установка Stargazer ====== 
-  # fetch http://stg.dp.ua/download/server/2.407-p1/stg-2.407-p1.tar.gz 
-  # tar zxvf stg-2.407-p1.tar.gz 
-  # cd stg-2.407-p1/projects/stargazer/ 
-  # ./build 
-  # gmake install 
-  # cd ../sgconf && ./build && gmake && gmake install 
-  # cd ../sgconf_xml/ && ./build && gmake && gmake install 
- 
-**редактируем /etc/stargazer/stargazer.conf**, приводя его в соответствие текущим потребностям 
-Также рекомендуется ознакомиться с [[http://stg.dp.ua/download/server/2.407/stargazer_help_v2.14.pdf|документацией по Stargazer]] для уточнения деталей. 
-   
-  # путь к логфайлу  
-  LogFile = /var/log/stargazer.log  
-  # путь к pid 
-  PIDFile = /var/run/stargazer.pid  
-  # файл с описанием класов трафика 
-  Rules = /etc/stargazer/rules  
-  # время записи детальной статистики в базу 
-  DetailStatWritePeriod = 1/4  
-  # время сброса счетчиков трафика в базу 
-  StatWritePeriod = 10  
-  # день снятия абонплаты 
-  DayFee = 1  
-  # это последний день месяца? 
-  DayFeeIsLastDay = no  
-  # день обнуления счетчиков трафика 
-  DayResetTraff = 1  
-  # "размазанное" снятие абонплаты 
-  SpreadFee = no  
-  # позволять пользователю доступ если у него остался предоплаченый трафик? 
-  FreeMbAllowInet = no  
-  # писать стоимость предоплаченого трафика? 
-  WriteFreeMbTraffCost = yes  
-  # снимать полную абонплату ежемесячно? 
-  FullFee = yes  
-  # названия класов трафика относительно /etc/stargazer/rules 
-  <DirNames>  
-    DirName0 = Internet  
-    DirName1 = Internal  
-    DirName2 =  
-    DirName3 =  
-    DirName4 =  
-    DirName5 =  
-    DirName6 =  
-    DirName7 =  
-    DirName8 =  
-    DirName9 =  
-  </DirNames>  
-  ExecutersNum = 1  
-  # путь модулей 
-  ModulesPath = /usr/lib/stg  
-  # модуль хранения данных 
-  <StoreModule store_mysql>  
-  # хост MySQL 
-    dbhost = localhost  
-  # имя базы 
-    dbname = stg  
-  # логин пользователя MySQL 
-    dbuser = root  
-  # пароль пользователя MySQL 
-    rootdbpass = newpassword  
-  </StoreModule>  
-  <Modules>  
-  # модуль авторизации AlwaysOnline (рекомендуется) 
-  <Module auth_ao>  
-  </Module>  
-  # модуль авторизации штатного авторизатора stargazer 
-  <Module auth_ia>  
-    Port = 5555  
-    UserDelay = 60  
-    UserTimeout = 65  
-    FreeMb = cash  
-  </Module>  
-  # модуль коллектора трафика NetFlow 
-  <Module cap_nf> 
-        TCPPort = 42111 
-        UDPPort = 42111 
-  </Module> 
-  # модуль конфигуратора  
-  <Module conf_sg>  
-    Port = 5555  
-  </Module>  
-  </Modules>  
- 
-**редактируем конфиг /etc/stargazer/rules** 
-  ALL     192.168.56.0/24  DIR1  
-  ALL     0.0.0.0/       DIR0 
- 
-**запускаем 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 /usr/local/www/data/ 
-  # mkdir billing 
-  # cd billing 
-  # fetch http://ubilling.net.ua/ub.tgz 
-  # tar zxvf ub.tgz 
-  # chmod -R 777 content/ config/ multinet/ exports/ remote_nas.conf vservices.php 
- 
-**разворачиваем дамп с нужными таблицами по умолчанию** 
- 
-  # cat docs/test_dump.sql | mysql -u root -p stg 
- 
-убеждаемся нормально ли развернулся дамп 
-  #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/mysql.ini** 
-приводя его в соответствие с текущей ситуацией 
-  ;Хост БД  
-  server = "localhost"  
-  ;порт MySQL 
-  port = "3306"  
-  ;логин пользователя MySQL  
-  username = "root"  
-  ;его пароль 
-  password = "newpassword"  
-  ;имя базы 
-  db = "stg"  
-  character = "UTF8"  
-  prefix = "billing" 
- 
-**редактируем файл config/billing.ini** 
-Прежде всего следует определиться с методом взаимодействия со stargazer. На данный момент возможен выбор одного из трех обработчиков: sgconf, sgconfxml(рекомендуется) и xmlrpc. 
- 
-  ; метод взаимодействия со stargazer 
-  baseconf = sgconfxml  
-  ; путь к sgconf  
-  SGCONF=/usr/sbin/sgconf  
-  ; путь к sgconf_xml 
-  SGCONFXML=/usr/sbin/sgconf_xml  
-  ; хост на котором запущен stargazer 
-  STG_HOST=localhost  
-  ; порт конфигуратора 
-  STG_PORT=5555  
-  ; порт XMLRPC 
-  XMLRPC_PORT=8081  
-  ; логин администратора stargazer (по умолчанию admin) 
-  STG_LOGIN=admin  
-  ; пароль администратора stargazer (по умолчанию 123456) 
-  STG_PASSWD=123456  
-  ;Пути окружения 
-  ;путь к sudo 
-  SUDO=/usr/local/bin/sudo  
-  ;путь к top в пакетном режиме 
-  TOP = /usr/bin/top -b  
-  ;путь к cat 
-  CAT=/bin/cat 
-  ;путь к grep  
-  GREP=/usr/bin/grep  
-  ;путь к RC скрипту isc-dhcpd 
-  RC_DHCPD=/usr/local/etc/rc.d/isc-dhcpd  
-  ;путь к uptime 
-  UPTIME=/usr/bin/uptime  
-  ;путь к ping 
-  PING=/sbin/ping  
-  ; путь к kill 
-  KILL=/bin/kill 
-  ; путь к PID файлу stargazer 
-  STGPID=/var/run/stargazer.pid 
-  ; указывает на потребность посылки SIGHUP к stargazer при добавлении NAS-а. 
-  STGNASHUP=0 
-  ;путь к PHPSysInfo 
-  PHPSYSINFO=phpsysinfo/  
-  ;язык по умолчанию 
-  LANG = ua  
-  ;размер иконок в "панели задач" 
-  TASKBAR_ICON_SIZE = 128  
-  ; опции регистрации новых пользователей 
-  ; регистрировать новых пользователей со случайным MAC 
-  REGRANDOM_MAC=1  
-  ; регистрировать новых пользователей с флагом "Всегда онлайн" 
-  REGALWONLINE=1  
-  ; регистрировать новых пользователей с отключенной детальной статистикой 
-  REGDISABLEDSTAT=1 
- 
- 
-   
-//правильность путей к программам окружения можно проверить при помощи команды whereis// 
- 
- 
-   
- 
- 
-**разворачиваем заготовки стартовых скриптов** 
-  # cp -f docs/presets/FreeBSD/etc/stargazer/* /etc/stargazer/ 
-  # chmod a+x /etc/stargazer/* 
- 
-**редактируем конфиг /etc/stargazer/config** 
-прописывая в него текущие параметры MySQL 
- 
-  host = localhost  
-  username = root  
-  password = newpassword  
-  database = stg 
- 
-**редактируем файл /etc/stargazer/OnConnect** 
-Вписываем интерфейс на котором будет производиться шейпинг пользователей а также контроль доступа в виде 
- 
-  IFACE="em0" 
- 
-**создаем несколько нужных симлинков** 
-  # chmod -R 777 /etc/stargazer/dn 
-  # ln -fs /usr/local/www/data/billing/multinet /usr/local/etc/multinet 
-  # ln -fs /usr/local/www/data/billing/remote_nas.conf /etc/stargazer/remote_nas.conf 
-  # ln -fs /usr/local/bandwidthd/htdocs /usr/local/www/data/band 
-  # ln -fs /etc/stargazer/dn /usr/local/www/data/billing/content/dn 
- 
-**редактируем конфиг /usr/local/bandwidthd/etc/bandwidthd.conf** 
- 
-прописывая в него подсеть пользователей, интерфейс для подсчета трафика, и опции вывода и сохранения данных 
- 
-  subnet 172.30.0.0/21 
-  dev "em0" 
-  output_cdf true 
-  recover_cdf true 
- 
-**запускаем stargazer** 
- 
-  # stargazer 
- 
-и посещаем web-интерфейс который исходя из нашего примера имеет вид: [[http://192.168.56.2/billing/]] \\ 
- 
-//логин и пароль по умолчанию **admin/demo**// 
- 
-Если мы увидели нечто подобное рисунку приведенному ниже значит установка идет по плану ;) \\ 
-{{:taskbar.png?200|}} 
-\\ 
- 
- 
-===== Возможные проблемы ===== 
-Возможно в верхней части страницы будет отображаться ошибка\\ 
-//Warning: date() [function.date]: It is not safe to rely on the system's timezone settings//\\ 
-исправляется эта неожиданность довольно просто - вписыванием вашей текущей временной зоны, например date.timezone="Europe/Kiev" в файл **/usr/local/etc/php.ini** и перезапуском Apache 
-  #apachectl restart 
- 
-Если при попытке нажать на иконку практически любого из модулей мы видим ошибку //wrong data input// возможно в PHP включен magic_quotes.\\ 
- 
-Вставляем в файл **/usr/local/etc/php.ini** следующее 
- 
-  magic_quotes_gpc = Off  
-  magic_quotes_runtime = Off  
-  magic_quotes_sybase = Off  
- 
-Перезапускаем Apache 
-  # apachectl restart 
- 
-===== Первоначальная настройка ===== 
-Весь процес первоначальной настройки вплоть до регистрации первого пользователя запечатлен в виде [[http://www.youtube.com/watch?v=dZlIa6B2AmA|трехминутного видеоролика]] 
- 
-В общих чертах последовательность минимальной настройки приемлемой для того чтобы начинать регистрировать пользователей, должна быть такой:\\ 
-  - добавляем нового админа, назначаем ему права 
-  - добавляем классы трафика в соответствии с описанными ранее для stargazer 
-  - добавляем нужные сети 
-  - вешаем на эти сети услуги 
-  - добавляем нужные нам тарифы 
-  - назначаем им скоростя 
-  - добавляем сервера доступа 
-  - настраиваем соответствующим образом dhcp  
-  - добавляем населенные пункты 
-  - добавляем в города улицы и дома куда будем селить абонентов 
-  - также желательно заполнить справочник "предприниматели" своими реквизитами 
- 
-===== Настройка DHCPD ===== 
-Начиная с версии 0.0.8 глобальный конфиг dhcpd.conf, файлы с хостами и описания подсетей генерируються автоматически исходя из настроек заполненных в модулях "Сети" и "DHCP". Единственное что теперь требуется это запускать isc-dhcpd с конфигом который находиться в **/usr/local/etc/multinet/dhcpd.conf**\\ 
- 
-Шаблонизация глобального конфига и описаний подсетей при надобности производиться в файлах **config/dhcp/global.template** и **config/dhcp/subnets.template**. Пожалуйста ознакомтесь с описанием макросов доступных в этих шаблонов по [[templating#шаблоны_dhcp|этой ссылке]] - это избавит вас от неожиданностей. 
-===== Периодические задачи ===== 
-**в # crontab -e добавляем** 
-  20 0 * * 1  cd /usr/local/www/data/billing/ ; /usr/local/bin/php /usr/local/www/data/billing/vservices.php > /var/log/vservices.log 
- 
-===== Стартовый скрипт ===== 
- 
-**/etc/rc.d/billing** 
- 
-  #!/bin/sh 
-  /usr/sbin/stargazer 
-  /usr/local/bandwidthd/bandwidthd 
-  /usr/local/sbin/softflowd -i em0 -n 127.0.0.1:42111 
- 
-**назначаем ему нужные права** 
-  # chmod a+x /etc/rc.d/billing 
- 
-**останавливаем stargazer и проверяем все ли запускается как надо** 
-после чего смотрим как все запускается вместе: 
- 
-  # killall stargazer 
-  # /etc/rc.d/billing 
-  # ps aux | grep stargazer 
-  # ps aux | grep bandwidthd 
-  # ps aux | grep softflowd 
- 
-Итак на данный момент мы рассмотрели с вами наиболее примитивный пример в котором сам биллинг, его БД, сенсор и коллектор netflow а также весь routing/shape пользовательского трафика проходят на одном единичном хосте. Естественно для сетей с каким либо существенным количеством абонентов и трафика это не является допустимой архитектурой. К счастью stargazer предлагает очень простой и елегантный механизм масштабирования по горизонтали, зовущийся rscriptd и позволяющий удаленно исполнять скрипты OnConnect/OnDisconnect. 
- 
- 
-Более глубоко настройка NAS будет рассмотрена  в [[freebsdremotenas|другом документе]] с наглядными примерами и заготовками конфигов. На этом этапе написания документации хотелось бы в общих чертах рассмотреть общие принципы работы удаленных NAS на rscriptd. 
- 
-===== Основы конфигурации удаленного NAS на rscriptd ===== 
-** вставляем в /etc/stargazer/stargazer.conf** 
- 
-  <Module remote_script>  
- SendPeriod = 10 
- SubnetFile =/etc/stargazer/remote_nas.conf 
- Password = secretpassword 
- UserParams=Cash Tariff 
- Port = 9999  
-  </Module> 
-  
-описания NAS для различных подсетей храняться в файле remote_nas.conf в виде\\ 
- 
-  172.30.0.0/24    192.168.0.3  
- 
-что соотвествует тому, что команды для пользователей в подсети 172.30.0.0/24 следует отправлять rscriptd запущенном на сервере 192.168.0.3 
- 
-===== Сборка rscriptd ===== 
- 
-  # fetch http://stg.dp.ua/download/server/2.407-p1/stg-2.407-p1.tar.gz 
-  # tar zxvf stg-2.407-p1.tar.gz 
-  # cd stg-2.407-p1/projects/rscriptd/ 
-  # ./build 
-  # gmake install 
- 
-**редактируем конфиг /etc/stargazer/rscriptd.conf** 
- 
-  LogFileName=/var/log/rscriptd.log  
-  ExecutersNum=1  
-  ConfigDir=/etc/rscriptd  
-  Password=secretpassword 
-  Port=9999  
-  UserTimeout=60  
-  ScriptOnConnect=/etc/rscriptd/OnConnect  
-  ScriptOnDisconnect=/etc/rscriptd/OnDisconnect 
- 
-Скрипты OnConnect/OnDisconnect/GetSpeed/GetMac/GetUpSpeed вы можете использовать точно теже что и в описанном выше примере только с той разницей что параметры в OnConnect/OnDisconnect передаються в виде 
- 
-  LOGIN=$1  
-  IP=$2  
-  CASH=$4  
-  ID=$3  
- 
-===== Тонкая настройка ===== 
-**в файле config/alter.ini** можно [[alteriniconf|редактировать специфичные]] для разных ISP опции\\ 
- 
-   
- 
-===== Кабинет пользователя ===== 
-  - находиться в каталоге userstats 
-  - следует прописать параметры БД в config/mysql.ini 
-  - параметры самой статистики в config/userstats.ini 
-  - Более подробное описание опций можно увидеть [[userstats|здесь]] 
- 
  
setupfreebsd.1686850458.txt.gz · Востаннє змінено: 2023/06/15 20:34 повз nightfly