Резервное копирование Bacula-director+Webacula на Ubuntu 12.04

Продолжая обслуживать Институт Искусств Художественного Моделирование и Дизайна им. Сальвадора Дали встал вопрос о резервировании информации имеющей высокую степень важности — это и бухгалтерия, и базы студентов, и наработки преподавателей. Было принято решение поднять сервер на базе ОС Ubuntu 12.04 и установить Bacula, а для облегчение эксплуатации добавить в связку вэб-интерфейс Webacula.
Установку системы опустим.

Начинаем с обновления индекса локальных пакетов:

sudo apt-get update

далее устанавливаем bacula и некоторое количество зависимостей:

apt-get install bacula

installbacula
Для работы bacula потребуется одна из БД:
- MySQL
- SQLite
- PostgreSQL
По дефолту устанавливаются пакеты для работы MySQL и если понадобится использовать PostgreSQL или SQLite, то нужно будет дополнительно установить: bacula-director-sqlite3, bacula-director-pgsql

Теперь переходим в каталог /etc/bacula где находятся файлы конфигурации.

Теперь установим Webacula веб-интерфейс.
Установим все, что понадобится для веб-панели:

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:

 wget http://netcologne.dl.sourceforge.net/project/webacula/webacula/7.0.0/webacula-7.0.0.tar.gz

и распаковываем в свежо созданную директорию /var/www/webacula:

 tar -xvf webacula-7.0.0.tar.gz -C /var/www/webacula/

и конечно же права на папку:

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

Теперь с помощью скрипта проверяем наличие необходимых компонентов:

php5 /var/www/webacula/install/check_system_requirements.php
Webacula check System Requirements...

sh: 1: psql: not found
sh: 1: sqlite3: not found
Current MySQL version = 5.5.40  OK

Current PHP version = 5.3.10-1ubuntu3.15        OK

php pdo installed.      OK
php gd installed.       OK
php xml installed.      OK
php dom installed.      OK

php pdo_mysql installed.        OK
Warning. PHP extension pdo_pgsql not installed.
Warning. PHP extension pdo_sqlite not installed.
php-dom, php-xml installed.     OK

Для настройки параметров подключения к базе данных используется конфигурационный файл 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

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

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

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

nano /etc/apache2/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>

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

 a2ensite webacula

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

htpasswd -c /etc/apache2/webacula.users 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

Перезапускаем apache:

service apache2 restart

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

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

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

#bacula settings имя базы данных
db_name=
#for Sqlite only это только для тех кто юзает Sqlite
db_name_sqlite="/opt/bacula/working/bacula.db"
#имя пользователя БД
db_user="bacula"
#пароль пользователя к БД
db_pwd="bacula"

#Webacula web interace settings
#Built-in superuser login is 'root'
#Use ./password-to-hash.php <password>
#and insert the resulting hash below
#Используя скрипт ./password-to-hash.php получаем хэш пароля для рута 
#(пример ./password-to-hash.php qwerty получаем вывод $P$BRaNe33m8mq32R1LlQur6/y.Kd5Jzw/ 
#и вставляем его в webacula_root_pwd
webacula_root_pwd=""

Смело выполняем:

./10_make_tables.sh && ./20_acl_make_tables

Не забываем установить Zend-framework:

apt-get install zend-framework

копируем из /usr/share/php/libzend-framework-php директорию Zend в /var/www/webacula/lybrary/

Перезапускаем Bacula и заходим по адресу http://ip_address/webacula.