Как опубликовать папку на веб-сервере Apache 2.4 для передачи бэкапов и исправить ошибки запуска службы

Системный администратор IT и автоматизация бизнеса
← На главную

Организация надежного резервного копирования — одна из важнейших задач при администрировании баз данных СУБД PostgreSQL и сред 1С:Предприятие. Часто возникает необходимость настроить автоматическую передачу файлов бэкапов с удаленного сервера на локальный компьютер администратора. Это гарантирует сохранность данных даже в случае физического выхода из строя дискового массива на основном сервере. При обслуживании сред 1С:Предприятие этот процесс можно автоматизировать с помощью инструмента для архивирования и тестирования баз, работающего по расписанию в тихом режиме.

В этой статье мы подробно разберем, почему при попытке опубликовать папку на веб-сервере Apache 2.4 возникают критические ошибки (такие как остановка службы или ошибка 404 Not Found), как правильно настроить конфигурационный файл httpd.conf, а также рассмотрим более надежные и современные альтернативные методы автоматизации передачи резервных копий.

Проанализируем ситуацию: почему Apache 2.4 выдает ошибку и не запускается

При попытке опубликовать папку для общего доступа через Apache администраторы часто копируют готовые инструкции из интернета, не обращая внимания на версию веб-сервера. Это главная причина возникновения проблем. Рассмотрим подробнее две основные ошибки:

  1. Использование устаревшего синтаксиса авторизации. В старых версиях Apache (до версии 2.2 включительно) для управления доступом использовались директивы Order allow,deny и Allow from all. В версии Apache 2.4 этот синтаксис был полностью изменен. Если вы добавите эти строки в конфигурационный файл современного Apache 2.4, служба веб-сервера просто откажется запускаться, выдавая синтаксическую ошибку в логах.
  2. Отсутствие связывания путей (директивы Alias). Если вы просто укажете настройки папки в блоке <Directory>, но не зададите виртуальный URL-адрес, веб-сервер не поймет, по какому адресу обращаться к этой папке. Именно поэтому при переходе по ссылке localhost/ftpserver браузер возвращает ошибку 404 Not Found.

Для корректной работы в Apache 2.4 управление доступом осуществляется с помощью модуля mod_authz_core и новой директивы Require. Давайте разберем по шагам, как правильно составить конфигурационный файл веб-сервера.

Разберем по шагам: правильная настройка httpd.conf для публикации папки

Чтобы опубликовать локальную папку с бэкапами (например, расположенную по пути C:/Backups/PostgreSQL) на веб-сервере Apache 2.4, нам потребуется отредактировать конфигурационный файл httpd.conf.

Давайте откроем текстовым редактором файл httpd.conf (он обычно находится в папке Apache24/conf/) и добавим в самый конец следующий блок настроек:


Alias /ftpserver "C:/Backups/PostgreSQL"

<Directory "C:/Backups/PostgreSQL">
    Options Indexes FollowSymLinks
    AllowOverride None
    Require all granted
</Directory>

Давайте подробно проанализируем каждую строчку этой настройки, чтобы понимать, как она влияет на безопасность и доступность файлов:

Важное предупреждение о регистре символов: Помните, что веб-сервер Apache чувствителен к регистру символов в URL. Если вы прописали в конфигурационном файле Alias /ftpserver, то обращение к ресурсу как localhost/FTPSERVER или localhost/FtpServer гарантированно приведет к ошибке 404 Not Found. Всегда пишите адрес в браузере точно так же, как он указан в директиве Alias.

После сохранения изменений в файле httpd.conf обязательно перезапустите службу Apache. Если служба успешно запустилась, откройте браузер и перейдите по адресу http://IP_адрес_сервера/ftpserver. Вы должны увидеть список файлов резервных копий, доступных для скачивания. Для автоматического развертывания веб-сервера и управления службой можно использовать PowerShell-скрипт установки Apache HTTP Server на Windows.

Выясним причину: почему Apache — не лучший выбор для бэкапов

Хотя публикация папки через HTTP/HTTPS на веб-сервере Apache решает задачу доступности файлов, этот метод имеет ряд существенных недостатков при организации регулярного автоматического резервного копирования:

Посмотрим на более надежные альтернативные методы организации регулярной передачи бэкапов.

Альтернатива №1: Передача по протоколу SFTP через консольный клиент WinSCP

Вместо того чтобы поднимать веб-сервер Apache на удаленном компьютере, мы можем настроить передачу файлов по безопасному протоколу SFTP. Это активный метод передачи (push), когда удаленный сервер сам отправляет файлы на ваш домашний компьютер по расписанию.

