################################################################ # INSTALL NOTES # ################################################################ Bweb works well with 1.39 release or later. 1) install Perl lib 2) copy your files 3) initialize your configuration file 4) do some sql stuff (for postgresql or mysql 5 users) 5) use the -n option on bconsole so that it works with Expect 6) get bacula log more useful 7) bweb limitation 8) using sudo with autochanger 9) using bfileview.pl 10) accessing to bweb 11) setting mysql read-only account 12) get more statistics 13) use groups with bweb 14) setup restoration in bweb (not yet working) ################ FILE COPY ##################################### # you must get bweb svn files svn checkout https://bacula.svn.sourceforge.net/svnroot/bacula/trunk/gui/bweb bweb # or get them from the released tar files or from the apt or rpms. # # Once you have the gui directory loaded, follow the instructions below # or edit the environment variables in the file install_bweb # then execute it. install_web does everything to the next # set of #######'s. # # first, copy the bweb Perl library into your PERL5 INC path perl Makefile.PL make install # or install -m 644 -o root -g root bweb/lib/*.pm /usr/share/perl5 # copy the bweb perl program to your cgi location mkdir -m 755 /usr/lib/cgi-bin/bweb install -m 755 -o root -g root bweb/cgi/*.pl /usr/lib/cgi-bin/bweb # get a config file mkdir -m 755 /etc/bacula chown root:bacula /etc/bacula echo '$VAR1 = { template_dir => "/usr/share/bweb/tpl" };' > /etc/bacula/bweb.conf chown www-data /etc/bacula/bweb.conf # copy the bweb template file mkdir -p /usr/share/bweb/tpl install -m 644 -o root -g root bweb/tpl/*.tpl /usr/share/bweb/tpl # copy the bweb graphics elements (bweb elements must reside in /bweb) mkdir /var/www/bweb install -m 644 -o root -g root bweb/html/*.{js,png,css,gif,ico,html} /var/www/bweb # done ! WARNING : Your www-data (or wwwrun on SuSE) user must be able to execute bconsole and able to read the bconsole.conf file! You can create an bconsole group for that. ################ USE FRENCH VERSION ############################ Simply use lang/fr/tpl/*.tpl files instead of tpl/*.tpl ################ INSTALL PERL LIBRARY ########################## - perl modules - DBI (with mysql or postgresql support DBD::Pg and DBD::mysql) (SQLite is not supported) - GD::Graph - GD - HTML::Template - CGI - Expect - Time::ParseDate You can install perl modules with CPAN perl -e shell -MCPAN > install Expect Or use your distribution apt-get install libgd-graph-perl libhtml-template-perl libexpect-perl apt-get install libdbd-mysql-perl libdbd-pg-perl libdbi-perl libtime-modules-perl Note: the best way to test if you have all the dependencies fullfilled for Perl is to: cd /var/www/cgi-bin/bweb ./bweb.pl you might also want to try: ./bgraph.pl To make sure the graphing modules are loaded. However, running it will spray binary graphics data on your terminal. Otherwise, you will get an error. That should show you if any of the pre-requisites are missing. On SuSE 10.2, I was able to load all the appropriate modules via rpms, with the exception of Expect and Time::ParseDate, which I loaded manually using perl. If you experience problems, always consult the Apache error_log file. ################ APACHE CONFIGURATION ########################## It could be a good idea to protect your bweb installation (optional). Put this in your httpd.conf, and add user with htpasswd Options ExecCGI -MultiViews +SymLinksIfOwnerMatch AuthType Basic AuthName MyPrivateFile AuthUserFile /etc/apache/htpasswd AllowOverride None Require valid-user On SuSE 10.2, the following in /etc/apache2/default-server.conf works. However, it is not secure: Directory "/srv/www/cgi-bin/bweb"> AllowOverride None Options +ExecCGI -Includes Order allow,deny Allow from all ################ CONFIGURATION ################################# Note, this is automatically installed by the install_bweb script. /etc/bacula/bweb.conf looks like : (you can edit it inside bweb) $VAR1 = bless( { 'graph_font' => '/usr/share/fonts/truetype/ttf-bitstream-vera/Vera.ttf', 'name' => undef, 'config_file' => '/etc/bacula/bweb.conf', 'bconsole' => '/usr/sbin/bconsole -n -c /etc/bacula/bconsole.conf', 'ach_list' => { 'S1_L80' => bless( { 'info' => { 'drive' => 0, 'io' => 0, 'slot' => 0 }, 'name' => 'S1_L80', 'bweb' => undef, 'device' => '/dev/changer', 'drive' => [], 'debug' => 0, 'label' => {}, 'precmd' => 'sudo', 'io' => [], 'mtxcmd' => '/usr/sbin/mtx', 'drive_name' => [ 'S1_L80_SDLT0', 'S1_L80_SDLT1' ], 'slot' => [] }, 'Bweb::Autochanger' ) }, 'password' => 'xxx', 'template_dir' => '/usr/share/bweb/tpl', 'dbi' => 'DBI:mysql:database=bacula', 'error' => '', 'debug' => 0, 'user' => 'bacula', 'email_media' => 'eric@localhost' }, 'Bweb::Config' ); ################ BRESTORE ###################################### If you want to use brestore with bweb, you must associate a mime type text/brestore with your brestore.pl, and you must install brestore. See gui/brestore/README for instructions on installing brestore.pl. ################ POSTGRESQL AND MYSQL5 NOTES #################### If you want to use PostgreSQL instead of MySQL, you must add a function to the PostgreSQL Bacula database to get Bweb to work. psql -U bacula bacula < script/bweb-postgresql.sql Tips: PL must be enabled in your cluster, you can do this with postgres user postgres:~$ echo 'CREATE PROCEDURAL LANGUAGE plpgsql;' | psql bacula To get database size with mysql5, edit Bweb.pm and change the DB_SIZE macro # with mysql < 5, you have to play with the ugly SHOW command DB_SIZE => " SELECT 0 ", # works only with mysql 5 # DB_SIZE => " SELECT sum(DATA_LENGTH) FROM INFORMATION_SCHEMA.TABLES ", ################ BCONSOLE NOTES ################################ You must use bconsole without conio/readline support. For that, use the bconsole -n option. This is done automatically with the standard configuration file. In addition, please ensure that the binary bconsole file can be executed by your web server. It is normally located in /usr/bin/bconsole (or some such file), and must have modes 755 or it will not be executable by your web server. The normal Bacula installation usually sets mode 750. ################ BACULA LOG #################################### If you want Bweb to be able to show listings of the Job output, you must add a "catalog = all, !skipped, !saved" to your messages resource in bacula-dir.conf and restart your Bacula server. This is shown below: Messages { Name = Standard operator = root@localhost = mount console = all, !skipped, !saved append = "/tmp/bacula/var/bacula/working/log" = all, !skipped catalog = all, !skipped, !saved } ################ BWEB LIMITATION ############################### To get bweb working, you must follow these rules - Media, Storage and Pool must have [A-Za-z_0-9\.-]+ (no space) - AutoChanger name must be same as Device and Location name in bacula ################ SUDO CONFIGURATION ############################ If you use sudo, put this on you /etc/sudoers www-data ALL = (root) NOPASSWD: /usr/sbin/mtx -f /dev/changer transfer * www-data ALL = (root) NOPASSWD: /usr/sbin/mtx -f /dev/changer status www-data ALL = (root) NOPASSWD: /usr/sbin/mtx -f /dev/changer load * www-data ALL = (root) NOPASSWD: /usr/sbin/mtx -f /dev/changer unload * ################ BFILEVIEW SETUP ############################### At this time, bfileview works only with PostgreSQL. Alias /bweb/fv /var/spool/bweb Options None AllowOverride AuthConfig Order allow,deny Allow from all mkdir /var/spool/bweb chmod 700 /var/spool/bweb chown www-data /var/spool/bweb You have to remove "" from tpl/display_job_zoom.tpl. You MUST use brestore.pl -b to initialize the database, and you CAN use bfileview.pl mode=batch jobid=xxx where=/ to compute tree size. At this time, it's a good idea to schedule brestore.pl -b after your BackupCatalog job. Job { Name = "BackupCatalog" ... # This creates an ASCII copy of the catalog RunBeforeJob = "/opt/bacula/etc/make_catalog_backup bacula bacula Pei0ahm9" # This deletes the copy of the catalog RunAfterJob = "/opt/bacula/etc/delete_catalog_backup" RunAfterJob = "/usr/local/bin/brestore.pl -b" } To upgrade from an old installation, you can use : ALTER TABLE brestore_pathvisibility ADD Size int8; ALTER TABLE brestore_pathvisibility ADD Files int4; ################ ACCESSING TO BWEB ############################ Now, you are able to launch firefox/mozilla and go on http://your-server/bweb ################ SETTING MYSQL ACCOUNT ######################## At this time, Bweb needs a write access to : - Location - LocationLog - Media::LocationId - Media::Comment - Media::RecyclePoolId (it will change soon) If your doesn't use Location feature, you can use ReadOnly access for all tables, or setup something like : GRANT SELECT ON bacula.* TO 'bweb'@'%' IDENTIFIED BY 'password'; GRANT INSERT,UPDATE,DELETE ON bacula.Location TO 'bweb'@'%' IDENTIFIED BY 'password'; GRANT INSERT,UPDATE,DELETE ON bacula.LocationLog TO 'bweb'@'%' IDENTIFIED BY 'password'; ################ GET MORE STATISTICS ########################### You keep Jobs informations across retention into a job_old table. You have to setup stat_job_table = job_old in bweb configuration. CREATE TABLE job_old (LIKE Job); And run this on crontab when you want : INSERT INTO job_old (SELECT * FROM Job WHERE JobId NOT IN (SELECT JobId FROM job_old) ); ################ USE GROUPS WITH BWEB ########################## It works with postgresql and mysql5 (4 not tested). With mysql, load bweb/script/bweb-mysql.sql into your catalog For postgresql, it will be done with bweb/script/bweb-postgresql.sql (already done) ################ MADE RESTORATION WITH BWEB #################### Warning, this function is not for production use at this time ! It will do some basics things on a working bweb/brestore setup. 1) Go to http://extjs.com and download their toolkit (last 1.X release) 2) Install files in /bweb/ext web root example on debian : root@localhost:~# mv ext-1.1.1 /usr/share/bweb/html/ext 3) Make sure that brestore cache tables are updated with brestore.pl bacula@localhost:~$ brestore.pl -b 4) Enable bresto.pl cgi. edit the bweb/cgi/bresto.pl script and change $bresto_enable=0; to $bresto_enable=1; on the top of the file. 5) Use the last Bweb.pm If you are trying bresto in a working bweb/brestore setup, you must make sure that you use the last Bweb.pm SVN version. 6) Go on http://you-director/bweb/bresto.html ################################################################ Enjoy !