]> git.sur5r.net Git - bacula/bacula/blob - gui/bweb/INSTALL
bweb: Add sqlite support
[bacula/bacula] / gui / bweb / INSTALL
1 ################################################################
2 #               INSTALL NOTES                                  #
3 ################################################################
4
5 Bweb works well with 3.0 release or later.
6
7 1) install Perl lib
8 2) using lighttpd (quick install)
9 3) using apache 
10 4) initialize your configuration file
11 5) do some sql stuff (for postgresql or mysql 5 users)
12 6) use the -n option on bconsole so that it works with Expect
13 7) get bacula log more useful
14 8) bweb limitation
15 9) using sudo with autochanger
16 10) using bfileview.pl
17 11) accessing to bweb
18 12) setting mysql read-only account
19 13) get more statistics
20 14) use users and groups with bweb
21 15) setup restoration in bweb
22
23
24 ################ INSTALL PERL LIBRARY ##########################
25
26  - perl modules
27     - DBI (with mysql or postgresql support DBD::Pg and DBD::mysql)
28           (SQLite is not supported)
29     - GD::Graph
30     - GD
31     - HTML::Template
32     - CGI
33     - Expect
34     - Time::ParseDate
35     - Date::Calc
36
37  You can install perl modules with CPAN
38  perl -e shell -MCPAN
39   > install Expect
40
41  Or use your distribution
42  apt-get install libgd-graph-perl libhtml-template-perl libexpect-perl \
43                  libdbd-mysql-perl libdbd-pg-perl libdbi-perl \
44                  libdate-calc-perl libtime-modules-perl
45
46  Note: the best way to test if you have all the dependencies
47  fullfilled for Perl is to:
48   
49     cd bweb/lib
50     ../cgi/bweb.pl 
51
52  you might also want to try:
53
54     ../cgi/bgraph.pl 
55
56  To make sure the graphing modules are loaded.  However, running it
57  will spray binary graphics data on your terminal.  Otherwise, you will
58  get an error.
59
60  That should show you if any of the pre-requisites are missing.
61  On SuSE 10.2, I was able to load all the appropriate modules via rpms,
62  with the exception of Expect and Time::ParseDate, which I loaded manually
63  using perl.
64
65  If you experience problems, always consult the Apache error_log
66  file.
67
68
69 ################# USE LIGHTTPD WITH BWEB #######################
70
71 In this example, bweb files are in /home/bacula/bweb
72 You should have installed lighttpd.
73
74 bacula:~$ cd bweb
75
76 # configure the database
77 bacula:~/bweb$ mysql bacula < script/bweb-mysql.sql
78 # or
79 bacula:~/bweb$ psql bacula < script/bweb-postgresql.sql
80
81 # You can start the web server from the bweb directory
82 bacula@localhost:~/bweb$ ./script/starthttp
83  Making configuration template in /home/bacula/bweb/bweb.conf
84  Adjusting bweb.conf path
85  Using bweb on /home/bacula/bweb,  use firefox http://localhost:9180
86  2009-07-18 22:23:12: (log.c.75) server started
87
88
89 By default, only the loopback interface is binded, you can change that
90 in the bweb/script/httpd.conf file.
91
92 You will have to configure bweb with your database and bconsole info, it
93 can be done in the web interface.
94
95 I [Kern] used the following in the Configuration panel. Note: I am 
96    using Ubuntu Hardy (8.04):
97 DBI:     DBI:mysql:database=bacula;host=roxie 
98 user:    bacula
99 Password:   (nothing -- I have none)
100 email_media:  my@email.com
101 bconsole:  /opt/bacula/bin/bconsole -n
102
103 Click: Save
104 Click: Main -- you should see the charts
105
106
107 ################ FILE COPY (Full Apache methode) ###############
108  # you must get bweb svn files
109  git clone git://bacula.git.sourceforge.net/gitroot/bacula/bacula
110  git checkout origin/master
111  cd bacula/gui/
112
113  # or get them from the released tar files or from the apt or rpms.
114
115  #
116  # Once you have the gui directory loaded, follow the instructions below
117  #  or edit the environment variables in the file install_bweb
118  #  then execute it. install_web does everything to the next
119  #  set of #######'s.
120  #
121
122  # first, copy the bweb Perl library into your PERL5 INC path
123  perl Makefile.PL
124  make install
125  # or
126  install -m 644 -o root -g root  bweb/lib/*.pm /usr/share/perl5
127
128
129
130  # copy the bweb perl program to your cgi location
131  mkdir -m 755 /usr/lib/cgi-bin/bweb
132  install -m 755 -o root -g root  bweb/cgi/*.pl /usr/lib/cgi-bin/bweb
133
134  # get a config file, if you want to use an other place edit lib/Bweb.pm
135  mkdir -m 755 /etc/bacula
136  chown root:bacula /etc/bacula
137  echo '$VAR1 = { template_dir => "/usr/share/bweb/tpl" };' > /etc/bacula/bweb.conf
138  chown www-data /etc/bacula/bweb.conf
139
140  # copy the bweb template file
141  mkdir -p /usr/share/bweb/tpl/en
142  install -m 644 -o root -g root  bweb/lang/en/tpl/*.tpl /usr/share/bweb/tpl/en
143
144  # copy the bweb graphics elements (bweb elements must reside in /bweb)
145  mkdir /var/www/bweb
146  install -m 644 -o root -g root  bweb/html/*.{js,png,css,gif,ico,html} /var/www/bweb
147
148  # done !
149
150  WARNING : Your www-data (or wwwrun on SuSE) user must be able to execute
151            bconsole and able to read the bconsole.conf file!
152            You can create an bconsole group for that.
153
154 ################ USE FRENCH/SPANISH VERSION ####################
155
156 Simply copy lang/fr/tpl/*.tpl files to .../tpl/fr/*.tpl and choose
157 your language in the configuration panel.
158
159
160 ################ APACHE CONFIGURATION ##########################
161
162 It could be a good idea to protect your bweb installation (optional).
163
164 Put this in your httpd.conf, and add user with htpasswd
165
166 Alias /bweb /usr/share/bweb/html
167 <Directory /usr/share/bweb/html>
168         Options FollowSymLinks MultiViews
169         AllowOverride None
170         Order allow,deny
171         allow from all
172 </Directory>
173
174 ScriptAlias /cgi-bin/bweb /usr/lib/cgi-bin/bweb
175 <Directory /usr/lib/cgi-bin/bweb>
176         Options ExecCGI -MultiViews +SymLinksIfOwnerMatch
177         AuthType Basic
178         AuthName MyPrivateFile
179         AuthUserFile /etc/apache/htpasswd
180         AllowOverride None
181         Require valid-user
182 </Directory>
183
184 On SuSE 10.2, the following in /etc/apache2/default-server.conf works. 
185 However, it is not secure:
186
187 Directory "/srv/www/cgi-bin/bweb">
188  AllowOverride None
189  Options +ExecCGI -Includes
190  Order allow,deny
191  Allow from all
192 </Directory>
193
194
195 ################ CONFIGURATION #################################
196
197 Note, this is automatically installed by the install_bweb script.
198
199 /etc/bacula/bweb.conf looks like : (you can edit it inside bweb)
200 $VAR1 = bless( {
201   'graph_font' => '/usr/share/fonts/truetype/ttf-bitstream-vera/Vera.ttf',
202   'name' => undef,
203   'config_file' => '/etc/bacula/bweb.conf',
204   'bconsole' => '/usr/sbin/bconsole -n -c /etc/bacula/bconsole.conf',
205   'ach_list' => {
206      'S1_L80' => bless( {
207          'info' => {
208                      'drive' => 0,
209                      'io' => 0,
210                      'slot' => 0
211                    },
212          'name' => 'S1_L80',
213          'bweb' => undef,
214          'device' => '/dev/changer',
215          'drive' => [],
216          'debug' => 0,
217          'label' => {},
218          'precmd' => 'sudo',
219          'io' => [],
220          'mtxcmd' => '/usr/sbin/mtx',
221          'drive_name' => [
222                            'S1_L80_SDLT0',
223                            'S1_L80_SDLT1'
224                          ],
225          'slot' => []
226        }, 'Bweb::Autochanger' )
227    },
228   'password' => 'xxx',
229   'template_dir' => '/usr/share/bweb/tpl',
230   'lang' => 'en',
231   'dbi' => 'DBI:mysql:database=bacula',
232   'error' => '',
233   'debug' => 0,
234   'user' => 'bacula',
235   'email_media' => 'eric@localhost'
236 }, 'Bweb::Config' );
237
238
239 ################ BRESTORE ######################################
240
241 If you want to use brestore with bweb, you must associate a mime type
242 text/brestore with your brestore.pl, and you must install brestore.
243 See gui/brestore/README for instructions on installing brestore.pl.
244
245 ################ POSTGRESQL AND MYSQL5 NOTES ####################
246
247 If you want to use PostgreSQL instead of MySQL, you must add
248 a function to the PostgreSQL Bacula database to get Bweb to work.
249
250 psql -U bacula bacula < script/bweb-postgresql.sql
251
252 Tips: PL must be enabled in your cluster, you can do this with postgres user
253 postgres:~$ echo 'CREATE PROCEDURAL LANGUAGE plpgsql;' | psql bacula 
254
255
256 To get database size with mysql5, edit Bweb.pm and change the DB_SIZE macro
257
258  # with mysql < 5, you have to play with the ugly SHOW command
259  DB_SIZE => " SELECT 0 ",
260  # works only with mysql 5
261  DB_SIZE => " SELECT sum(DATA_LENGTH) FROM INFORMATION_SCHEMA.TABLES ",
262
263 ################ BCONSOLE NOTES ################################
264
265 You must use bconsole without conio/readline support. For that, use
266 the bconsole -n option. This is done automatically with the standard
267 configuration file.  In addition, please ensure that the binary
268 bconsole file can be executed by your web server. It is normally
269 located in /usr/bin/bconsole (or some such file), and must have
270 modes 755 or it will not be executable by your web server.  The
271 normal Bacula installation usually sets mode 750.
272
273 ################ BACULA LOG ####################################
274
275 If you want Bweb to be able to show listings of the Job output,
276 you must add a "catalog = all, !skipped, !saved" to your
277 messages resource in bacula-dir.conf and restart your Bacula 
278 server.  This is shown below:
279
280 Messages {
281   Name = Standard
282
283   operator = root@localhost = mount
284   console = all, !skipped, !saved
285   append = "/tmp/bacula/var/bacula/working/log" = all, !skipped
286
287   catalog = all, !skipped, !saved
288 }
289
290
291 ################ BWEB LIMITATION ###############################
292
293 To get bweb working, you must follow these rules
294  - Media, Storage and Pool must have [A-Za-z_0-9\.-]+ (no space)
295  - AutoChanger name must be same as Device and Location name in bacula
296
297 ################ SUDO CONFIGURATION ############################
298
299 If you use sudo, put this on you /etc/sudoers
300
301 www-data ALL = (root) NOPASSWD: /usr/sbin/mtx -f /dev/changer transfer *
302 www-data ALL = (root) NOPASSWD: /usr/sbin/mtx -f /dev/changer status
303 www-data ALL = (root) NOPASSWD: /usr/sbin/mtx -f /dev/changer load *
304 www-data ALL = (root) NOPASSWD: /usr/sbin/mtx -f /dev/changer unload *
305
306 ################ BFILEVIEW AND BTIME SETUP ###############################
307
308 Alias /bweb/fv /var/spool/bweb
309 <Directory "/var/spool/bweb">
310     Options None
311     AllowOverride AuthConfig
312     Order allow,deny
313     Allow from all
314 </Directory>
315
316 mkdir /var/spool/bweb
317 chmod 700 /var/spool/bweb
318 chown www-data /var/spool/bweb
319
320 Add (or configure) a writable location to the parameters in bweb.conf 
321    'fv_write_path' => '/var/spool/bweb',
322
323 ###### BFILEVIEW only part
324
325 You MUST use brestore.pl -b or bresto.pl action=batch to initialize the
326 database, and you CAN use bfileview.pl mode=batch jobid=xxx where=/ to compute
327 tree size.
328
329 At this time, it's a good idea to schedule brestore.pl -b or bresto.pl after
330 your BackupCatalog job.
331
332 Job {
333   Name = "BackupCatalog"
334   ...
335   # This creates an ASCII copy of the catalog
336   RunBeforeJob = "/opt/bacula/etc/make_catalog_backup.pl MyCatalog"
337   # This deletes the copy of the catalog
338   RunAfterJob  = "/opt/bacula/etc/delete_catalog_backup"
339   RunAfterJob  = "/usr/lib/cgi-bin/bweb/bresto.pl action=batch"
340 }
341
342 To upgrade from an old installation, you can use :
343 ALTER TABLE brestore_pathvisibility ADD Size int8;
344 ALTER TABLE brestore_pathvisibility ADD Files int4;
345
346 ################ ACCESSING TO BWEB ############################
347
348 Now, you are able to launch firefox/mozilla and go on
349 http://your-server/bweb
350
351 ################ SETTING MYSQL ACCOUNT ########################
352
353 At this time, Bweb needs a write access to :
354 - Location 
355 - LocationLog
356 - Media::LocationId
357 - Media::Comment
358 - Media::RecyclePoolId (it will change soon)
359
360 If your doesn't use Location feature, you can use ReadOnly access
361 for all tables, or setup something like :
362
363 GRANT SELECT ON bacula.* TO 'bweb'@'%'  IDENTIFIED BY 'password';
364 GRANT INSERT,UPDATE,DELETE ON bacula.Location 
365   TO 'bweb'@'%' IDENTIFIED BY 'password';
366 GRANT INSERT,UPDATE,DELETE ON bacula.LocationLog 
367   TO 'bweb'@'%' IDENTIFIED BY 'password';
368
369 ################ GET MORE STATISTICS ###########################
370
371 You keep Jobs informations across retention into a JobHisto table.
372 You have to setup stat_job_table = JobHisto in bweb configuration.
373
374 And use Statistics module from Bacula (see documentation and update stats
375 command).
376
377 ################ USE USERS AND GROUPS WITH BWEB ##########################
378
379 It works with postgresql and mysql5 (4 not tested).
380 With mysql, load bweb/script/bweb-mysql.sql into your catalog
381 For postgresql, it will be done with bweb/script/bweb-postgresql.sql (already done)
382
383 ################ MADE RESTORATION WITH BWEB ####################
384
385 It will do some basics things on a working bweb/brestore setup.
386
387 1) Go to http://extjs.com and download their toolkit (use the 2.2 release)
388    You can also get it from http://www.bacula.org/downloads/extjs-2.2.zip
389
390 2) Install files in /bweb/ext web root 
391  example on debian : 
392   root@localhost:~# mv ext-2.2 /usr/share/bweb/html/ext
393
394 3) Make sure that brestore cache tables are in your catalog (bweb-xxx.sql files)
395
396 4) Go on http://you-director/bweb/bresto.html
397
398 ################################################################
399
400 Enjoy !