Веб-интерфейс интерфейс к Bacula — Webacula

21 Апр
2010

Статья для журнала журнала Системный администратор
Bacula –популярная Open Source система резервного копирования, использование веб-интерфейса Webacula, позволит сделать ее использование на порядок удобнее.

Bacula достаточно мощная утилита резервного копирования и восстановления данных, тем не менее, процесс установки, повседневного управления и получения отчетов недостаточно удобен и нагляден. Именно поэтому на сегодняшний день написан не один десяток графических интерфейсов к Bacula, разной степени готовности и возможностей.

Одним из первых и до сих пор наиболее функциональных является Webacula (Web + Bacula), о настройке которого и поговорим дальше.

Возможности Webacula

Webacula является типичным веб-приложением, требующим для своей работы стандартную связку LAMP (Linux+Apache+MySQL+PHP). Построен при помощи Zend framework. Используя веб-браузер администратор может удаленно запустить задание, восстановить файлы по идентификатору задания, из самой последней копии клиента, данные перед указанным временем, вывести запланированные и выполненные задания (все и в 24 часовом промежутке), задания выполненные с ошибками (за 7 дней), вывод временной диаграммы заданий и состояния хранилищ, монтирование и размонтирование хранилищ, состояние томов. Возможно транслирование результатов в RSS ленту. Кроме этого доступен журнал (хранится в базе данных webacula), в который администратор самостоятельно записывает необходимую ему информацию (описание задания, сбои и причины и так далее). Такие записи могут содержать гиперссылки на задания, для быстрого перехода.
Интерфейс Webacula переведен на 6 языков, в списке есть и русский. Основные номера версий совпадают с Bacula, текущей на момент написания статьи является 3.1. Распространяется на условиях GPLv3.

Установка Webacula в Ubuntu

В статье буду описывать установку Webacula на Ubuntu 8.04 LTS, хотя для других дистрибутивов общий принцип сохраняется. Для Webacula нам потребуется: веб-сервер с модулем mod_rewrite и поддержкой PHP, Zend Framework версии 1.8.3 (требует PHP 5.2.4 или выше) с установленным расширением PDO, пакет php-gd. В качестве СУБД можно использовать MySQL или PostgreSQL (поддержка появилась в текущей версии Webacula). И собственно Bacula. Разработчики рекомендуют использовать версию 3.х, но в репозитарии Ubuntu 8.04 находится более ранняя версия Bacula 2.4.2, с которой Webacula отлично срабатывается.

Устанавливаем пакеты для MySQL:

$ sudo apt-get install mysql-server mysql-client

В процессе установки должен появиться запрос на ввод пароля администратора базы данных, иначе устанавливаем его самостоятельно:

$ sudo mysqladmin -u root password пароль

По умолчанию Bacula устанавливается с поддержкой MySQL для директора (Director) и сервера хранения (Storage Daemon, SD).

$ sudo apt-get install bacula 
 
НОВЫЕ пакеты, которые будут установлены:
 bacula bacula-client bacula-director-mysql bacula-sd-mysql bacula-server

По ходу инсталляции будет задан запрос на установку имени учетной записи (по умолчанию bacula) и пароля. Соответствующая база данных создается, но в конфигурационный файл директора учетные данные пользователя не заносятся. Поэтому редактируем bacula-dir.conf.

$ sudo nano /etc/bacula/bacula-dir.conf 
Catalog {
 Name = MyCatalog
 dbname = "bacula"; dbuser = "bacula"; dbpassword = "baculapass"
}
# для вывода сообщений выводимых при выполнении заданий

Для показа сообщений, которые выводятся во время выполнения заданий измените блок

Messages: 
Messages {
Name = Standard
...
catalog = all, !skipped, !saved
}

Настройку остальных параметров работы Bacula рассматривать не будем. Перезапускаем демон директора.

$ sudo /etc/init.d/bacula-director restart

Утилита “netstat” должна показать активность трех демонов:

