Инсталляция системы

Создание базы данных

АСР “Pyzzle.ISP” использует базу данных MySQL версии 5.0. После установки сервера базы данных, необходимо выполнить следующие шаги:
  1. Создать базу данных и пользователя базы данных, который будет использоваться информационной системой. Например, это можно сделать следующими командами mysql:
mysql> create database billing;
Query OK, 1 row affected (0.00 sec)

mysql> grant all on billing.* to billing@localhost identified by "some_password";
Query OK, 0 rows affected (0.00 sec)
  1. Создать конфигурационный файл my.cnf в каталоге с инсталлированной системой:
[client]
port                                            = 3306
socket                                          = /var/run/mysqld/mysqld.sock
default-character-set=utf8
default-storage-engine=innodb

[mysql]
character-sets-dir=/usr/share/mysql/charsets
default-character-set=utf8

Эти параметры будут использованы системой при работе с базой данных, необходимо указать используемую нами кодировку (в примере utf8), путь к unix-socket в случае если база установлена на этом же сервере, а так же то, что нужно использовать таблицы типа InnoDB для поддержки транзакций.

  1. В конфигурационном файле billing.cfg прописать параметры соединения с базой данных, в блоке сервера:
[server_hostname]
db_role_1=master
db_database_1=billing
db_user_1=billing
db_password_1=some_password
db_hostname_1=localhost

db_default=1
  1. Зайти в CLI-интерфейс системы и выполнить команду feature update_sql. Эта команда создаст все необходимые таблицы базы данных и индексы. После этого нужно выполнить команды page reload_info и report reload_info. Эти команды проанализируют программный код системы, и запишут в базу данных список доступных страниц web-интерфейса и поддерживаемые системой отчеты.
Для доступа к базе данных с других серверов системы, необходимо так же дать им доступ к базе данных (как в шаге 1) и прописать параметры соединения в billing.cfg. При этом необходимо убедиться что сервер базы данных слушает TCP порт 3306 на сетевых интерфейсах (а не только на 127.0.0.1) и на файерволе разрешены соединения с IP адреса другого сервера.

Настройка master-slave репликации

Note

Данный этап не обязательно нужно выполнять в ходе инсталляции системы, однако в рабочей эксплуатации системы крайне рекомендуемо иметь работающую master-slave репликацию, т.к. это резко снижает вероятность потери данных (в случае физического отказа основного сервера, на slave сервере будут наиболее актуальные данные), а так же упрощает процесс резервного копирования.

Note

Так как настройка репликации подразумевает остановку работы АСР, то настройку репликации рекомендуется сделать до начала промышленной эксплуатации.

  1. В сети Интернет существует довольно много инструкций и документации по поводу настройки master-slave репликации базы данных, поэтому мы рассмотрим этот вопрос кратко, в виде пошагового списка действий, которые необходимо сделать, более полную информацию можно получить на сайте производителя базы данных.

  2. Установите сервер mysql на дополнительный сервер

  3. Убедитесь что на основном сервере mysql поддерживает ведение двоичных логов. В конфигурационном файле /etc/mysql/my.cfg должна быть опция log-bin, а так же server_id=1

  4. Остановите все запущенные процессы АСР “Pyzzle.ISP”. Заблокируйте базу данных от изменений.

  5. Посмотрите текущий статус основного сервера командой mysql show master status. Нас интересует значения File и Position.

  6. Получите срез базы данных системной командой mysqldump -u root -p billing > billing.dump.sql, или используя CLI команду mysql_backup

  7. Получив срез базы данных повторите просмотр текущего статуса основного сервера. Если значения File и Position не изменились, то полученный нами срез пригоден для настройки репликации. Запомните эти значения. Теперь можно разблокировать базу данных и запустить различные рабочие процессы АСР.

  8. Настройки mysql на дополнительном сервере на режим slave. Для этого в конфигурационном файле укажите server_id=2 и создайте на этом сервере пустую базу данных. В конфигурационном файле укажите replicate-do-db = billing, чтобы реплицировать только данные АСР.

  9. Перепишите файл со срезом базы данных на новый сервер и разверните его на дополнительном сервере командой mysql -p -u root billing < billing.dump.sql

  10. На основном сервере создайте пользователя для работы системы репликации, например так:

    mysql> grant all on repl.* to billing@ip.of.new.server identified by "some_password";
    Query OK, 0 rows affected (0.00 sec)
  11. На дополнительном сервер укажите параметры для доступа к основному серверу:

    mysql> change master to master_host='ip.of.main.server', master_password='some_password', master_log_file='<File>', master_log_pos=<Position>

    Заполнив корректные значения, <File> и <Position> используйте значения полученные в шаге 6.

  12. Запустите репликацию командой start slave;

  13. Проверить то что репликация запустилась можно командой show slave status; Параметры Slave_IO_Running и Slave_SQL_Running должны иметь значение Yes. А параметр Slave_IO_State и Last_error не должны содержать сообщения об ошибке.

  14. Окончательно убедится в работоспособности репликации можно посмотрев последние записи в таблице iptraff_history на обоих серверах, они должны совпадать после внесения очередной порции исходных данных в систему.

