X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=gui%2Fbweb%2FINSTALL;h=857070914ac890e74ccc77fecc11ac1d70347d67;hb=9a152871403282cfbe18d9ef807468dabcd830ca;hp=9bde3295b63a00a0fad675c461be4931202e8975;hpb=e242180c2bfa242a67353f6026cc570c28be1258;p=bacula%2Fbacula diff --git a/gui/bweb/INSTALL b/gui/bweb/INSTALL index 9bde3295b6..857070914a 100644 --- a/gui/bweb/INSTALL +++ b/gui/bweb/INSTALL @@ -2,50 +2,81 @@ # INSTALL NOTES # ################################################################ -Bweb works well with 1.39 release. +Bweb works well with 1.39 release or later. -1) install perl lib +1) install Perl lib 2) copy your files -3) intialise your configuration file -4) do some sql stuff (for postgresql user) -5) get a bconsole that work with Expect +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 ##################################### - - # first, copy bweb perl librarie in your PERL5 INC path + # 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 bweb perl program to you cgi location + # 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 750 /etc/bweb - chown root:www-data /etc/bweb - echo '$VAR1 = { template_dir => "/usr/share/bweb/tpl" };' > /etc/bweb/config - chown www-data /etc/bweb/config + 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 bweb template file + # 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 bweb graphics elements (bweb elements must reside on /bweb) + # 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} /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) - - Gd::Graph + (SQLite is not supported) + - GD::Graph + - GD - HTML::Template - CGI - Expect + - Time::ParseDate You can install perl modules with CPAN perl -e shell -MCPAN @@ -53,13 +84,35 @@ Bweb works well with 1.39 release. 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 + 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. +It could be a good idea to protect your bweb installation (optional). -Put this in you httpd.conf, and add user with htpasswd +Put this in your httpd.conf, and add user with htpasswd Options ExecCGI -MultiViews +SymLinksIfOwnerMatch @@ -70,14 +123,26 @@ Put this in you httpd.conf, and add user with htpasswd 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 ################################# -/etc/bweb/config looks like : (you can edit it inside bweb) +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/bweb/config', + 'config_file' => '/etc/bacula/bweb.conf', 'bconsole' => '/usr/sbin/bconsole -n -c /etc/bacula/bconsole.conf', 'ach_list' => { 'S1_L80' => bless( { @@ -114,58 +179,55 @@ $VAR1 = bless( { ################ BRESTORE ###################################### -If you want to use brestore with bweb, you must associate mime type -text/brestore with your brestore.pl. +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 -################ POSTGRESQL NOTES ############################## +Tips: PL must be enabled in your cluster, you can do this with postgres user +postgres:~$ echo 'CREATE PROCEDURAL LANGUAGE plpgsql;' | psql bacula -If you think that Mysql is not a great database (or just a toy), you must add -function to the Postgresql bacula database to get Bweb works. -psql -u bacula bacula < script/bweb-postgresql.sql +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 -bconsole -n option. +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 #################################### -To use Bweb log engine, you must apply this little patch and have the -new Log table in your database. - -After, you can fill your database with : -while true; do - tail -f /tmp/log.sql | bacula -u bacula bacula -done - -cd bacula-src -patch -p1 < message.patch ---- cvs/src/lib/message.c 2006-07-27 21:06:20.000000000 +0200 -+++ cvs/src/lib/message.c.director 2006-07-28 13:46:49.171083494 +0200 -@@ -716,6 +716,18 @@ - } - fputs(dt, d->fd); - fputs(msg, d->fd); -+ void db_escape_string(char *snew, char *old, int len); -+ if (jcr) { -+ char ed1[50]; -+ POOL_MEM cmd(PM_MESSAGE); -+ int len = strlen(msg); -+ char *p = (char *)malloc(len * 2 + 1); -+ db_escape_string(p, msg, len); -+ FILE *fp = fopen("/tmp/log.sql", "a"); -+ fprintf(fp, "INSERT INTO Log (Time, JobId, LogText) VALUES (NOW(),%s, '%s');\n", edit_int64(jcr->JobId, ed1), p); -+ fclose(fp); -+ } -+ - break; - case MD_DIRECTOR: - Dmsg1(850, "DIRECTOR for following msg: %s", msg); - - -This patch is only for director, this will breaks the rest. -you can revert it with patch -p1 -R < message.patch +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 ############################### @@ -182,5 +244,104 @@ 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. + +4) Go on http://you-director/bweb/bresto.html + +################################################################ Enjoy !