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

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

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

<span lang="UK">Імена архівних файлів виражені у форматі mlog-XYZ.zip, де:</span>

<span lang="UK">- </span><span lang="UK">X – часовий покажчик (час UTC у форматі YYYYMMDDHHmmss) першого запису журналу повідомлень,</span>

<span lang="UK">- </span><span lang="UK">Y – позначка часу останнього запису журналу повідомлень (записи обробляються в хронологічному порядку),</span>

<span lang="UK">- </span><span lang="UK">Z – довільна буквено-цифрова послідовність довжиною 10 символів.</span>

<span lang="UK">Прикладом назви архівного файлу є:</span>

<span lang="UK">mlog-20150504152559-20150504152559-a7JS05XAJC.zip</span>

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

<span lang="UK">Для налаштування перенесення архівних файлів на сервер баз даних та архівування необхідно:</span>

<span lang="UK">1. Увійти до командної консолі ШБО.</span>

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

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

<span lang="UK">3. Додати наступний рядок до файлу:</span>

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

<span lang="UK">де </span>**<span lang="RU">&lt;</span><span lang="UK">IP\_адреса\_сервера\_баз\_даних\_та\_архівування</span>**<span lang="RU">**&gt;** </span><span lang="UK">-</span> <span lang="UK">відповідна IP-адреса сервера баз даних та архівування.</span>

[![Picture8_9.png](https://docs.trembita.gov.ua/uploads/images/gallery/2024-05/scaled-1680-/5n5HTSVIBa1KFbfz-picture8-9.png)](https://docs.trembita.gov.ua/uploads/images/gallery/2024-05/5n5HTSVIBa1KFbfz-picture8-9.png)

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

<span lang="RU">5. </span><span lang="UK">Увійти до командної консолі серверу баз даних та архівування</span>

<span lang="UK">6. Послідовно виконати наступні команди:</span>

```
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
```

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

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

<span lang="UK">8. Додати наступний блок конфігурації перед тегом &lt;/VritualHost&gt;:</span>

```
        ScriptAlias /cgi-bin/ /var/www/perl/
        <Directory /var/www/perl/>
                Options ExecCGI
                AddHandler cgi-script cgi pl
        </Directory>
```

<span lang="UK">[![Picture8_10.png](https://docs.trembita.gov.ua/uploads/images/gallery/2024-05/scaled-1680-/eJqs9yUaTMpD9LYH-picture8-10.png)](https://docs.trembita.gov.ua/uploads/images/gallery/2024-05/eJqs9yUaTMpD9LYH-picture8-10.png)</span>

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

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

<span lang="UK">10. Додати наступні рядки:</span>

```
#!/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;
```

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

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

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

<span lang="UK">13. Перезавантажити службу apache2 за допомогою наступної команди:</span>

```
sudo service apache2 restart
```

<p class="callout info"><span lang="UK"> </span>**<span lang="UK">Примітка.</span>**<span lang="UK"> Архівний файл успішно перенесений, коли сервер баз даних та архівування повертає код статусу HTTP 200.</span></p>