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-адреса сервера баз даних та архівування.
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.