Перейти до змісту

8.3 Налаштування перенесення архівних файлів на сервер баз даних та архівування

Для забезпечення довгострокового збереження архівів повідомлень, прийнятих/переданих через ШБО, необхідно налаштувати процедуру архівування журналу повідомлень до сервера баз даних та архівування. Налаштування виконується Адміністратором локальних компонентів (системним адміністратором).

На ШБО архівні файли (ZIP-контейнери) знаходяться у директорії, що вказана параметром конфігурації archive-path.

Імена архівних файлів виражені у форматі mlog-XYZ.zip, де:

·                X - часовий покажчик (час UTC у форматі YYYYMMDDHHmmss) першого запису журналу повідомлень,

·                Y - позначка часу останнього запису журналу повідомлень (записи обробляються в хронологічному порядку),

·                Z - довільна буквено-цифрова послідовність довжиною 10 символів.

Прикладом назви архівного файлу є:

mlog-20150504152559-20150504152559-a7JS05XAJC.zip

Інсталяційний пакет ШБО містить допоміжний скрипт /usr/share/uxp/scripts/archive-http-transporter.sh, призначений для передачі архівних файлів. Цей скрипт використовує протокол HTTP/HTTPS (метод POST, ім’я форми - файл) для передачі архівних файлів з ШБО на сервер баз даних та архівування.

Для налаштування перенесення архівних файлів на сервер баз даних та архівування необхідно:

1. Увійти до командної консолі ШБО

2. Відкрити на редагування файл /etc/uxp/conf.d/local.ini за допомогою наступної команди:

sudo nano /etc/uxp/conf.d/local.ini

3. Додати наступний рядок до файлу:

archive-transfer-command=/usr/share/uxp/scripts/archive-http-transporter.sh -r http://IP_адреса_сервера_баз_даних_та_архівування/cgi-bin/upload.pl

де <IP_адреса_сервера_баз_даних_та_архівування> - відповідна IP-адреса сервера баз даних та архівування.

 Picture8_9.png

4. Закрити редактор, натиснувши комбінацію клавіш «Ctrl+X», буде показано повідомлення про підтвердження на збереження змін - необхідно натиснути «Y», а потім «Enter» для збереження.

5. Увійти до командної консолі серверу баз даних та архівування

6. Послідовно виконати наступні команди:

 

sudo apt install apache2 libapache2-mod-perl2 libcgi-session-perl

sudo systemctl restart apache2

sudo a2enmod cgi

sudo mkdir /var/log/uxp_message_log_archive

sudo chown root:www-data /var/log/uxp_message_log_archive

sudo chmod 570 /var/log/uxp_message_log_archive

sudo mkdir /var/www/perl

7. Відкрити на редагування файл /etc/apache2/sites-enabled/000-default.conf за допомогою наступної команди:

sudo nano /etc/apache2/sites-enabled/000-default.conf

8. Додати наступний блок конфігурації перед тегом </VritualHost>:

        ScriptAlias /cgi-bin/ /var/www/perl/

        <Directory /var/www/perl/>

                Options ExecCGI

                AddHandler cgi-script cgi pl

        </Directory>

 Picture8_10.png

9 Створити та відкрити на редагування файл /var/www/perl/upload.pl за допомогою наступної команди:

sudo nano /var/www/perl/upload.pl

10. Додати наступні рядки:

#!/usr/bin/perl -w

 

use CGI;

use Fcntl;

use strict;

 

use constant FILE_FIELD => "file";

 

my $q = new CGI;

 

# Error handling.

sub err {

    # HTTP-header with error status.

    print $q->header(-status => "500 @_");

    die @_;

}

 

# Directory where to archive posted files.

my $FILESTORE = '/var/log/uxp_message_log_archive';

 

# Create archive directory if not exists.

(! -d $FILESTORE) &&

    (mkdir $FILESTORE || err("Cannot create directory $FILESTORE"));

 

# Get file from request.

my $filename = $q->param(FILE_FIELD) || err("Invalid query: missing file name");

my $filehandle = $q->upload(FILE_FIELD);

 

# Write file from request.

my $buffer;

my $bytesread;

 

sysopen (OUT, "$FILESTORE/$filename", O_WRONLY | O_EXCL | O_CREAT) ||

        err("Cannot open file '$FILESTORE/$filename': $!");

while ((defined($bytesread = read($filehandle, $buffer, 0xffff)) ||

        err("Cannot read posted file: $!")) && $bytesread) {

    print OUT $buffer;

}

close OUT;

 

unlink($filehandle);

close($filehandle);

 

# HTTP header with OK status.

print $q->header();

 

exit 0;

11. Закрити редактор, натиснувши комбінацію клавіш «Ctrl+X», далі буде показано повідомлення про підтвердження на збереження змін - необхідно натиснути «Y», а потім «Enter» для збереження.

12. Налаштувати права доступу до файлу /var/www/perl/upload.pl за допомогою наступної команди:

sudo chmod +x /var/www/perl/upload.pl

13. Перезавантажити службу apache2 за допомогою наступної команди:

sudo service apache2 restart

 

Примітка. Архівний файл успішно перенесений, коли сервер баз даних та архівування повертає код статусу HTTP 200.