]> git.sur5r.net Git - bacula/bacula/blobdiff - gui/bweb/INSTALL
ebl Add brestore ajax port.
[bacula/bacula] / gui / bweb / INSTALL
index 9bde3295b63a00a0fad675c461be4931202e8975..857070914ac890e74ccc77fecc11ac1d70347d67 100644 (file)
@@ -2,50 +2,81 @@
 #               INSTALL NOTES                                  #
 ################################################################
 
 #               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
 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
 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 #####################################
 
 ################ 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
 
  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 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
 
  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
  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 !
 
 
  # 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)
 ################ 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
     - HTML::Template
     - CGI
     - Expect
+    - Time::ParseDate
 
  You can install perl modules with CPAN
  perl -e shell -MCPAN
 
  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
 
  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 ##########################
 
 
 ################ 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
 
 <Directory /usr/lib/cgi-bin/bweb>
         Options ExecCGI -MultiViews +SymLinksIfOwnerMatch
 
 <Directory /usr/lib/cgi-bin/bweb>
         Options ExecCGI -MultiViews +SymLinksIfOwnerMatch
@@ -70,14 +123,26 @@ Put this in you httpd.conf, and add user with htpasswd
         Require valid-user
 </Directory>
 
         Require valid-user
 </Directory>
 
+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
+</Directory>
+
 
 ################ CONFIGURATION #################################
 
 
 ################ 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,
 $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( {
   'bconsole' => '/usr/sbin/bconsole -n -c /etc/bacula/bconsole.conf',
   'ach_list' => {
      'S1_L80' => bless( {
@@ -114,58 +179,55 @@ $VAR1 = bless( {
 
 ################ BRESTORE ######################################
 
 
 ################ 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 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 ####################################
 
 
 ################ 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 ###############################
 
 
 ################ 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 *
 
 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
+<Directory "/var/spool/bweb">
+    Options None
+    AllowOverride AuthConfig
+    Order allow,deny
+    Allow from all
+</Directory>
+
+mkdir /var/spool/bweb
+chmod 700 /var/spool/bweb
+chown www-data /var/spool/bweb
+
+You have to remove "<!-- Remove this to activate bfileview" and "-->" 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 !
 
 Enjoy !