Разберем по шагам, как это реализовать:

  1. На своем домашнем компьютере разверните легковесный SFTP-сервер (например, встроенный компонент Windows "Служба SSH" или бесплатное решение Core FTP). Настройте его на работу на нестандартном порту, если порт 22 закрыт или занят. Поскольку SFTP работает по SSH, он никак не конфликтует с веб-серверами IIS или Apache на 80-м порту.
  2. На удаленном сервере СУБД установите бесплатную утилиту WinSCP, которая поддерживает управление через командную строку.
  3. Создайте текстовый файл сценария передачи, например winscp_script.txt, со следующим содержимым:

option batch abort
option confirm off
open sftp://backup_user:password@home_pc_ip:port/ -hostkey="ssh-ed25519 ..."
put C:\Backups\PostgreSQL\*.* /home/backups/
exit

Затем создайте простой исполняемый пакетный файл upload.bat, который будет запускать этот сценарий:


"C:\Program Files (x86)\WinSCP\WinSCP.exe" /console /script="C:\Scripts\winscp_script.txt" /log="C:\Scripts\winscp.log"

Добавьте запуск файла upload.bat в стандартный Планировщик задач Windows (Task Scheduler) на удаленном сервере на удобное ночное время. Данный способ гарантирует надежное шифрование трафика и автоматическое возобновление передачи при обрыве связи.

Альтернатива №2: Использование VPN и стандартной утилиты Robocopy

Если вы хотите избежать установки сторонних серверов на своем домашнем ПК, отличным решением будет объединение удаленного сервера СУБД и вашего локального компьютера в одну защищенную виртуальную сеть (VPN). Для этого можно использовать современные технологии, такие как WireGuard, OpenVPN или ZeroTier.

После того как устройства окажутся в одной локальной подсети, домашний ПК станет доступен по внутреннему IP-адресу (например, 10.8.0.2). Теперь мы можем выполнить передачу файлов стандартными средствами Windows:

  1. Откройте общий сетевой доступ (создайте сетевую шару Windows) к папке на вашем домашнем ПК, выдав права на запись определенному пользователю.
  2. На удаленном сервере настройте запуск регулярного скрипта копирования с помощью встроенной и невероятно мощной утилиты Robocopy. Пример команды в bat-файле:

robocopy "C:\Backups\PostgreSQL" "\\10.8.0.2\BackupShare" /E /COPY:DAT /XO /R:5 /W:15 /LOG:"C:\Scripts\robocopy.log"

Рассмотрим подробнее ключи утилиты Robocopy, которые мы использовали:

Альтернатива №3: Использование специализированной программы Effector Saver

Если администрирование через конфигурационные файлы и bat-скрипты кажется вам слишком сложным и трудоемким процессом, отличным выбором станет использование специализированного программного обеспечения. Для резервного копирования систем 1С и СУБД PostgreSQL существует отличное отечественное решение — Effector Saver (доступна полнофункциональная бесплатная редакция).

Проанализируем возможности, которые предоставляет эта утилита:

Важные нюансы резервного копирования СУБД PostgreSQL и сред 1С

При настройке регламентного копирования баз данных критически важно разделять методы создания бэкапов, так как они по-разному влияют на работу пользователей:

1. Резервное копирование средствами PostgreSQL (утилита pg_dump). Этот метод является предпочтительным и наиболее надежным. Утилита pg_dump создает транзакционно-согласованную копию базы данных в реальном времени. При этом нет необходимости отключать сеансы пользователей и регламентные задания в 1С. Работа предприятия не останавливается, хотя во время бэкапа может незначительно снизиться общая производительность дисковой подсистемы сервера.

2. Резервное копирование средствами 1С (выгрузка информационной базы в файл .dt). Данный метод требует обязательного монопольного доступа к базе данных. Чтобы запустить выгрузку, вам придется программно отключить всех активных пользователей и приостановить выполнение всех регламентных заданий на сервере 1С. Если этого не сделать, попытка выгрузки файла завершится аварийной ошибкой. Для обхода этого ограничения можно применить скрипты выгрузки базы в dt без закрытия сессий пользователей.

Именно поэтому для регулярного автоматического создания бэкапов рекомендуется использовать средства СУБД (PostgreSQL), а веб-сервер Apache или специализированные утилиты типа Effector Saver применять исключительно для последующей безопасной транспортировки готовых файлов на локальные хранилища.

← На главную