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