Установим на чистую систему 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 abills

Коммерческая версия

Перейдем в директорию /usr и загрузим в неё последнюю публичную версию с сайта, установка коммерческой версии чуть ниже

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/acp.log
chmod 666 /usr/abills/var/log/acp.log
touch /usr/abills/var/log/paysys_check.log
chmod 666 /usr/abills/var/log/paysys_check.log 
mkdir /usr/abills/var/log/nas_logs/
touch /usr/abills/var/log/nas_logs/nas.log
chmod 666 /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>

Проверка

Убедимся в корректности конфигурации:

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 acp.* TO `acp`@localhost IDENTIFIED BY "STR0NGP@SSW0RD"; 
CREATE DATABASE acp 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

Проверяем индексы

Внимание, из-за ограничений *SQL систем,, рекомендуется открыть файл с индексами, из папки /../../db/upgraade/indexes.sql в любом текстовом редакторе (Notepd++ или SublimeText) и просто CTRL+A, CTRL+C потом зайти в сам SQL 

mysql -u root -p
use ktk;


И вставить скопированные индексы - CTRL+V (индексы можно взять и ниже)

Список индексов
mysql -u root -p
use ktk;
ALTER TABLE abon_user_list ADD KEY uid (uid, tp_id);
ALTER TABLE accident_address ADD KEY address_id (address_id);
ALTER TABLE accident_address ADD KEY type_id (type_id);
ALTER TABLE accident_log ADD KEY status (status);
ALTER TABLE admin_actions ADD KEY action_type (action_type);
ALTER TABLE admin_actions ADD KEY aid (aid);
ALTER TABLE admin_actions ADD KEY uid (uid);
ALTER TABLE admin_system_actions ADD KEY action_type (action_type);
ALTER TABLE admin_system_actions ADD KEY aid (aid);
ALTER TABLE admins_access ADD KEY aid (aid);
ALTER TABLE admins_contacts ADD KEY aid (aid);
ALTER TABLE admins_contacts ADD KEY type_id (type_id);
ALTER TABLE admins_full_log ADD KEY aid (aid);
ALTER TABLE admins_groups ADD KEY gid (gid, aid);
ALTER TABLE admins_payments_types ADD KEY aid (aid);
ALTER TABLE admins_payments_types ADD KEY payments_type_id (payments_type_id);
ALTER TABLE admins ADD KEY domain_id (domain_id);
ALTER TABLE bills ADD KEY uid (uid, company_id);
ALTER TABLE bonus_log ADD KEY date (date);
ALTER TABLE bonus_log ADD KEY uid (uid);
ALTER TABLE builds DROP KEY street_id;
ALTER TABLE cablecat_scheme_elements ADD KEY id (id);
ALTER TABLE cablecat_scheme_links ADD KEY id (id);
ALTER TABLE cablecat_schemes ADD KEY commutation_id (commutation_id);
ALTER TABLE callcenter_cdr ADD KEY accountcode (accountcode);
ALTER TABLE callcenter_cdr ADD KEY calldate (calldate);
ALTER TABLE callcenter_cdr ADD KEY dst (dst);
ALTER TABLE callcenter_ivr_log ADD KEY uid(uid);
ALTER TABLE cams_folder DROP KEY title;
ALTER TABLE cams_main ADD KEY uid (uid);
ALTER TABLE cams_tp ADD KEY tp_id (tp_id);
ALTER TABLE cards_users ADD KEY diller_id (diller_id);
ALTER TABLE cards_users ADD KEY login (login);
ALTER TABLE companies ADD KEY bill_id (bill_id);
ALTER TABLE crm_leads ADD KEY competitor_id (competitor_id);
ALTER TABLE dhcphosts_hosts ADD KEY mac (mac);
ALTER TABLE dhcphosts_hosts ADD KEY uid (uid);
ALTER TABLE dhcphosts_leases ADD KEY ends (ends);
ALTER TABLE dhcphosts_leases ADD KEY ip (ip);
ALTER TABLE dhcphosts_leases ADD KEY nas_id (nas_id);
ALTER TABLE docs_act_orders ADD KEY act_id (act_id);
ALTER TABLE docs_acts ADD KEY domain_id (domain_id);
ALTER TABLE docs_invoice_orders ADD KEY fees_id (fees_id);
ALTER TABLE docs_invoice_orders ADD KEY invoice_id (invoice_id);
ALTER TABLE docs_invoices ADD KEY aid (aid);
ALTER TABLE docs_invoices ADD KEY domain_id (domain_id);
ALTER TABLE docs_invoices ADD KEY payment_id (payment_id);
ALTER TABLE docs_invoices ADD KEY uid (uid);
ALTER TABLE docs_receipt_orders ADD KEY fees_id (fees_id);
ALTER TABLE docs_receipt_orders ADD KEY receipt_id (receipt_id);
ALTER TABLE docs_receipts ADD KEY domain_id (domain_id);
ALTER TABLE docs_receipts ADD KEY payment_id (payment_id);
ALTER TABLE docs_tax_invoice_orders ADD KEY aid (tax_invoice_id);
ALTER TABLE docs_tax_invoices ADD KEY domain_id (domain_id);
ALTER TABLE dv_calls ADD KEY acct_session_id (acct_session_id);
ALTER TABLE dv_calls ADD KEY framed_ip_address (framed_ip_address);
ALTER TABLE dv_calls ADD KEY uid (uid);
ALTER TABLE dv_calls ADD KEY user_name (user_name);
ALTER TABLE dv_log_intervals ADD KEY acct_session_id (acct_session_id);
ALTER TABLE dv_log_intervals ADD KEY session_interval (acct_session_id, interval_id);
ALTER TABLE dv_log_intervals ADD KEY uid (uid);
ALTER TABLE dv_log ADD KEY uid (uid, start);
ALTER TABLE dv_main ADD KEY CID (cid);
ALTER TABLE dv_main ADD KEY tp_id (tp_id);
ALTER TABLE economizer_tariffs ADD KEY id (id);
ALTER TABLE economizer_user_info ADD KEY id (id);
ALTER TABLE employees_cashboxes_moving ADD KEY aid (aid);
ALTER TABLE employees_coming ADD KEY aid (aid);
ALTER TABLE employees_daily_notes ADD KEY aid (aid);
ALTER TABLE employees_duty ADD KEY aid (aid);
ALTER TABLE employees_ext_params ADD KEY aid (aid);
ALTER TABLE employees_geolocation ADD KEY build_id (build_id);
ALTER TABLE employees_geolocation ADD KEY district_id (district_id);
ALTER TABLE employees_geolocation ADD KEY employee_id (employee_id);
ALTER TABLE employees_geolocation ADD KEY street_id (street_id);
ALTER TABLE employees_mobile_reports ADD KEY aid (aid);
ALTER TABLE employees_rfid_log ADD KEY aid (aid);
ALTER TABLE employees_salaries_payed ADD KEY aid (aid);
ALTER TABLE employees_salary_bonus ADD KEY aid (aid);
ALTER TABLE employees_spending ADD KEY aid (aid);
ALTER TABLE employees_works ADD KEY aid (aid);
ALTER TABLE employees_works ADD KEY ext_id (ext_id);
ALTER TABLE equipment_graphs ADD KEY (nas_id);
ALTER TABLE equipment_infos ADD KEY model_id (model_id);
ALTER TABLE equipment_mac_log ADD KEY mac (mac);
ALTER TABLE equipment_mac_log ADD KEY nas_id (nas_id);
ALTER TABLE equipment_models ADD KEY type_id (type_id);
ALTER TABLE equipment_pon_onu ADD KEY onu_dhcp_port (onu_dhcp_port);
ALTER TABLE equipment_pon_onu ADD KEY onu_status (onu_status);
ALTER TABLE equipment_pon_onu ADD KEY port_id (port_id);
ALTER TABLE equipment_pon_onu ADD KEY onu_mac_serial (onu_mac_serial);
ALTER TABLE equipment_pon_ports ADD KEY nas_id (nas_id);
ALTER TABLE errors_log ADD KEY i_user_date (user, date);
ALTER TABLE errors_log ADD KEY log_type (log_type);
ALTER TABLE events_priority_send_types ADD KEY priority_id (priority_id);
ALTER TABLE events ADD KEY aid (aid);
ALTER TABLE events ADD KEY group_id (group_id);
ALTER TABLE events ADD KEY priority_id (priority_id);
ALTER TABLE events ADD KEY privacy_id (privacy_id);
ALTER TABLE events ADD KEY state_id (state_id);
ALTER TABLE exchange_rate_log ADD KEY date (date);
ALTER TABLE extfin_paids_periodic ADD KEY aid (aid);
ALTER TABLE extfin_paids_periodic ADD KEY type_id (type_id);
ALTER TABLE extfin_paids_periodic ADD KEY uid (uid);
ALTER TABLE fees ADD KEY aid (aid);
ALTER TABLE fees ADD KEY date (date);
ALTER TABLE fees ADD KEY uid (uid);
ALTER TABLE filearch_film_actors ADD KEY actor_id (actor_id);
ALTER TABLE filearch_film_genres ADD KEY video_id (video_id);
ALTER TABLE filearch_state ADD KEY file_id (file_id);
ALTER TABLE info_change_comments ADD KEY aid (aid);
ALTER TABLE info_change_comments ADD KEY uid (uid);
ALTER TABLE info_info ADD KEY admin_id (admin_id);
ALTER TABLE info_info ADD KEY comment_id (comment_id);
ALTER TABLE info_info ADD KEY location_id (location_id);
ALTER TABLE internet_log_intervals ADD KEY acct_session_id (acct_session_id);
ALTER TABLE internet_log_intervals ADD KEY session_interval (acct_session_id, interval_id);
ALTER TABLE internet_log_intervals ADD KEY uid (uid);
ALTER TABLE internet_log ADD KEY uid (uid, start);
ALTER TABLE internet_main ADD KEY cid (cid);
ALTER TABLE internet_main ADD KEY cpe_mac (cpe_mac);
ALTER TABLE internet_main ADD KEY nas_id (nas_id);
ALTER TABLE internet_main ADD KEY port (port);
ALTER TABLE internet_main ADD KEY tp_id (tp_id);
ALTER TABLE internet_main ADD KEY uid (uid);
ALTER TABLE internet_online ADD KEY (switch_mac);
ALTER TABLE internet_online ADD KEY acct_session_id (acct_session_id);
ALTER TABLE internet_online ADD KEY framed_ip_address (framed_ip_address);
ALTER TABLE internet_online ADD KEY nas_id (nas_id);
ALTER TABLE internet_online ADD KEY service_id (service_id);
ALTER TABLE internet_online ADD KEY switch_mac (switch_mac);
ALTER TABLE internet_online ADD KEY uid (uid);
ALTER TABLE internet_online ADD KEY user_name (user_name);
ALTER TABLE internet_online ADD KEY nas_id (nas_id);
ALTER TABLE ipn_log ADD KEY session_id (session_id);
ALTER TABLE ipn_log ADD KEY uid_traffic_class (uid, traffic_class);
ALTER TABLE ipn_log ADD KEY uid (uid);
ALTER TABLE ippools_ips ADD KEY ip_status (ip, status);
ALTER TABLE ippools_ips ADD KEY ippool_id (ippool_id);
ALTER TABLE ippools ADD KEY ipv6_prefix (ipv6_prefix);
ALTER TABLE ippools ADD KEY guest (guest);
ALTER TABLE ippools ADD KEY priority (priority);
ALTER TABLE ippools ADD KEY static (static);
ALTER TABLE iptv_calls ADD KEY acct_session_id (acct_session_id);
ALTER TABLE iptv_calls ADD KEY service_id (service_id);
ALTER TABLE iptv_calls ADD KEY uid (uid);
ALTER TABLE iptv_devices ADD KEY service_id (service_id);
ALTER TABLE iptv_devices ADD KEY uid (uid);
ALTER TABLE iptv_main ADD KEY tp_id (tp_id);
ALTER TABLE iptv_main ADD KEY uid (uid);
ALTER TABLE iptv_services ADD KEY status (status);
ALTER TABLE iptv_subscribes ADD KEY ext_id (ext_id);
ALTER TABLE iptv_subscribes ADD KEY tp_id (tp_id);
ALTER TABLE iptv_ti_channels ADD KEY interval_id (interval_id);
ALTER TABLE iptv_users_channels ADD KEY uid (uid);
ALTER TABLE mail_boxes ADD KEY username_antispam (username, antispam);
ALTER TABLE mail_boxes ADD KEY username_antivirus (username, antivirus);
ALTER TABLE mail_spamassassin ADD KEY preference (preference);
ALTER TABLE mail_spamassassin ADD KEY username_preference_value (username, preference, value);
ALTER TABLE mail_spamassassin ADD KEY username (username);
ALTER TABLE maps_points ADD KEY location_id (location_id);
ALTER TABLE maps_polygon_points ADD KEY polygon_id (polygon_id);
ALTER TABLE maps_polygons ADD KEY object_id (object_id);
ALTER TABLE maps_polyline_points ADD KEY polyline_id (polyline_id);
ALTER TABLE maps_polylines ADD KEY object_id (object_id);
ALTER TABLE mdelivery_attachments ADD KEY article_attachment_article_id (message_id);
ALTER TABLE msgs_attachments ADD KEY article_attachment_article_id (message_id);
ALTER TABLE msgs_dispatch ADD KEY plan_date (plan_date, state);
ALTER TABLE msgs_message_pb ADD KEY (main_msg);
ALTER TABLE msgs_messages ADD KEY chapter (chapter);
ALTER TABLE msgs_messages ADD KEY date (date);
ALTER TABLE msgs_messages ADD KEY dispatch_id (dispatch_id);
ALTER TABLE msgs_messages ADD KEY state (state);
ALTER TABLE msgs_messages ADD KEY uid (uid);
ALTER TABLE msgs_permits ADD KEY aid (aid);
ALTER TABLE msgs_quick_replys_tags ADD KEY msg_id (msg_id);
ALTER TABLE msgs_reply ADD KEY datetime (datetime);
ALTER TABLE msgs_reply ADD KEY main_msg (main_msg);
ALTER TABLE msgs_team_ticket ADD KEY msgs_id_team_fk (id_team);
ALTER TABLE msgs_unreg_requests ADD KEY datetime (datetime);
ALTER TABLE msgs_unreg_requests ADD KEY location_id (location_id);
ALTER TABLE msgs_unreg_requests ADD KEY state (state);
ALTER TABLE msgs_watch ADD KEY (main_msg);
ALTER TABLE nas_ippools ADD KEY pool_id (pool_id);
ALTER TABLE nas ADD KEY mac (mac);
ALTER TABLE netblock_domain_mask ADD KEY id (id);
ALTER TABLE netblock_domain ADD KEY id (id);
ALTER TABLE netblock_ip ADD KEY id (id);
ALTER TABLE netblock_ports ADD KEY id (id);
ALTER TABLE netblock_ssl ADD KEY id (id);
ALTER TABLE netblock_url ADD KEY id (id);
ALTER TABLE notepad_checklist_rows ADD KEY note_id (note_id);
ALTER TABLE notepad ADD KEY aid (aid);
ALTER TABLE payments_pool ADD KEY payment_id (payment_id);
ALTER TABLE payments_pool DROP KEY date;
ALTER TABLE payments_pool DROP KEY ext_id;
ALTER TABLE payments_pool DROP KEY uid;
ALTER TABLE payments ADD KEY aid (aid);
ALTER TABLE payments ADD KEY date (date);
ALTER TABLE payments ADD KEY ext_id (ext_id);
ALTER TABLE payments ADD KEY uid (uid);
ALTER TABLE paysys_groups_settings ADD KEY paysys_id (paysys_id);
ALTER TABLE ping_actions ADD KEY uid (uid);
ALTER TABLE portal_articles ADD KEY fk_portal_content_portal_menu (portal_menu_id);
ALTER TABLE push_contacts ADD KEY aid (aid);
ALTER TABLE push_contacts ADD KEY uid (uid);
ALTER TABLE referral_log ADD KEY referral_request (referral_request);
ALTER TABLE referral_log ADD KEY uid (uid);
ALTER TABLE referral_main ADD KEY uid (uid);
ALTER TABLE referral_requests ADD KEY referral_uid (referral_uid);
ALTER TABLE s_detail ADD KEY sid (acct_session_id);
ALTER TABLE s_detail ADD KEY uid (uid);
ALTER TABLE sharing_log ADD KEY username (username);
ALTER TABLE sharing_main ADD KEY uid (uid);
ALTER TABLE sharing_priority ADD KEY file (file);
ALTER TABLE shedule ADD KEY aid (aid);
ALTER TABLE shedule ADD KEY date_type_uid (date, type, uid);
ALTER TABLE shedule ADD KEY uid (uid);
ALTER TABLE shedule DROP KEY uniq_action;
ALTER TABLE snmputils_binding ADD KEY uid (uid);
ALTER TABLE sqlcmd_history ADD KEY aid (aid);
ALTER TABLE storage_accountability ADD KEY id (id);
ALTER TABLE storage_accountability ADD KEY storage_incoming_articles_id (storage_incoming_articles_id);
ALTER TABLE storage_articles ADD KEY article_type (article_type);
ALTER TABLE storage_discard ADD KEY storage_incoming_articles_id (storage_incoming_articles_id);
ALTER TABLE storage_incoming_articles ADD KEY article_id (article_id);
ALTER TABLE storage_incoming_articles ADD KEY sn (sn);
ALTER TABLE storage_incoming_articles ADD KEY storage_incoming_id (storage_incoming_id);
ALTER TABLE storage_incoming ADD KEY supplier_id (supplier_id);
ALTER TABLE storage_inner_use ADD KEY storage_incoming_articles_id (storage_incoming_articles_id);
ALTER TABLE storage_inner_use KEY storage_incoming_articles_id (storage_incoming_articles_id);
ALTER TABLE storage_installation ADD KEY aid (aid);
ALTER TABLE storage_installation ADD KEY installed_aid (installed_aid);
ALTER TABLE storage_installation ADD KEY location_id (location_id);
ALTER TABLE storage_installation ADD KEY mac (mac);
ALTER TABLE storage_installation ADD KEY nas_id (nas_id);
ALTER TABLE storage_installation ADD KEY storage_incoming_articles_id (storage_incoming_articles_id);
ALTER TABLE storage_installation ADD KEY uid (uid);
ALTER TABLE storage_invoices_payments ADD KEY invoice_id (invoice_id);
ALTER TABLE storage_reserve ADD KEY storage_incoming_articles_id (storage_incoming_articles_id);
ALTER TABLE storage_sn ADD KEY storage_incoming_articles_id (storage_incoming_articles_id);
ALTER TABLE storage_sn ADD KEY storage_installation_id (storage_installation_id);
ALTER TABLE streets ADD KEY district_id (district_id);
ALTER TABLE tags_responsible ADD KEY aid (aid);
ALTER TABLE tarif_plans ADD KEY name (name, domain_id);
ALTER TABLE tp_geolocation ADD KEY build_id (build_id);
ALTER TABLE tp_geolocation ADD KEY district_id (district_id);
ALTER TABLE tp_geolocation ADD KEY street_id (street_id);
ALTER TABLE tp_geolocation ADD KEY tp_gid (tp_gid);
ALTER TABLE tp_groups_users_groups ADD KEY gid (gid);
ALTER TABLE tp_groups_users_groups ADD KEY tp_gid (tp_gid);
ALTER TABLE tp_nas ADD KEY tp_id (tp_id);
ALTER TABLE traffic_prepaid_sum ADD KEY uid (uid, started, traffic_class);
ALTER TABLE trafic_tarifs ADD KEY interval_id (interval_id);
ALTER TABLE turbo_mode ADD KEY uid (uid, start);
ALTER TABLE ureports_log ADD KEY uid (uid);
ALTER TABLE ureports_main ADD KEY tp_id (tp_id);
ALTER TABLE ureports_spool ADD KEY uid (uid);
ALTER TABLE ureports_tp_reports ADD KEY tp_id (tp_id, report_id);
ALTER TABLE ureports_tp ADD KEY tp_id (tp_id);
ALTER TABLE ureports_user_send_types ADD KEY (type);
ALTER TABLE ureports_user_send_types ADD KEY (uid);
ALTER TABLE users_bruteforce ADD KEY login (login);
ALTER TABLE users_contracts ADD KEY uid (uid);
ALTER TABLE users_development ADD KEY date (date);
ALTER TABLE users_development ADD KEY uid (uid);
ALTER TABLE users_nas ADD KEY uid (uid);
ALTER TABLE users_pi ADD KEY location_id (location_id);
ALTER TABLE users ADD KEY bill_id (bill_id);
ALTER TABLE users ADD KEY company_id (company_id);
ALTER TABLE users ADD KEY deleted (deleted);
ALTER TABLE users ADD KEY gid (gid);
ALTER TABLE users ADD KEY login (id);
ALTER TABLE voip_calls ADD KEY tp_id (tp_id);
ALTER TABLE voip_calls ADD KEY uid (uid);
ALTER TABLE voip_log ADD KEY uid (uid);
ALTER TABLE voip_main ADD KEY tp_id (tp_id);
ALTER TABLE voip_main ADD KEY uid (uid);
ALTER TABLE voip_phone_aliases ADD KEY uid (uid);
ALTER TABLE web_online ADD KEY (aid);

