Updating INSTALL documents
[wip/koha-chris_n.git] / INSTALL.debian
1 =============================
2 Installation Guide for Installing Koha on Debian Etch with MySQL 5
3 =============================
4
5 Copyright (C) 2007, 2008 LibLime (http://liblime.com)
6 Some parts copyright 2010 Chris Nighswonger
7
8 Feedback/bug reports: Koha Developer's List:
9 http://lists.koha.org/mailman/listinfo/koha-devel
10
11 This document last modified: 19 May 2010
12
13 Installation Instructions
14 =============================
15
16 All commands can be performed as a system user with sudo privileges,
17 as indicated or by running the command directly as root.
18
19 1. Prepare System and Install Dependencies
20
21 1.1 Install Debian Etch via Businesscard CD
22
23 See http://www.debian.org/releases/etch/debian-installer/
24
25 WARNING: use Perl 5.8 (a library Koha depends on,
26 MARC::File::XML may not work with Perl 5.10, see:
27 http://bugs.koha.org/cgi-bin/bugzilla/show_bug.cgi?id=2309),
28
29 1.2 Set up your locale
30
31 Your locale should be set to UTF-8, as should Apache2 and MySQL 5.
32 This step is VERY IMPORTANT for a UNICODE compliant system. Please 
33 read over the following document carefully:
34
35 http://wiki.koha.org/doku.php?id=encodingscratchpad
36
37 IMPORTANT:  You _MUST_ follow all the steps outlined there for
38             Apache2, MySQL 5, etc. BEFORE you install Koha.
39
40 1.3 Set up apt sources for Git, Yaz and Zebra packages
41
42 Edit your /etc/apt/sources.list file and add the following:
43
44     # Index Data
45     deb http://ftp.indexdata.dk/debian etch main
46     deb-src http://ftp.indexdata.dk/debian etch main
47
48     # Backports
49     deb http://www.backports.org/debian etch-backports main contrib non-free
50
51 Backports packages are signed with a key you can install as follows:
52
53     $ sudo apt-get update
54     $ sudo apt-get install debian-backports-keyring
55
56 The Index Data packages are signed with a key you can install as follows:
57
58     $ wget http://ftp.indexdata.dk/debian/indexdata.asc
59     $ sudo apt-key add indexdata.asc
60
61 Run the following command to update your system:
62
63     $ sudo apt-get update
64     $ sudo apt-get -t etch-backports install git-core git-email
65     $ sudo apt-get install yaz idzebra-2.0 idzebra-2.0-doc
66
67 1.4 Get Koha
68
69 1.4.1 Option A: Download Koha via Git (optional)
70
71     $ git clone git://git.koha-community.org/pub/scm/koha.git kohaclone
72     $ cd kohaclone
73     $ git checkout -b myinstall origin
74
75 Note: for more information about Git, please see the Koha Git Usage Guide:
76
77     http://wiki.koha.org/doku.php?id=en:development:git_usage
78
79 1.4.2 Option B: Download Koha from http://download.koha-community.org
80
81     $ wget http://download.koha-community.org/koha-3.00.00-beta.tar.gz
82     ( Note: use the latest stable version)
83
84 1.5 Install additional Debian dependencies
85
86 IMPORTANT:  You should only use CPAN for Perl dependencies which are NOT
87             available from the package maintainer. You have been warned!
88
89 Using the debian.packages file included in the Koha source tree,
90 run the following:
91
92     $ sudo dpkg --set-selections < install_misc/debian.packages
93
94 Now start dselect:
95
96     $ sudo dselect
97
98 Choose [I]nstall and accept packages to be installed (hit return)
99
100 (may take a while)
101
102 Choose [C]onfigure, [R]emove and [Q]uit until dselect has completed.
103
104 1.6 Install Perl dependencies that aren't packaged into Debian Etch
105 sources
106
107 Run the following command:
108
109     $ sudo cpan MARC::Record Class::Accessor MARC::Charset MARC::File::XML \
110                 Net::Z3950::ZOOM HTML::Template::Pro MARC::Crosswalk::DublinCore \
111                 PDF::Reuse PDF::Reuse::Barcode Data::ICal GD::Barcode::UPCE \
112                 XML::RSS Algorithm::CheckDigits::M43_001 Biblio::EndnoteStyle POE \
113                 Schedule::At DBD::SQLite GD SMS::Send HTTP::OAI IPC::Cmd Locale::Currency::Format
114
115
116   WARNINGS:
117   1.6.1 A Perl library Koha depends on, MARC::File::XML may not work with Perl
118     5.10, see: http://bugs.koha.org/cgi-bin/bugzilla/show_bug.cgi?id=2309),
119
120   1.6.2 Recent versions of CGI::Session have caused some issues for users;
121   as of this release date, we suggest downloading the CGI::Session::Serialize::yaml
122   tarball direct from CPAN and install it directly rather than using the cpan command
123
124   1.6.3 There is a known but benign error in the test case for Barcode::Code128, 
125   which is required by PDF::Reuse::Barcode.  If this module is not installed, 
126   you can do a forced installation of Barcode::Code128.
127
128 Note: you may need to run CPAN initialization if you've not run cpan
129 before:
130
131     /etc/perl/CPAN/Config.pm initialized.
132     
133     CPAN is the world-wide archive of perl resources. It consists of about
134     100 sites that all replicate the same contents all around the globe.
135     Many countries have at least one CPAN site already. The resources
136     found on CPAN are easily accessible with the CPAN.pm module. If you
137     want to use CPAN.pm, you have to configure it properly.
138     
139     If you do not want to enter a dialog now, you can answer 'no' to this
140     question and I'll try to autoconfigure. (Note: you can revisit this
141     dialog anytime later by typing 'o conf init' at the cpan prompt.)
142     
143     Are you ready for manual configuration? [yes]
144
145 When the configuration is completed CPAN will install the Perl modules.
146
147 2. Configuration of dependencies
148
149 2.1 Update root MySQL password (if dselect didn't do it for you already)
150
151     $ sudo mysqladmin password <password>
152
153 2.2 Create the Koha database
154
155     Create the database and user with associated privileges:
156
157     $ mysqladmin -uroot -p<password> create <kohadatabasename>
158     $ mysql -uroot -p<password>
159     
160     Welcome to the MySQL monitor.  Commands end with ; or \g.
161     Your MySQL connection id is 22
162     Server version: 5.0.32-Debian_7etch3-log Debian etch distribution
163     
164     Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
165     
166     mysql> grant all on <kohadatabasename>.* to '<kohadatabaseuser>'@'localhost' identified by '<kohadatabaseuserpassword>';
167     Query OK, 0 rows affected (0.00 sec)
168
169     mysql> flush privileges;
170     Query OK, 0 rows affected (0.00 sec)
171
172     mysql> quit
173
174 2.3 Test your SAX Parser and correct where necessary
175
176     You must be sure you're using the XML::LibXML SAX parser, not Expat or PurePerl, both of which have outstanding bugs with pre-composed characters. You can test your SAX parser by running:
177
178     $ cd koha
179     $ misc/sax_parser_print.pl 
180
181     You should see something like::
182
183     XML::LibXML::SAX::Parser=HASH(0x81fe220)
184
185     If you're using PurePerl or Expat, you'll need to edit your
186     ini file, typically located at:
187
188     /etc/perl/XML/SAX/ParserDetails.ini
189
190 2.4 Install DBD::mysql Perl module
191
192 In order to handle UTF-8 correctly, Koha requires at least version 4.004
193 of the DBD::mysql Perl module. However, Debian Etch has a stable package
194 only for version 3.0008, so it is necessary to install the module  from CPAN.
195 DBD::mysql's test suite needs to use a MySQL 'test' DB which doesn't exist 
196 anymore. So there are two options to install DBD::mysql: 
197
198   (1) install without test suite,
199   (2) install with test suite requiring a test MySQL DB creation.
200
201 2.4.1 Install without test suite
202
203 Force install DBD::mysql:
204
205     $ sudo cpan
206     cpan> force install DBD::mysql
207
208 2.4.2 Create test database in order to install DBD::mysql
209
210 Because of DBD::mysql's test suite, it is necessary to temporarily create a
211 test database and user:
212
213     $ mysql -uroot -p<password>
214
215     Create the database and user with associated privileges:
216
217     Welcome to the MySQL monitor.  Commands end with ; or \g.
218     Your MySQL connection id is 22
219     Server version: 5.0.32-Debian_7etch3-log Debian etch distribution
220
221     Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
222
223     mysql> create database test;
224     Query OK, 1 row affected (0.00 sec)
225
226     mysql> grant all on test.* to 'test'@'localhost' identified by 'test';
227     Query OK, 0 rows affected (0.00 sec)
228     (test database, user, and password can be different if need be)
229
230     mysql> flush privileges;
231     Query OK, 0 rows affected (0.00 sec)
232
233     mysql> quit
234
235 Next install DBD::mysql:
236
237     $ sudo cpan
238
239     cpan> o conf makepl_arg
240     (get current value of this CPAN parameter)
241
242     cpan> o conf makepl_arg "--testdb=test --testuser=test --testpass=test"
243
244     cpan> install DBD::mysql
245
246     cpan> o conf makepl_arg ''
247
248     OR 
249
250     cpan> o conf makepl_arg '<old setting>'
251
252     (restore this setting so as to not interfere with future CPAN installs).
253
254
255 Finally, remove the test database:
256
257     $ mysql -uroot -p<password>
258
259     mysql> drop database test;
260     Query OK, 1 row affected (0.00 sec)
261
262     mysql> exit
263     Bye
264
265 3. Run the Koha installer
266
267     $ perl Makefile.PL
268     ( answer questions )
269     $ make
270     $ make test
271     $ sudo make install  #If doing a -dev install, skip the sudo!
272
273 4. Configure and start Apache
274     $ sudo ln -s /etc/koha/koha-httpd.conf /etc/apache2/sites-available/koha
275     (note that the path to koha-httpd.conf may be different depending on your
276     installation choices)
277
278 Add the following lines to /etc/apache2/ports.conf:
279
280     Listen 80
281     Listen 8080
282
283 (Note: It may be productive to use different DNS entries and NamedVirtualHosts
284 directives in Apache to separate the staff and OPAC clients, to eliminate a 
285 cross-client authentication nuisance, but it will work fine like this.)
286
287 Run the following commands:
288
289     $ sudo a2enmod rewrite
290     $ sudo a2ensite koha
291     $ sudo apache2ctl restart
292
293 Note: you may still see the usual Apache default site if your VirtualHost
294 configuration isn't correct.  The command "sudo a2dissite default" may be a
295 quick fix, but may have side-effects.  See the Apache HTTPD manual section on
296 virtual hosts for full instructions.
297
298 5. Configure and start Zebra
299
300 Note: it's recommended that you daemonize the Zebra process and add it to your
301 startup profile. For a non-production test/development installation, running 
302 Zebra from the command line can be useful.  Otherwise you will want zebrasrv
303 running when Apache/Koha is.
304
305 Note: it's also recommended that you create a Koha system user, which you will
306 have specified during the install process. Alternatively, Zebra can be
307 configured to run as the root user.
308
309 Option 1: run the Zebra process from the command line:
310
311 1.1 Zebra Search Server
312
313 This process send responses to search requests sent by Koha or
314 Z39.50/SRU/SRW clients.
315
316     $ sudo -u ${KOHA_USER} zebrasrv -f /etc/koha/koha-conf.xml
317     (note that the path to koha-conf.xml may be different depending on your
318     installation choices)
319
320 Note: the user you run Zebra as will be the only user with write permission
321       on the Zebra index; in development mode, you may wish to use your
322       system user.
323
324 1.2 Zebra Indexer
325
326 Added/updated/deleted records in Koha MySQL database must be indexed
327 into Zebra. A specific script must be launched each time a bibliographic
328 or an authority record is edited.
329
330     $ sudo -u ${KOHA_USER} misc/migration_tools/rebuild_zebra -z -b -a
331     NOTE: This script should be run as the kohauser (the default is 'koha').
332
333 Option 2: run the Zebra process as a daemon, and add to startup process:
334
335 Note that references to $SCRIPT_DIR refer to the directory where
336 Koha's command-line scripts are installed, e.g., /usr/share/koha/bin.
337
338 1.1 Zebra Search Server
339
340     $ sudo ln -s ${SCRIPT_DIR}/koha-zebra-ctl.sh  /etc/init.d/koha-zebra-daemon
341     (Note: ${SCRIPT_DIR} is /usr/share/koha/bin/ by default in a standard install)
342     $ sudo update-rc.d koha-zebra-daemon defaults
343     ( Note: see man chkconfig(8) on other distros )
344
345     $ sudo ${SCRIPT_DIR}/koha-zebra-ctl.sh start
346
347 1.2 Zebra Indexer
348
349 Add an entry in Koha user crontab to scheduled added/updated/deleted records
350 indexing by Zebra with this command:
351
352   <path/to/koha>/misc/migration_tools/rebuild_zebra -z -b -a
353
354 See check misc/cronjobs/crontab.example for usage examples.
355 NOTE: This job should be setup under the kohauser (the default is 'koha').
356
357 6. Run the Web Installer, populate the database, initial configuration of settings
358
359     Point your browser to http://<servername>:8080/
360
361     It should redirect you to the Web Installer where you can continue the setup.
362     You can install the sample data for libraries, patrons, etc. via the Web Installer
363
364 7. What next?
365
366     Once the installer has completed, you can import and index MARC records from the
367     command line thusly (Note: you can also use the 'Stage MARC records for import' from
368     the Tools area of Koha's Staff Client to import a batch of MARC records):
369
370     $ export KOHA_CONF=/usr/share/koha/etc/koha-conf.xml
371       (note: use the correct path to your koha-conf.xml)
372
373 7.0 Schedule crontab jobs
374     Do you want Koha to:
375         send mail?
376         automatically index added records?
377         generate overdue or advance notices?
378         mark items lost after they are long overdue?
379         assess fines?
380
381     All these and other regularly scheduled background tasks are handled by crontab.
382     You need to examine the example crontab file, edit a copy to your liking, and schedule it.
383
384     $ crontab -l           # just check if you have any other jobs already scheduled
385     $ cp ./misc/cronjobs/crontab.example my_crontab
386     $ vi my_crontab        # select jobs or adjust times.
387     $                      # If you had already scheduled lines, add them at the bottom.
388     $ crontab my_crontab   # This overwrites your scheduled jobs with the new ones.
389
390     If you want to check to confirm, you can run crontab -l again.
391     NOTE: Be sure to add KOHA_CONF and PERL5LIB vars to the top of your cron jobs.
392
393 7.1 Import:
394     Bibliographic data in MARC21 format
395     $ misc/migration_tools/bulkmarcimport.pl -file /path/to/marc.iso2709
396     Authority data in MARC21 format
397     $ misc/migration_tools/bulkauthimport.pl -file /path/to/auth.iso2709
398
399 7.2 Fast Index:
400     $ misc/migration_tools/rebuild_zebra.pl -b -w
401
402     Once the indexing has completed, you will be able to search for records in your system.
403     NOTE: This script should be run as the kohauser (the default is 'koha').
404
405 7.3 Schedule regular index updates
406     You need to run rebuild_zebra.pl -b -a -z as a regular cron job in orde to pick up new bibs
407     and items as you add them. Check misc/cronjobs/crontab.example for usage examples. See 7.0 above.
408     NOTE: This job should be setup under the kohauser (the default is 'koha').
409
410 7.4 To enable public Z39.50/SRU servers, you'll need to edit your koha-conf.xml and
411     change the <listen> options to listen on a TCP port; then restart the zebra daemon.
412
413 UPGRADE
414 =======
415 If you are upgrading from a previous installation of Koha 3, you can
416 use the following:
417
418  perl Makefile.PL --prev-install-log /path/to/koha-install-log
419  make
420  make test
421  sudo make upgrade
422
423 Uninstall Instructions
424 =============================
425 1) Stop Services:
426    $ sudo a2dissite koha
427    $ sudo rm /etc/apache2/sites-available/koha
428    $ sudo apache2ctl restart
429
430    $ sudo update-rc.d koha-zebra-daemon remove
431    $ sudo rm /etc/init.d/koha-zebra-daemon
432
433 2) Remove Database and Indexes
434
435    # MySQL
436    $ mysql -u<kohauser> -p<kohapassword>
437    > drop database koha;
438
439    # Zebra Indexes
440    $ zebraidx -c <prefix>/etc/zebradb/zebra-biblios.cfg -g iso2709 -d biblios init
441    $ zebraidx -c <prefix>/etc/zebradb/zebra-authorities.cfg -g iso2709 -d authorities init
442
443 3) Remove Koha Install Directories and Configuration Files
444    Don't forget about any crontab entries
445
446 Tested on the following operating environments
447 ==============================================
448 - Debian Etch 4.0
449
450 Installer Bug reports
451 =====================
452 Please send any installer bug reports to jmf AT liblime DOT com
453
454 Other Notes
455 =====================
456 This file is part of Koha
457
458 Koha is free software; you can redistribute it and/or modify it under the
459 terms of the GNU General Public License as published by the Free Software
460 Foundation; either version 2 of the License, or (at your option) any later
461 version.
462
463 Koha is distributed in the hope that it will be useful, but WITHOUT ANY
464 WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
465 A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
466 You should have received a copy of the GNU General Public License along
467 with Koha; if not, write to the Free Software Foundation, Inc.,
468 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.