На тесте буду устанавливать в чистую систему Ubuntu Server 18.04 LTS (при установке системы выбрал standart system utilities и OpenSSH server).
Переключимся на пользователя root:
sudo -i
Перед началом установки обновим систему и выполним перезапуск:
apt-get update
apt-get upgrade
apt-get dist-upgrade
reboot
Установим необходимые компоненты:
sudo -i
apt-get install -yq mysql-server mysql-client libmysqlclient-dev apache2 apache2-utils libexpat1 ssl-cert build-essential rrdtool librrdtool-oo-perl arping curl
Перейдем в директорию /usr и загрузим в неё последнюю версию с сайта
http://sourceforge.net/projects/abills/
cd /usr
wget https://sourceforge.net/projects/abills/files/abills/0.80/abills-0.80.04.tgz
Распакуем скачанный архив с ABillS:
tar zxvf abills-0.80.04.tgz
Создадим необходимые директории и установим права:
mkdir /var/log/httpd/
mkdir /usr/abills/var/db/rrd/
mkdir /usr/abills/backup
mkdir -p /usr/abills/var/log
touch /usr/abills/var/log/abills.log
mkdir /usr/abills/var/log/nas_logs/
touch /usr/abills/var/log/nas_logs/nas.log
ls -l /usr/abills/
chown -Rf www-data:www-data /usr/abills/cgi-bin
chown -Rf www-data:www-data /usr/abills/Abills/templates
chown -Rf www-data:www-data /usr/abills/backup
touch /usr/abills/var/log/sql_errors
chown nobody /usr/abills/var/log/sql_errors
chmod 666 /usr/abills/var/log/sql_errors
Скопируем веб-конфигурацию abills в директорию Apache2:
cp /usr/abills/misc/apache/abills_httpd.conf /etc/apache2/sites-enabled/
В начале конфигурации добавим ваш ServerName, например:
ServerName bill.ixnfo.com:9443
Убедимся в корректности конфигурации:
sudo apachectl -t
Создадим сертификат (в Common name укажем имя хоста):
/usr/abills/misc/certs_create.sh apache
Или установим Certbot: Установка Certbot в Ubuntu
Активируем необходимые модули Apache2:
a2enmod ssl
a2enmod rewrite
a2enmod suexec
a2enmod include
a2enmod cgi
И перезапустим Apache2 чтобы применить изменения:
/etc/init.d/apache2 restart
Подключимся к mysql серверу:
mysql --default-character-set=utf8 -u root -p
Создадим пользователя и базу данных (где sqlpassword — укажем свой пароль):
use mysql;
GRANT ALL ON abills.* TO `abills`@localhost IDENTIFIED BY "sqlpassword";
CREATE DATABASE abills DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
flush privileges;
quit
Импортируем данные mysql базы данных:
mysql --default-character-set=utf8 -u root -p -D abills < /usr/abills/db/abills.sql
В случае ошибки выполним команду нижу и повторим импорт базы данных:
sed -i -e "1 s/^/SET SQL_MODE='NO_ENGINE_SUBSTITUTION,NO_AUTO_VALUE_ON_ZERO';/;" /usr/abills/db/abills.sql
Смотрите также — Решение ошибки ERROR 1067 (42000) at line 211: Invalid default value for ‘blablabla’
Установим необходимые perl модули:
cd /usr/abills/misc/
perl perldeps.pl apt-get -batch
Если какие-то модули не установились, доустановим:
apt-get install -yq cpanminus build-essential
cpanm MODULE
В дальнейшем можно проверить все ли необходимые perl модули установлены:
cd /usr/abills/misc/
./perldeps.pl test
Также запустим скрипт который поможет найти ошибки:
cd /usr/abills/misc/
./post-install.sh
Установим Freeradius, например как я описывал в статье ниже:
Установка Freeradius
В следующем файле конфигурации укажем параметры соединения с mysql базой:
cp /usr/abills/libexec/config.pl.default /usr/abills/libexec/config.pl
nano /usr/abills/libexec/config.pl
Настроим ротацию логов FreeRADIUS, например:
nano /etc/logrotate.d/radiusd
/var/log/radius.log {
rotate 2
weekly
create
compress
missingok
}
Внесем в cron задания:
nano /etc/crontab
*/5 * * * * root /usr/abills/libexec/billd -all > /dev/null 2>&1
1 0 * * * root /usr/abills/libexec/periodic daily NO_ADM_REPORT=1 > /dev/null 2>&1
1 1 * * * root /usr/abills/libexec/periodic monthly NO_ADM_REPORT=1 > /dev/null 2>&1
1 3 * * * root /usr/abills/libexec/periodic backup > /dev/null 2>&1
Смотрите также справку:
/usr/abills/libexec/periodic help
Создадим файл для логов и назначим права:
touch /usr/abills/var/log/sql_errors && chmod 666 /usr/abills/var/log/sql_errors
Создадим символические ссылки на gzip и mysqldump для создания бэкапов базы:
ln -s /bin/gzip /usr/bin/gzip
ln -s /usr/bin/mysqldump /usr/local/bin/mysqldump
Веб-интерфейс ABillS администратора можно открыть по адресу (стандартный логин — abills, пароль — abills):
https://HOST:9443/admin/
Для пользователей:
https://HOST:9443/
В веб-интерфейсе через меню «Настройка» — «Сервер доступа» добавим сервер доступа и пул IP адресов для него.
В поле RADIUS Параметры можно указывать передаваемые параметры, например:
Session-Timeout=2592000
Session-Timeout можно увеличить так как по умолчанию оно равно 604800 (неделя) и через это время сессия принудительно завершается и поднимается при следующем DHCP запросе или некласифицированном пакете.
Можно отключить передачу радиусом Session-Timeout (потом указать session-timeout в конфигурации accel-ppp например или лучше не указывать вообще):
!Session-Timeout=0
Добавим тарифные платы: «Настройка» — «Internet» — «Тарифные планы». По умолчанию тариф начисляется на 30 дней. В поле «Кредит» можно указать 0.01 чтобы абонентов не отключало когда баланс ноль и тариф оплачен. Если будет переадресация на страницу с уведомлением о негативном депозите, то в поле «Фильтр негативного депозита» укажем имя фильтра, например NEG_DEPOSIT.
Добавим клиента «Клиенты» — «Логины» — «Добавить».
Заведем сервис Internet пользователю: «Клиенты» — (выбрать пользователя) — «Информация» — «Сервисы» — «Internet»
Если используется фильтр негативного депозита, то в Клиенты>Группы отметим каким группам разрешено брать кредит.
Выполним проверку запустив утилиту radtest указав логин и пароль существующего пользователя:
apt-get install freeradius-utils
radtest test 123456 127.0.0.1:1812 0 secretpass 0 127.0.0.1
В файле /usr/abills/libexec/config.pl укажем с каких IP адресов разрешено подключаться администраторам (лучше указать во вкладке Настройка — Администраторы — Доступ):
$conf{ADMINS_ALLOW_IP}='192.168.55.2,192.168.4.3';
Можно указать время сессии в web интерфейса администратора:
$conf{web_session_timeout} = 86000;
Чтобы пользователям с отрицательным балансом в гостевом режиме выдавался тот-же IP что и в рабочем (в этом случае неизвестные не получат IP):
$conf{INTERNET_GUEST_STATIC_IP}=1;
Чтобы при добавлении услуги по умолчанию выбирался какой нибудь IP Pool (где 1 это id пула, его можно посмотреть в Настройка — Сервер доступа — IP POOLs):
$conf{INTERNET_DEFAULT_IP_POOL}=1;
Чтобы абонентам которые не пользовались услугой несколько месяцев не добавляло по несколько списаний (у кого месячный тариф), можно добавить в конфигурацию опцию (при платеже или установке кредита в поле Активация будет установлена текущая дата):
$conf{INTERNET_PAY_ACTIVATE}=1;
Проверить целостность базы данных можно так:
sudo apt-get install libsql-translator-perl
cd /usr/abills/misc/db_check/
sudo ./db_check.pl
db_check.pl --help
Проверка на не созданные таблицы:
/usr/abills/misc/db_check/db_check.pl SHOW_CREATE
Можно импортировать недостающие таблицы:
mysql -u root --default-character-set=utf8 -D abills < /usr/abills/db/Dv.sql
mysql -u root --default-character-set=utf8 -D abills < /usr/abills/db/Tags.sql
mysql -u root --default-character-set=utf8 -D abills < /usr/abills/db/config_variables.sql
mysql -u root --default-character-set=utf8 -D abills < /usr/abills/db/Dhcphosts.sql
mysql -u root --default-character-set=utf8 -D abills < /usr/abills/db/Equipment.sql
mysql -u root --default-character-set=utf8 -D abills < /usr/abills/db/Equipment_models.sql
mysql -u root --default-character-set=utf8 -D abills < /usr/abills/db/Ipn.sql
mysql -u root --default-character-set=utf8 -D abills < /usr/abills/db/Snmputils.sql
Можно проверить правильно ли работает скрипт (встречал ошибку «Table ‘abills.dv_main’ doesn’t exist», исправил ее потом залив Dv.sql в базу):
/usr/abills/libexec/billd -all DEBUG=1
/usr/abills/libexec/billd -all DEBUG=10
/usr/abills/libexec/billd -all DEBUG=10 > billd_debug.txt
В интерфейсе ABillS выберем «Настройка» — «Администраторы», напротив нужного администратора заначек «Права» и установим галочки на необходимые права.
В «Настройка» — «Другое» — «Пути» укажем пути к программам.
Чтобы неизвестные клиенты авторизовывались в гостевом режиме, в Настройка > Сервер доступа > IP POOLs создадим гостевой пул и привяжем его к серверу доступа.
Если проблема с платежными системами, то смотрим логи:
grep UID /usr/abills/var/log/paysys_check.log
Zap all в биллинге используется для чистки таблицы сессий, но не для их завершения, для завершения всех сессий можно воспользоваться скриптом autozh.pl.
Чтобы поисковые ситемы не индексировали страницы биллинга, рекомендую добавить файл /usr/abills/cgi-bin/robots.txt со следующим содержимым:
User-agent: *
Disallow: /
Посмотрим статистику базы данных:
mysql -u root
SHOW ENGINE INNODB STATUS;
quit
Смотрите также мои статьи:
- Установка и настройка accel-ppp (IPoE) для ABillS
- ABillS. Установка Freeradius
- Сборка и установка accel-ppp
- Установка и настройка FreeRADIUS
- Резервное копирование ABillS
- Как изменить open_files_limit в MySQL
- Перенос каталога данных MySQL на новое место
Abils такая дичь)))работал до этого на другом прове, там был самописный!!ТО на много удобнее!)))Но за статью спс