Instalação do Webacula com MySQL no Debian Wheezy

O Webacula é uma interface web para gerenciamento do bacula. Na minha opinião uma das melhores para tal finalidade.

Recursos:

  • ACLs para Bacula e Webacula implementadas. As ACLs são armazenadas no banco de dados bacula nas tableas de uso do Webacula.
  • Suporte completo aos seguinte banco de dados: MySQL, PostgreSQL e Sqlite.
  • Rodar jobs
  • Restaurar todos os arquivos ou arquivos selecionados de um jobid
  • Restaurar o backup mais recente para um cliente
  • Restaurar backup para um cliente antes de um período específico.
  • Visualização de uma linha do tempo para os Jobs
  • Montar e desmonstar Storeages
  • Visualização quais jobs foram executados com erros.
  • Visualização da condição dos Volumes
  • Visualização dos jobs agendados para as próximas 24 horas.
  • Visualização de todos os jobs que estão rodando.
  • Visualização dos jobs que foram executados nas últimas 24 horas.
  • Pesquisa de jobs por diversas condições
  • Interface (Ajax) para Bacula Console
  • Informações detalhadas sobre Pools, Volumes, Storages e Clientes.
  • Logbook. Logbook - É um relatório eletronico simples dos backups. Registros no logbook são inseridos, modificacos e deletados manualmente pelo usuário. Registros podem contem links (geralmente links web nos quais temos a possibilidade de clicar) para abrir jobs do Bacula ou links para outros registros do logbook.
  • RSS feed
  • Suporte multi-idiomas - padrão arquivos gettext (*.mo). Idiomas suportados: Inglês, English, Tcheco, Francês, Alemão, Italiano, Português Brasilieiro, Russo e Espanhol.
  • Para web designers: Agora é muito facil criar novos skins.

Alguns telas.

Tela de Login

Página principal.

Restauração de Job - part 1

Restauração de Job - part 2

Linha do tempo.

Logbook

Painel de Administração

Administração de Usuários.

Instalação e configuração do Webacula

Vamos a instalação das dependências para o Webacula

aptitude install php5 php5-mcrypt php5-gd php5-mysql php5-cli apache2 sudo -y

Agora vamos criar um diretório para armazenar o webacula

mkdir /var/www/webacula

Vamos acessar o diretório do webacula

cd /var/www/webacula

Agora vamos obter o código fonte, favor usar o código que eu estou especificando pois ja inseri o zend e fiz alguns ajustes nos fontes.

wget -c http://wiki.douglasqsantos.com.br/Downloads/bacula/webacula-5.5.1.tar.gz

Agora vamos extrair os fontes

tar -xvf webacula-5.5.1.tar.gz

Agora vamos mover o conteúdo para o diretório corrente.