$ netstat -l | grep bacula
tcp 0 0 comp.serv:bacula-dir *:* LISTEN
tcp 0 0 comp.serv:bacula-fd *:* LISTEN
tcp 0 0 comp.serv:bacula-sd *:* LISTEN

C Bacula закончили.

Готовим среду для вебпанели

Вебсервер Apache устанавливается стандартным образом.

$ sudo apt-get install apache2 php5 libapache2-mod-php5 php5-mysql php5-gd

Активируем модуль PHP и mod_rewrite.

$ sudo a2enmod php5
This module already enabled.
$ sudo a2enmod rewrite
Module rewrite installed; run /etc/init.d/apache2 force-reload to enable.

Создаем рабочий каталог для Webacula и копируем в него файлы:

$ sudo mkdir /var/www/webacula
$ wget -c http://dfn.dl.sourceforge.net/project/webacula/webacula/3.1/webacula-3.1.rc1.tar.gz

После загрузки распаковываем архив в /var/www/webacula

Я использовал svn версию Webacula.

$ sudo svn co http://webacula.svn.sourceforge.net/svnroot/webacula/trunk/webacula /var/www/webacula

В Ubuntu Apache работает от имени www-data, устанавливаем владельца на файлы:

$ sudo chown -R www-data:www-data /var/www/webacula

В последней версии Webacula появился скрипт для проверки наличия необходимых компонентов.

$ php5 /var/www/webacula/install/check_system_requirements.php
 
Check System Requirements...
Current MySQL version = 5.0.51 OK
Current PHP version = 5.2.4-2ubuntu5.6 OK
php pdo installed. OK
php gd installed. OK
php xml installed. OK
php dom installed. OK
php pdo_mysql installed. OK
Warning. php pdo_pgsql extension not installed.
php-dom, php-xml installed. OK

Проверка наличия необходимых компонентов
Разработчики уже включили в комплект поставки Zend (находится в каталоге library), поэтому отдельно его скачивать нет необходимости (в репозитарии Ubuntu текущая версия к тому же сильно запаздывает 1.5.1)

$ cd /var/www/webacula/library
$ sudo tar xzvf Zend-1.8.3.tar.gz

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

$ sudo ./runme

Для настройки параметров подключения к базе данных используется конфигурационный файл config.ini:

$ sudo nano /var/www/webacula/application/config.ini
# указываем учетную запись для подключения к базе bacula
[general]
db.adapter = PDO_MYSQL
; db.adapter = PDO_PGSQL
db.config.host = localhost
db.config.username = bacula
db.config.password = baculapass
db.config.dbname = bacula
 
; часовой пояс http://www.php.net/timezones
def.timezone = "Europe/Moscow"
 
; Webacula попытается определить язык автоматически, иначе снимаем комментарий
; locale = "ru"
 
; каталог для временных файлов, директор должен иметь права на чтение
tmpdir = "/tmp"
 
; Webacula, а если точнее, то веб-сервер, должен иметь возможность запуска консоли
; управления bconsole. Предусмотрено два варианта реализации, через sudo и 
; установкой прав. Подробности INSTALL, мы используем второй вариант
; bacula.sudo = "/usr/bin/sudo"
; проверяем пути к файлам
bacula.bconsole = "/usr/bin/bconsole"
bacula.bconsolecmd = "-n -c /etc/bacula/bconsole.conf"
 
; подключение к базе webacula
[webacula]
db.adapter = PDO_MYSQL
; db.adapter = PDO_PGSQL
db.config.host = localhost
db.config.username = wbuser
db.config.password = wbpass
db.config.dbname = webacula
email.to_admin = root@localhost
email.from = webacula@localhost

При установке bacula создается одноименная системная группа, проверяем ее наличие и добавляем в нее учетную запись от которой работает. веб-сервер.

$ sudo usermod -aG bacula www-data
$ cat /etc/group | grep bacula
bacula:x:125:www-data

Устанавливаем необходимые права на файлы:

$ sudo chown root:bacula /usr/bin/bconsole
$ sudo chmod 750 /usr/bin/bconsole
$ sudo chown root:bacula /etc/bacula/bconsole.conf
$ sudo chmod 640 /etc/bacula/bconsole.conf

