Установим на чистую систему 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 |
Переименовываем в рабочий каталог
Коммерческая версия
Перейдем в директорию /usr и загрузим в неё последнюю публичную версию с сайта, установка коммерческой версии чуть ниже
cd /usr
git clone https://it39.su/asr-kazna-39/releases/full_release.git # (ссылку получаете после заключения договора) |
Переименовываем в рабочий каталог
Настраиваем папки
Создадим необходимые директории и установим права:
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 |
Для автоматического редиректа правим основной файл апача
| nano /etc/apache2/sites-enabled/000-default.conf |
Приводим его к такому виду
<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> |
Проверка
Убедимся в корректности конфигурации:
И перезапустим 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/ |
Создаём системный юнит
Файл для автозапуска - создаем и вставляем в него следующий текст
#!/bin/sh
# Start/stop the FreeRADIUS daemon.
### BEGIN INIT INFO
# Provides: radiusd
# Required-Start: $remote_fs $network $syslog
# Should-Start: $time mysql slapd postgresql samba krb5-kdc
# Required-Stop: $remote_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Radius Daemon
# Description: Extensible, configurable radius daemon
### END INIT INFO
set -e
. /lib/lsb/init-functions
PROG="radiusd"
PROGRAM="/usr/sbin/radiusd"
PIDFILE="/usr/local/freeradius/var/run/radiusd/radiusd.pid"
DESCR="FreeRADIUS daemon"
test -f $PROGRAM || exit 0
# /var/run may be a tmpfs
if [ ! -d /var/run/radiusd ]; then
mkdir -p /var/run/radiusd
chown freerad:freerad /var/run/radiusd
fi
export PATH="${PATH:+$PATH:}/usr/sbin:/sbin"
ret=0
case "$1" in
start)
log_daemon_msg "Starting $DESCR" "$PROG"
start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $PROGRAM || ret=$?
log_end_msg $ret
exit $ret
;;
stop)
log_daemon_msg "Stopping $DESCR" "$PROG"
if [ -f "$PIDFILE" ] ; then
start-stop-daemon --stop --retry=TERM/30/KILL/5 --quiet --pidfile $PIDFILE || ret=$?
log_end_msg $ret
else
log_action_cont_msg "$PIDFILE not found"
log_end_msg 0
fi
;;
restart|force-reload)
$0 stop
$0 start
;;
*)
echo "Usage: $0 start|stop|restart|force-reload"
exit 1
;;
esac
exit 0 |
Делаем его запускаемым
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 в режиме отладки
или
Проверяем через другую консоль:
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/