mv webacula-5.5.1/* .

Agora vamos remover o diretório que nao precisamos mais.

rm -rf webacula-5.5.1

Agora vamos ajustar as permissões do diretório do bacula e de alguns arquivos.

chmod 770 /etc/bacula
chown root:bacula /sbin/bconsole
chmod u=rwx,g=rx,o=  /sbin/bconsole
chown root:bacula /etc/bacula/bconsole.conf 
chmod u=rw,g=r,o= /etc/bacula/bconsole.conf

Agora vamos inserir o apache no grupo do bacula

usermod -aG bacula www-data

Agora vamos ajustar o sudo para o Webacula

echo "www-data ALL=NOPASSWD: /sbin/bconsole" >> /etc/sudoers
echo "www-data ALL=NOPASSWD: /sbin/bacula-dir" >> /etc/sudoers

Agora já podemos testar o acesso do apache ao bconsole utilizando sudo

su -l www-data -s /bin/sh -c "/usr/bin/sudo /sbin/bconsole -n -c /etc/bacula/bconsole.conf"
Connecting to Director 127.0.0.1:9101
1000 OK: 1 bacula-dir Version: 7.0.5 (28 July 2014)
Enter a period to cancel a command.
*quit

Agora precisamos ajustar a configuração do php

vim /etc/php5/apache2/php.ini
[...]
max_execution_time = 3600
[...]
date.timezone = "America/Sao_Paulo"

Agora vamos ajustar a configuração do Webacula para conectar no banco de dados.

vim /var/www/webacula/application/config.ini
[...]
db.adapter = PDO_MYSQL
db.config.host = localhost
db.config.username = usuario_do_banco_de_dados_bacula
db.config.password = "SENHA_DO_BACULA"
db.config.dbname = banco_de_dados_do_bacula
[...]
def.timezone = "America/Sao_Paulo"
[...]
bacula.sudo = "/usr/bin/sudo"
bacula.bconsole = "/sbin/bconsole"
bacula.bconsolecmd = "-n -c /etc/bacula/bconsole.conf"
[...]

Agora precisamos ajustar o arquivo que vai conter as variáveis para a importação das tabelas para o webacula.

vim /var/www/webacula/install/db.conf
# See also application/config.ini

# bacula settings
db_name="banco_de_dados_do_bacula"
db_user="usuario_do_banco_de_dados_bacula"

# CHANGE_THIS
db_pwd="senha_do_bacula"

# Webacula web interface settings
#
# Built-in superuser login is 'root'
#
# CHANGE_THIS
webacula_root_pwd="senha_para_a_interface_web"

Agora vamos importar as novas tabelas para o banco de dados.

cd /var/www/webacula/install/MySql/
./10_make_tables.sh
./20_acl_make_tables.sh

Agora vamos criar um virtualhost para o webacula

vim /etc/apache2/sites-available/webacula
<VirtualHost *:80>
      ServerAdmin webmaster@localhost
      ServerName webacula.douglasqsantos.com.br
      DocumentRoot /var/www/webacula/html
        
    <Directory /var/www/webacula/html>
       Options -Indexes +FollowSymLinks
       AllowOverride All
       Order allow,deny
       Allow from all
    </Directory>

    <Directory /var/www/webacula/docs>
       Order deny,allow
       Deny from all
    </Directory>

    <Directory /var/www/webacula/application>
       Order deny,allow
       Deny from all
    </Directory>

    <Directory /var/www/webacula/languages>
       Order deny,allow
       Deny from all
    </Directory>

    <Directory /var/www/webacula/library>
       Order deny,allow
       Deny from all
    </Directory>

    <Directory /var/www/webacula/install>
       Order deny,allow
       Deny from all
    </Directory>

    <Directory /var/www/webacula/tests>
       Order deny,allow
       Deny from all
    </Directory>

    <Directory /var/www/webacula/data>
       Order deny,allow
       Deny from all
    </Directory>

      ErrorLog /var/log/apache2/webacula.douglasqsantos.com.br-error.log
      LogLevel warn
      CustomLog /var/log/apache2/webacula.douglasqsantos.com.br-access.log combined
</VirtualHost>

Agora vamos ajustar o .htaccess para não termos problemas

vim /var/www/webacula/html/.htaccess 
SetEnv APPLICATION_ENV production
RewriteEngine On
RewriteBase   /
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ index.php [NC,L]
php_flag magic_quotes_gpc off
php_flag register_globals off

Agora vamos desabilitar o site default do apache

a2dissite 000-default

Agora vamos habilitar o nosso site para o webacula.

a2ensite webacula

Agora vamos habilitar o módulo rewrite do apache

a2enmod rewrite

Agora vamos ajustar as permissões do diretório do webacula

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

Agora vamos reiniciar o apache

/etc/init.d/apache2 restart

Agora é so acessar http://webacula.douglasqsantos.com.br ou http://ip_do_servidor e informar o usuário: root e a senha que foi definida em: webacula_root_pwd=“senha_para_a_interface_web”

Referências

  1. /var/www/webacula/docs/html