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

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

 На ШБО архівні файли (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-адреса сервера баз даних та архівування. 

 

 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> 

 

 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.