Конфигурационный файл веб-сервера:

$ sudo nano /etc/apache/sites-available/webacula
 
Alias "/webacula" "/var/www/webacula/html"
<directory "/var/www/webacula/html">
 	Options Indexes FollowSymLinks
 	AllowOverride All
 	Order deny,allow
 	Allow from 127.0.0.1
 	Allow from 192.168.1.0/255.255.255.0
 	AuthType Basic
 	AuthName "Webacula"
 	AuthUserFile	/etc/apache2/webacula.users
 	Require valid-user
</directory>

Активируем сайт.

 
$ sudo a2ensite webacula
Site webacula installed; run /etc/init.d/apache2 reload to enable.

Пароль для доступа к интерфейсу:

$ sudo htpasswd -c /etc/apache2/webacula.users admin
New password:
Re-type new password:
Adding password for user admin

В корневом каталоге сайта по умолчанию создается .htaccess такого содержания:

$ cat /var/www/webacula/html/.htaccess
 
php_flag magic_quotes_gpc off
php_flag register_globals off
RewriteEngine On
RewriteBase /webacula
RewriteRule !\.(js|ico|gif|jpg|png|css)$ index.php

Разработчики рекомендуют увеличить значения “memory_limit” и “max_execution_time” в /etc/php5/apache/php.ini:

memory_limit = 32M
max_execution_time = 300

При больших нагрузках устанавливаем еще большие значения. После, перезапускаем веб-сервер:

$ sudo /etc/init.d/apache2 reload

Проверить, загружен ли mod_rewrite, можно двумя способами. При помощи “apachectl”:

$ sudo apachectl -t -D DUMP_MODULES 2>&1 | grep rewrite
rewrite_module (shared)

Также для проверки работы разработчики предлагают тестовую веб-страницу, просто набираем ссылку http://localhost/webacula/test_mod_rewrite.

Теперь нужно создать учетную запись пользователя MySQL для работы Webacula и установить необходимые права:

$ mysql -u root -p 
mysql> CREATE USER 'wbuser'@'localhost' IDENTIFIED BY 'wbpass';
mysql> GRANT ALL PRIVILEGES ON *.* TO 'webacula'@'localhost' WITH GRANT OPTION;
mysql> FLUSH PRIVILEGES;
mysql> quit

Для создания базы данных и таблиц, разработчики предлагают скрипты, которые находятся в подкаталоге install. Перед их запуском следует указать в webacula_mysql_create_database.sh, учетные данные пользователя для подключения к СУБД (для PostgreSQL другие файлы):

$ sudo nano /var/www/webacula/install/webacula_mysql_create_database.sh
db_user="wbuser"
db_password="wbpass"
host="localhost"

Теперь выполняем два скрипта — webacula_mysql_create_database.sh и webacula_mysql_make_tables.sh.

Перезапускаем Bacula и заходим по адресу http://localhost/webacula. Интерфейс достаточно прост, поэтому разобраться с дальнейшей работой с Webacula все очень просто. В первом окне показывается список запланированных и выполненных заданий, а также заданий выполненных с ошибками.
Веб-интерфейс Webacula
Остальную информацию можно получить перемещаясь по меню расположенном в верхней части окна.
Для удаления временных файлов в каталоге “tmpdir” следует использовать скрипт “wb_clean_tmp.sh” запускаемый при помощи cron.

В итоге мы получили простую в использовании и наглядную систему резервного копирования и восстановления информации.

6 Комментариев к Веб-интерфейс интерфейс к Bacula — Webacula

Аватар

Dmitry Paskal

Май 24th, 2010 | 12:44

