Metido en el fregado de crear un servidor Bacula con una gestión web, que se pueda usar mas que nada para visualizar tareas y quizas restauraciones de ficheros, me pongo manos a la obra para instalar esta "aplicación".
La documentación que viene en el paquete esta muy bien, pero he tenido que hechar mano de otras fuentes, al ver que no seguia una manera "ordenada" desde mi punto de vista para debian.
Y finalmente tengo que crearme este tuto, porque he tenido que tocar por mi parte mas de lo esperado y seguro que dentro de unos meses no sabre como monte esto.
Empezamos por bajarnos el paquete webacula de: webacula-5.5.1 Inicialmente lo meti en /var/www/ pero segun avanzaba en la instalación me di cuenta que seria mas facil meterlo en /usr/share/ la culpa del fichero "webacula.cfg"
Se baja, se descomprime y se obtiene un directorio con un monton de subdirectorios y montones de ficheros, yo lo renombre a webacula, para dejarnos de coletillas con las versiones.
Lo primero Copy-Paste de la documentación de Webacula. (En ../webacula/docs/html/install.html) Aparece esto.
System Requirements
To check the installed system packages, run from command line:
docs/check_system_requirements.php
NOTE. The successful execution of the script does not indicate that your system is fully ready to work with Webacula.
Webacula also requires:
- Bacula 5.0 or later
- Zend Framework version 1.10.0 or later
- Zend Framework is built with object-oriented PHP 5 and requires PHP 5.2.4 or later with PDO extension active.
Please see the system requirements appendix
for more detailed information.
- Apache and mod_rewrite. Or equivalent web-server, for example, nginx and ngx_http_rewrite_module
- Installed php-gd package
- Installed http://php.net/dom
for use the RSS feed
- Browser compatibility: all jQuery UI plugins are tested for IE 6.0+, Firefox 3+, Safari 3.1+, Opera 9.6+, Google Chrome
Los requerimientos parecen sencillos si no fuera porque algunas cosas no se ni lo que son. (veamos)
Bacula, si es la ultima, a fecha de hoy, 5.2.6 Cumplo.
Zend Framework, pues ni idea, pero me miro los enlaces que aparecen, como se ve donde apuntan y la verdad que tiene pinta de ser una plataforma de desaroyo, para PHP, pero que no soy capaz de bajarme el famoso Framework. Todo apunta a que si quiero descargarme algo me tengo que registrar, y bueno, que rabia, pero todo sea por bacula. Me registro y me bajo el paquete minimal que es lo que apunta esto. Por suerte para todos y para mi la proxima vez, no hace falta nada de esto, Debian ya tiene un Zend para poder instalar, simplemente haciendo:
Install
Make directory tree
aptitude install zendframework
Ya tendremos nuestro Zend para poder usar luego vemos como hacemos.
Apache mod_rewirte, mmm, pues como me suena a mod, pues tan sencillo como meterlo en los mods de apache de este modo:
ln -s /etc/apache2/mods-available/rewrite.load /etc/apache2/mods-enabled/rewrite.load
Ya se que se puede hacer de otras maneras como a2enmod rewrite pero yo estoy acostumbrado a esta, enlaces blandos a mano :! Ya tenemos otro requerimiento cumplido.
php-gd Mmmm, pues si, creo que se instalo solo cuando instale phpmyadmin, o eso creo recordar. ( lo doy por hecho.)
http://php.net/dom
for use the RSS feed Mmmm, ni idea pero de entrada como que no me preocupa demasiado en este instante y prefiero dejarlo para mas adelante, tengo mucho que hacer, y me da que esto es mas bien, para que se notifiquen las cosas, por RSS, y ya vere si lo pongo o no. ( ya he comprobado que biene por defecto como el php-gd)
Pongamonos a configurar las cosas continuando con el manual de instalación.
Lo primero Zend, como ya tenemos instaldo el paquete Zend, lo apuntamos y cumplimos con esta parte, cuando se instaldo el paquete de debian, se instalo en /usr/share/php/Zend, (en mi caso Debian Wheezy) bien pues lo apuntamos como si lo metieramos en /usr/share/webacula/library/Zend, como dice la documentación, pero nos ahorramos crear el directorio y el resto de cosas, creamos un enlace blando con ln -s de este modo:
ln -s /usr/share/php/Zend /usr/share/webacula/library/Zend
En la documentación se habla de una serie de permisos o limitaciónes que se tienen que tener en cuenta a la hora de los distintos directorios que se tienen tanto en Zend como en Webacula. ( yo de momento no toco nada)
config.ini
config.ini este fichero está en mi instalación ( recordemos que yo lo he metido en /usr/share ) en :
/usr/share/webacula/application/config.ini al cual se le tiene que definir los parametros para que se conecte con la base de datos y algunos otros para el acceso a bconsole. ( doy por hecho que se dispone de una instalación de bacula "server" al completo y funcionando en el mismo equipo "localhost")
Mi instalación es con MySQL con lo que tengo una serie de parametros a tener en cuenta:
db.adapter = PDO_MYSQL ( hay tantos adapters como versiones de bases de datos tiene bacula)
db.config.host = localhost
db.config.username = "usuario de la base de datos" Unos usan root, yo uso el que creo bacula al instalarse (bacula)
db.config.password = la passwor de la base de datos bacula
db.config.dbname = bacula (esta es la base de datos que tambien creo bacula al instalarse por defecto.
def.timezone = "Europe/Madrid" ( ya que estamos, pongamos las cosas bien)
locale = "es" (Esta disponible en español, porque no usarlo...)
bacula.sudo = "/usr/bin/sudo" (En la documentación apuntan a que se puede correr bconsole con o sin "sudo" en mi caso con sudo)
bacula.bconsole = "/usr/sbin/bconsole" Este es el directorio donde yo tengo bconsole para lanzarlo.
bacula.bconsolecmd = "-n -c /etc/bacula/bconsole.conf" (El fichero de configuración de bconsole)
Setting up to run bconsole under Webacula
Toca el momento de añadir a el usuario de apache al grupo de bacula, para que "apache" pueda lanzar bconsole.
usermod -aG bacula www-data Con esto ya lo tenemos listo.
With sudo
Yo estoy utilizando "sudo" para que apache use bconsole, con lo que la parte de "Sin Sudo" la dejo de lado. A "sudo" se le tiene que modificar y añadir que el usuario de apache no se le solicite contraseña, para esto tecleamos "visudo" que nos permite añadir la linea que indica en el manual. (ojo que no somos apache somos www-data) Incorporamos esta linea al fichero de configuración de sudo.
www-data ALL=NOPASSWD: /usr/sbin/bconsole
Comprobamos que todo va como tiene que ser llamando a bconsole con el usuario de apache2.
su -l www-data -s /bin/sh \-c "/usr/bin/sudo /usr/sbin/bconsole -n -c /etc/bacula/bconsole.conf"
Apache
webacula.conf Este fichero está en mi caso, /usr/share/webacula/install/apache/ mirando un poco nos damos cuenta que en realidad es una definición para un "virtualhost", y tambien nos percatamos que está preparado para que el directorio webacula se coloque en /usr/sahre/ de esta manera no tenemos que cambiar todas las lineas donde apuntan los distintos directorios. Lo primero es hacer un enlace blando de su sitio a los sitios de apache de esta forma.
ln -s /usr/share/webacula/install/apache/webacula.cfg /etc/apache2/sites-enabled/webacula
Recortamos ya el .cfg y matamos dos pajaros de un tiro. En cualquier caso el fichero necesita ser retocado, por lo menos en mi caso, porque está pensado para ser usado en la propia maquina osea "localhost", y yo quiero tener una maquina que tenga acceso a este "webacula". Añado Allow from 192.168.3.7 en las dos secciones, para que esa IP tenga acceso a el virtualhost que engloba "webacula"
Para poder probar tenemos que reiniciar apache2 y lo hacemos, con:
/etc/init.d/apache2 restart
mod_rewrite
Ya podemos continuar, y continuamos comprobando que el modrewrite trabaja. Copy y paste de la cocumentación a la consola.
apachectl -t -D DUMP_MODULES 2>&1 | grep rewrite Tirando en consola rewrite_module (shared)
Tambien lo podemos comprobar pinchando en: http://la_IP_de_la_maquina/webacula/test_mod_rewrite/
Saliento un enlace para que se pinche y posterior mente una vez pinchado saliendo: mod_rewrite test PASSED
PHP
PHP.ini Es otro de los ficheros que indican que se tiene que modificar, mi fichero está en /etc/php5/apache2/php.ini en mi instalación tengo otro php.ini en /etc/php5/cli/php.ini pero lo voy a dejar como este, si algo falla ya retocare si procede, pongo el max_execution_time = 3600 que apunta la documentación pero el memory_limit = me aparece a a 128 no a 32 con lo que la dejo como esta, mejor que sobre que no que falte.
Bacula setup
En la parte de los mensajes de bacula-dir.cfg yo no he modificado nada, no creo que sea critico, esta parte de añadir !skipped, !saved a la salida de los mensajes del "catalog", no creo que sea determinante.
Webacula install
Llega el momento de ir finalizando, y este es un paso crucial en mi caso, no meti la en la base de datos "bacula" las tablas que necesita webacula, y me lie un poco ( que porque no segui el manual al pie de la letra???, quizas el cansancio ) webacula tiene un fichero de configuración y un par de scripts que injectan las tablas que requiere webacula, para trabajar, el, con sigo mismo. En mi instalación el ficherito critico se encuentra en: /usr/share/webacula/install/db.conf Este fichero si le hechamos un vistazo nos damos cuenta lo que hace, incorpora la definición de los parametros para conectar con nuestra base de datos, sea del tipo de sea. Modificamos acorde con nuestra instalación y los nombres de nuestra base de datos y contraseñas y ya lo tendriamos listo. Se aprecia que tambien añade el usuario del acceso web a webacula y tenemos que añadir la contraseña para este proposito, esto sera la paguina de acceso al sistema con sus credenciales. La cosa queda de este modo:
# See also application/config.ini
# bacula settings
db_name="bacula" ( Esta claro la base de datos a la que se conectara)
# for Sqlite only
db_name_sqlite="/var/bacula/working/bacula.db" (SqLite, no me interesa)
db_user="root" (SqLite??, no me interesa, Si es generico para todas, en mi caso podria poner "bacula" el usuario de mi base de datos y probar si mete las tablas, o quizas requiere que sea root)
# CHANGE_THIS
db_pwd="Password de tu base de datos"
# Webacula web interface settings
#
# Built-in superuser login is 'root' (indica que el acceso sera como usuario root)
#
# CHANGE_THIS
webacula_root_pwd="Password a la pagina de entrada"
Ya estamos listos para correr los dos scripts que estan disponibles en el directorio que nos toque, si somos de MySQL, pues en el o si somos de SQLITE3 pues en su directorio, en mi caso MySQL, estos dos scripts se lanzan tal cual con ./ y siendo root, ( en mi caso.) de este modo:
/usr/share/webacula/install/MySql# ./10_make_tables.sh
/usr/share/webacula/install/MySql# ./20_acl_make_tables.sh
Se incorporan las tablas que requiere webacula, y lo podemos comprobar si nos vamos a phpmyadmin y nos metemos en la base de datos "bacula" se ven unas cuantas tablas mas a las que ya tenia bacula de por si.
Con esto ya tendriamos que tener nuestro sistema webacula funcionando, si no fuera por un pequeño desfase de versiones, en mi caso, me salio un error al intentar acceder a la pagina de entrada.
PHP Fatal error: Uncaught exception ‘Zend_Exception’ with message
‘Bacula version mismatch for the Catalog database. Wanted 12, got 14
La solución a esto, es modificar el fichero /usr/share/webacula/html/index.php dar con la linea que dice:
define('BACULA_VERSION', 12); // Bacula Catalog version y cambiar el 12 por el 14, con esto ya tenenos el asunto finiquitado.
Unos enlaces para que os ayuden si lo requeris.
http://fan0o.wordpress.com/2012/05/24/baculawebacula/
http://localhost/webacula/docs/html/install.html
http://www.java-tutorial.ch/ubuntu/webacula-installation-on-ubuntu