В случае ошибки выполним команду ниже и повторим импорт базы данных:

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

Проверка версии 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/
groupadd --system freerad
useradd --system --no-create-home --home-dir /usr/local/freeradius/ --shell /bin/false --gid freerad --comment "FreeRADIUS daemon" freerad

Создаём системный юнит

Файл для автозапуска - создаем и вставляем в него следующий текст

nano /etc/init.d/radiusd
#!/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

nano /usr/local/freeradius/etc/raddb/radiusd.conf
  prefix = /usr/local/freeradius

Благодаря модулю 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

logrotate

Настроим ротацию логов FreeRADIUS, например:

nano /etc/logrotate.d/radiusd
/var/log/radius.log {
    rotate 2
    weekly
    create
    compress
    missingok
}

cron

Внесем в cron задания:

crontab -e
*/5     *       *       *       *       /usr/abills/libexec/billd -all
10      0       *       *       *       /usr/abills/libexec/periodic daily NO_USERS_WARNINGS=1; /usr/abills/libexec/periodic monthly NO_USERS_WARNINGS=1
1       3       *       *       *       /usr/abills/libexec/periodic backup    

Смотрите также справку:

/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 можно открыть по адресу (стандартный логин — acpka3ha, пароль — acpka3ha):
https://HOST/admin/
Для пользователей:
https://HOST/

freeradius-server-3.2.6.tar.gz

  • Нет меток