Установим на чистую систему 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/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 |
Для автоматического редиректа правим основной файл апача. Приводим его к такому виду
<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 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
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 |
Создаём системный юнит
Файл для автозапуска - создаем и вставляем в него следующий текст
#!/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 |
Благодаря модулю 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 |
logrotate
Настроим ротацию логов FreeRADIUS, например:
/var/log/radius.log {
rotate 2
weekly
create
compress
missingok
} |
cron
Внесем в cron задания:
*/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/
