Установим на чистую систему debian 12.5 (при установке системы выбраны standart system utilities и OpenSSH server).
Перед началом установки обновим систему и выполним перезапуск:
apt-get update apt-get upgrade apt-get dist-upgrade reboot
Установим необходимые компоненты:
apt-get install -yq htop net-tools mariadb-server mariadb-client default-libmysqlclient-dev apache2 apache2-utils libexpat1 ssl-cert build-essential rrdtool librrdtool-oo-perl libperl-dev libsql-translator-perl gcc make libtalloc-dev arping curl wget mc nano cpanminus build-essential libnet-snmp-perl libsnmp-dev libdbd-mysql-perl git net-tools
Загрузка АСР Казна-39
Перейдем в директорию /usr и загрузим в неё последнюю публичную версию с сайта, установка коммерческой версии чуть ниже
cd /usr git clone https://it39.su/asr-kazna-39/releases/39.git
Переименовываем в рабочий каталог
mv 39-Public_2_3_17 abills
Для коммерческой версии:
cd /usr git clone https://it39.su/asr-kazna-39/releases/full_release.git # (ссылку получаете после заключения договора)
Переименовываем в рабочий каталог
mv ACP abills
Настраиваем папки
Создадим необходимые директории и установим права:
mkdir /var/log/httpd/ mkdir /usr/abills/var/db/ 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 mkdir /usr/abills/Certs
Настройка Apache
Модули
Активируем необходимые модули Apache2:
a2enmod ssl a2enmod rewrite a2enmod suexec a2enmod include a2enmod cgi a2enmod headers
Конфиг
Скопируем веб-конфигурацию abills в директорию Apache2:
cp /usr/abills/misc/apache/acp_httpd_443.conf /etc/apache2/sites-enabled/
В начале конфигурации добавим ваш ServerName, например:
nano /etc/apache2/sites-enabled/acp_httpd_443.conf ServerName acp.kazna-39.ru
Сертификат
Создадим сертификат (в Common name укажем имя хоста):
/usr/abills/misc/certs_create.sh apache
Для автоматического редиректа правим основной файл апача
Приводим его к такому виду
<VirtualHost *:80>
# The ServerName directive sets the request scheme, hostname and port that
# the server uses to identify itself. This is used when creating
# redirection URLs. In the context of virtual hosts, the ServerName
# specifies what hostname must appear in the request's Host: header to
# match this virtual host. For the default virtual host (this file) this
# value is not decisive as it is used as a last resort host regardless.
# However, you must set it for any further virtual host explicitly.
#ServerName www.example.com
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
# Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
# error, crit, alert, emerg.
# It is also possible to configure the loglevel for particular
# modules, e.g.
#LogLevel info ssl:warn
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
# For most configuration files from conf-available/, which are
# enabled or disabled at a global level, it is possible to
# include a line for only one particular virtual host. For example the
# following line enables the CGI configuration for this host only
# after it has been globally disabled with "a2disconf".
#Include conf-available/serve-cgi-bin.conf
RewriteEngine On
RewriteRule ^(.*)$ https://%{HTTP_HOST}$1 [R=301,L]
</VirtualHost>
Проверка
Убедимся в корректности конфигурации:
apachectl -t
И перезапустим Apache2 чтобы применить изменения:
/etc/init.d/apache2 restart
MySQL / MariaDB
Подключимся к 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
Доп. таблицы
mysql -u root --default-character-set=utf8 -D abills < /usr/abills/db/Iptv.sql mysql -u root --default-character-set=utf8 -D abills < /usr/abills/db/Ureports.sql mysql -u root --default-character-set=utf8 -D abills < /usr/abills/db/Storage.sql mysql -u root --default-character-set=utf8 -D abills < /usr/abills/db/Accident.sql mysql -u root --default-character-set=utf8 -D abills < /usr/abills/db/Abon.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/Paysys.sql mysql -u root --default-character-set=utf8 -D abills < /usr/abills/db/Sms.sql mysql -u root --default-character-set=utf8 -D abills < /usr/abills/db/Snmputils.sql mysql -u root --default-character-set=utf8 -D abills < /usr/abills/db/Events.sql mysql -u root --default-character-set=utf8 -D abills < /usr/abills/db/Sysinfo.sql
В случае ошибки выполним команду ниже и повторим импорт базы данных:
sed -i -e "1 s/^/SET SQL_MODE='NO_ENGINE_SUBSTITUTION,NO_AUTO_VALUE_ON_ZERO';/;" /usr/abills/db/abills.sql
Установка Freeradius
На все предупреждения ./configure кроме rlm_perl и rlm_sql_mysql можно не обращать внимания.
На удаленном сервере установите libmysqlclient и libmysqlclient-dev
Проверка PERL
apt-get install libperl-dev -yq find /usr/lib/ | grep libperl.so Смотрим вывод /usr/lib/x86_64-linux-gnu/libperl.so.5.36.0 /usr/lib/x86_64-linux-gnu/libperl.so.5.36 /usr/lib/x86_64-linux-gnu/libperl.so
Делаем симлинк для того, чтобы библиотека подгрузилась во время компиляции
ln -s /usr/lib/x86_64-linux-gnu/libperl.so.5.36 /usr/lib/x86_64-linux-gnu/libperl.so
Симлинк уже может существовать
Настраиваем файл config.pl
cp /usr/abills/libexec/config.pl.default /usr/abills/libexec/config.pl
Добавляем доступ к базе данных
#DB configuration
$conf{dbhost}='localhost';
$conf{dbname}='ktk';
$conf{dbuser}='ktk';
$conf{dbpasswd}='sqlpassword';
$conf{dbtype}='mysql';
#For MySQL 5 and highter (cp1251, utf8)
$conf{dbcharset}='utf8';
Сборка FreeRadius
Начинаем сборку и установку Freeradius из исходников
apt-get install -yq gcc make libtalloc-dev cd /tmp wget https://github.com/FreeRADIUS/freeradius-server/releases/download/release_3_2_6/freeradius-server-3.2.6.tar.gz tar zxvf freeradius-server-3.2.6.tar.gz cd freeradius-server-3.2.6 ./configure --prefix=/usr/local/freeradius --with-rlm-perl-lib-dir=/usr/lib/x86_64-linux-gnu/ --with-rlm-sql-mysql-lib-dir=/var/lib/mysql/ --with-dhcp=yes --with-openssl=no > /dev/null make && make install
Настройка
cd /usr/abills mkdir /usr/local/freeradius/var/run/ mkdir /usr/local/freeradius/var/run/radiusd/ rm /usr/local/freeradius/etc/raddb/sites-enabled/* cp misc/freeradius/v3/mods-enabled/perl /usr/local/freeradius/etc/raddb/mods-enabled/perl cp misc/freeradius/v3/mods-enabled/sql /usr/local/freeradius/etc/raddb/mods-enabled/sql cp misc/freeradius/v3/sites-enabled/ACP_KA3HA-39 /usr/local/freeradius/etc/raddb/sites-enabled/ACP_KA3HA-39 cp misc/freeradius/v3/sites-enabled/control-socket /usr/local/freeradius/etc/raddb/sites-enabled/control-socket cp misc/freeradius/v3/users /usr/local/freeradius/etc/raddb/users ln -s /usr/local/freeradius/bin/* /usr/bin/ ln -s /usr/local/freeradius/sbin/* /usr/sbin/
Создаём системный юнит
Файл для автозапуска - создаем и вставляем в него следующий текст
Делаем его запускаемым
chmod +x /etc/init.d/radiusd systemctl enable radiusd
Конфиг
Меняем в конфиге радиуса /usr/local/freeradius/etc/raddb/radiusd.conf
prefix = /usr/local/freeradius user = freerad group = freerad
Благодаря модулю sql, можно хранить сервера доступа в базе данных (всё равно необходим перезапуск радиуса после добавления/изменения серверов, но не надо править clients.conf).
Очищаем список серверов доступа из /usr/local/freeradius/etc/raddb/clients.conf (чтоб не было дубликатов из-за записей в базе)
echo '' > /usr/local/freeradius/etc/raddb/clients.conf
Заполняем нужные нам параметры соединения с БД
nano /usr/local/freeradius/etc/raddb/mods-enabled/sql
sql {
database = "mysql"
driver = "rlm_sql_${database}"
server = "localhost"
#port = 3306
login = "acp_kazna"
password = "sqlpassword" #вместо sqlpassword подставляем своё значение из $conf{dbpasswd}
radius_db = "abills"
secretkey = "test12345678901234567890" # Серктный ключ кодирования
Запуск
Запуск radius в режиме отладки
/usr/sbin/radiusd -X
или
radiusd -X
Проверяем через другую консоль:
radtest test 123456 127.0.0.1:1812 0 secretpass 0 127.0.0.1
Доустанавливаем утилиты
apt-get install freeradius-utils
Необходимые модули Perl
Установим необходимые perl модули:
cd /usr/abills/misc/ perl perldeps.pl apt-get -batch cd /usr/abills/misc ./perl_modules_install.sh
Также запустим скрипт который поможет найти ошибки:
cd /usr/abills/misc/ ./post-install.sh
logrotate
Настроим ротацию логов FreeRADIUS, например:
/var/log/radius.log {
rotate 2
weekly
create
compress
missingok
}
cron
Внесем в cron задания:
*/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
Обязательная проверка БД
cd /usr/abills/misc/db_check/ ./db_check.pl CREATE_NOT_EXIST_TABLES
Сертификаты Сбера
Для нормальной работы эквайринга в РФ, необходимо установить корневые сертификаты от МинЦифры
/usr/abills/Sber/root_sber_certs.sh
Установка завершена
Веб-интерфейс администратора АСР Казна-39 можно открыть по адресу (стандартный логин — abills, пароль — abills):
https://HOST/admin/
Для пользователей:
https://HOST/