Настройка Apache

Для работы web-интерфейса системы нужно настроить web-сервер Аpache™. В целях безопасности необходимо использовать протокол HTTPS, так же рекомендуется использовать сертификаты подписанные специализированной организацией.
Установите Apache™ версии 2.0 с поддержкой SSL из дистрибутива вашей операционной системы. Предполагается что информационная система устанавливается на выделенный сервер, и никаких другие процессы не использую Apache™ в своей работе.
В каталогах связанных с конфигурацией сервера (например /etc/apache2/, зависит от дистрибутива операционной системы) найдите основной конфигурационный файл (httpd.conf, зависит от дистрибутива). Укажите в нем:
  • Apache должен запускаться от имени системного пользователя информационной системы. Для этого замените соответствующие строчки на:

    User billing   # если системный пользователь
    Group billing  # имеет имя billing
  • Включите поддержку FastCGI режима

  • Настройте VirtialHost для работы web-интерфейса информационной системы. Пример для случая если система установлена в каталог /opt/billing/ и используется кодировка UTF-8:

    <VirtualHost>
    
    DocumentRoot "/opt/billing/www/"
    ServerName billing.skynet:443
    ServerAdmin admin@skynet
    ErrorLog "/var/log/billing-httpd-error.log"
    TransferLog "/var/log/billing-httpd-access.log"
    
    FastCGIExternalServer /opt/billing/www/pyzzle.fcgi -socket /opt/billing/run/pyzzle.sock -flush
    
    RewriteEngine On
    RewriteRule ^/(doc.*)$ /pyzzle.fcgi/$1 [QSA,L]
    RewriteRule ^/(.*\.(css|png|jpeg|jpg|doc|txt|js|gif))$ /$1 [QSA,L,PT]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^/(.*)$ /pyzzle.fcgi/$1 [QSA,L]
    
    <Directory /opt/billing/www>
        AllowOverride None
        Order allow,deny
        allow from all
    </Directory>
    
    AddDefaultCharset utf-8
    
    </VirtualHost>

    В приведенном примере, нужно корректно указать IP и DNS имя сервера, пути к лог-файлам Apache. При необходимости нужно настроить параметры SSL сертификата. При необходимости ограничить IP адреса с которых можно получить доступ к web-интерфейсу системы, можно поставить ограничение на уровне web-сервера или сделать это используя возможности брандмауэра операционной системы.

Настройка точного времени на сервере

Для корректной работы информационной системы, требуется чтобы системное время серверов было синхронизировано с системой единого времени. Для этого рекомендуется использовать Network Time Protocol (NTP) и утилиту ntp. Эта утилита входит в дистрибутив операционной системы. Рекомендуется поставить установить сервер точного времени на одном из серверов оператора связи, а все остальные сервера и сетевое оборудование синхронизировать с него.