Огромное спасибо за статью!
Пара замечаний:
«По ходу инсталляции будет задан запрос на установку имени учетной записи (по умолчанию bacula) и пароля. Соответствующая база данных создается, но в конфигурационный файл директора учетные данные пользователя не заносятся. Поэтому редактируем bacula-dir.conf.»
Уже неактуально, данные пользователя исправно заносятся.
«Для создания базы данных и таблиц, разработчики предлагают скрипты, которые находятся в подкаталоге install. Перед их запуском следует указать в webacula_mysql_create_database.sh, учетные данные пользователя для подключения к СУБД (для PostgreSQL другие файлы):»
Если у вас есть пароль на root’а mysql — требуется поменять строку
if mysql $* -f <<END-OF-DATA
на
if mysql -u root -p $* -f <&1 | grep rewrite
то есть appache2ctl вместо apahectl.
Включить модуль достаточно просто, вот пример: http://dig.org.ua/2008/01/26/mod-rewrite-on-apache2-in-ubuntu/

В целом, вам очень поможет встроенный документ помощи:
less /var/www/wacula/docs/INSTALL.ru

Аватар

Dmitry Paskal

Май 24th, 2010 | 12:46

Потерялись строки:
Далее — там, где в путях есть папка «apache» — следует читать как «apache2″, проверка наличия mod_rewrite:
sudo apache2ctl -t -D DUMP_MODULES 2>&1 | grep rewrite
то есть appache2ctl вместо apahectl.

Аватар

Енот

Июнь 17th, 2010 | 14:36

Пытаюсь настроить веб-интерфейс к bacula по вашей статье http://www.tux.in.ua/articles/1935
Все так делаю. Только когда стартую bacula-dir, пишет:
[root@comp ~]# service bacula-dir start
Starting bacula-dir service: bacula-dir: dird.c:944 Could not open Catalog «MyCatalog», database «bacula».
bacula-dir: dird.c:949 mysql.c:195 Unable to connect to MySQL server.
Database=bacula User=bacula
MySQL connect failed either server not running or your authorization is incorrect.
17-Jun 15:21 bacula-dir ERROR TERMINATION
Please correct configuration file: /etc/bacula/bacula-dir.conf
[FAILED]
[root@comp ~]#

Какой правильный синтаксис файла bacula-dir.conf
dbname = «bacula»; dbuser = «bacula»; dbpassword = «baculapass»
Ковычки нужны?
И почеиу MySQL connect failed either server not running or your authorization is incorrect. ?

А еще делаю
netstat -l | grep bacula
и ничего…..
В фаерволе правила прописала на открытие портов и iptables не стартует
[root@comp ~]# service iptables startiptables firewall is not configured [PASSED]
[root@comp ~]#
[root@comp ~]# service iptables status
Table: filter
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT tcp — anywhere localhost.localdomain tcp spts:9101:9103
ACCEPT tcp — anywhere localhost.localdomain tcp dpts:9101:9103

Chain FORWARD (policy ACCEPT)
target prot opt source destination

Chain OUTPUT (policy ACCEPT)
target prot opt source destination
ACCEPT tcp — anywhere localhost.localdomain tcp dpts:9101:9103
ACCEPT tcp — anywhere localhost.localdomain tcp spts:9101:9103

[root@comp ~]#

Подскажите как надо настроить bacula-dir.conf правильно, если я хочу записывать с window-ой машины backup. При этом директор стоит на машине с linux. Обе находятся в локальной сети за шлюзом. Запись будет производиться на DVD.
И что означает iptables firewall is not configured??

Заранее спасибо!

Аватар

Енот

Июнь 17th, 2010 | 14:45

А вообще спасибо за статью! С учетом поправок, котрые в комментариях)

Аватар

Андрей

Октябрь 29th, 2010 | 16:41

Три раза устанавливал по этой статье в итоге заходит только через http://192.168.1.1/webacula/html/ а не http://192.168.1.1/webacula/ , и кроме как панели больше не в какие вкладки не входит пишет Not Found

The requested URL /webacula/html/director/statusdir was not found on this server.
в логах пишет:File does not exist: /var/www/webacula/html/director, referer: http://192.168.1.1/webacula/html/
Что может быть такое помогите плизззз??? что не так??

Аватар

переюзверъ

Ноябрь 23rd, 2010 | 13:17

Андрей,
возможно модуль mod_rewrite не подключен
или попробуй поставить в localhost или на отдельный домен

Комментировать

Наверх