summaryrefslogtreecommitdiff
path: root/sql-ledger/doc/faq.html
blob: 0f6f237cae16ba205539f564fcae1d46bca6806a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
<ul>
<p><li><h4>Sub-menus and Apache 2.0</h4>
Some versions of Apache 2.0 (2.0.44+) don't expand sub-menus and generate
a 500 error at various points. This stems from workaround developed for
earlier versions of Apache 2.0. It looks like this workaround must now be
disabled. If you get an error or the sub-menus don't expand edit
SL/Form.pm and comment lines 80-82.
<pre>
  # for Apache 2 we escape strings twice
#  if (($ENV{SERVER_SOFTWARE} =~ /Apache\/2/) && !$beenthere) {
#    $str = $self->escape($str, 1);
#  }
</pre>


<p><li><h4>About installation</h4>
The easiest is to use the setup.pl script as root.
You don't need to know very much about your system, just login as root,
run 'perl setup.pl' and follow the prompts.
<p>setup.pl does not check for missing software packages and it is your
responsibility to make sure you have the required pieces
installed either from source or from a package supplied with your distro.

<p>Requirements are clearly indicated in the README file and on the
download page.


<p><li><h4>IDENT Authentication failed for user "postgres"</h4>

This error has everything to do with the way the distros set up
access rights for postgres. They are way too restrictive and leave you
wondering what to do next.

<p>Do yourself a favour and change authentication in pg_hba.conf to

<pre>
local           all              trust</pre>

<p>until you have figured what all this stuff in pg_hba.conf does.

<p><b>NOBODY</b>, I repeat, <b>NOBODY</b>, from the Internet will be able to
connect to postgres. You can't even connect from the inside LAN, the only
one who is allowed to connect are clients originating from localhost.

<p>Read a bit about the different authentication settings and change
them as you see fit.
It is all described in detail in pg_hba.conf

<p>If you can't find the file, there is a wonderful utility called find.
Use it.
<pre>
# find /usr/local -type f -name 'pg_hba.conf'
</pre>


<p><li><h4>DBD-Pg for Mandrake 9.0</h4>
Mandrake did not package a compiled DBD-Pg package again, so install DBD-Pg
from the source package.
Install perl-DBD-Pg-1.01-4mdk.i586.rpm from the 'contrib' area.
(Mandrake / 9.0 / contrib / RPMS)

<p><li><h4>LaTeX error</h4>
If for some reason LaTeX produces an error message check for strange
characters in your account description and parts description
and use \usepackage[latin1]{inputenc} in the preamble.


<p><li><h4>LaTeX templates</h4>
If you don't want to edit tex code by hand,
you could use Lyx, Abiword, or any WYSIWYG editor capable of exporting
latex code.
To do that you must change the tokens for parameters <% and %> to something
like << and >>. % is the comment character in tex. There is also a
pagebreak block which must be commented out.
When you are done with the changes
replace << and >> with <% and %> and uncomment the pagebreak block.

<p>LaTeX is difficult but it also offers a much superior interface to produce
professionally looking forms in postscript and PDF format.
Unfortunately with power comes some pain too.


<p><li><h4>W3M</h4>
pass terminal=mozilla when you start w3m
<pre>$ w3m -F http://localhost/sql-ledger/login.pl?terminal=mozilla</pre>

To use without frames
<pre>$ w3m http://localhost/sql-ledger/login.pl?terminal=lynx</pre>

<p><li><h4>PDF option disappeared</h4>
Edit sql-ledger.conf and set $latex = 1;
<br>sql-ledger.conf is perl code, check if it compiles, if it does not
the internal defaults are used which set $latex to 0, hence no PDF option.

<p><li><h4>SQL-Ledger on Mac Os X 10.1.5</h4>
Jaume Teixi put together
<a href=http://www.rocacorbit.com/techdocs/sql_ledger_os_x.html>
installation instructions</a> to run SL on a Mac.
<br>The instructions are for 1.8.5 however they still apply to any of the
newer versions.

<p><li><h4>Installation on Windows (WIN32)</h4>
<ul>
<li>install Apache, perl,
<a href=http://techdocs.postgresql.org/guides/InstallingOnWindows>Postgres</a>
or Oracle, DBI and the appropriate DBD
module
<br>if you can't compile DBD-Pg here is a precompiled
<a href=http://www.edmund-mergl.de/export/>DBD-Pg module</a>
<li>download the latest version of <a href=/cgi-bin/nav.pl?page=source/index.html&title=Download>SQL-Ledger</a>
<li>extract the files to c:\apache\sql-ledger
<li>download
<a href=../source/sql-ledger-windows.tar.gz>sql-ledger-windows.tar.gz</a>
and extract the files to c:\apache\sql-ledger
    <br>the shebang line is changed to c:\perl\bin\perl and the symlinks
    are regular files
<br>answer with 'Yes' to overwrite existing files.
<li>edit c:\apache\conf\httpd.conf and add
<pre>
Alias /sql-ledger/ "C:/apache/sql-ledger/"
&lt;Directory "c:/apache/sql-ledger"&gt;
  AllowOverride All
  AddHandler cgi-script .pl
  Options +ExecCGI
  Order Allow,Deny
  Allow from All
&lt;/Directory&gt;

&lt;Directory "c:/apache/sql-ledger/users"&gt;
  Order Deny,Allow
  Deny from All
&lt;/Directory&gt;
</pre>

<li>start Apache
<li>start Postgres|Oracle
<li>connect to http://localhost/sql-ledger/admin.pl and setup users
and datasets
<li>connect to http://localhost/sql-ledger/login.pl and login

</ul>

<p><li><h4>Installation on Windows /w cygwin</h4>
<ul>
<li>install <a href=http://sources.redhat.com/cygwin/>cygwin</a>
Apache, perl, postgres, gcc and lynx
<li>install <a href=http://search.cpan.org/search?module=DBI>DBI</a>
<li>tar zxvf DBI-1.30.tar.gz
<li>cd DBI-1.30
<li>perl Makefile.PL
<li>make install
<li>install <a href=http://search.cpan.org/search?dist=DBD-Pg>DBD-Pg</a>
<li>tar -zxvf DBD-Pg-1.13.tar.gz
<li>export POSTGRES_INCLUDE=/usr/include/postgresql
<li>export POSTGRES_LIB=/usr/lib/postgresql
<li>cd DBD-Pg-1.13
<li>perl Makefile.PL
<li>make install
<li>edit /etc/apache/httpd.conf and add
<pre>
AddHandler cgi-script .pl
Alias /sql-ledger/ /var/www/sql-ledger/
&lt;Directory /var/www/sql-ledger&gt;
  Options +ExecCGI
&lt;/Directory&gt;

&lt;Directory /var/www/sql-ledger/users&gt;
  Order Deny,Allow
  Deny from All
&lt/Directory&gt;
</pre>
<li>install SQL-Ledger
<li>cd /var/www
<li>mkdir sql-ledger
<li>download <a href=/cgi-bin/download.pl?setup.pl>setup.pl</a> and save the file
in /var/www/sql-ledger
<li>cd /var/www/sql-ledger
<li>perl setup.pl
</ul>

<p><li><h4>What do I enter for the language</h4>
If you use English, nothing, if you want to use a foreign language for
the login screen and admin stuff enter the language code. All the
language specific files are in the locale directory. The long form for
the language is in the LANGUAGE file.

<p><li><h4>Mandrake 9.0 permission denied error</h4>
Mandrake says to add this to your commonhttpd.conf
<pre>
&lt;Directory /usr/local/sql-ledger&gt;
   AllowOverride All
   Options -MultiViews -Indexes -FollowSymLinks
   Order allow,deny
   Allow from all
&lt;/Directory&gt;

The way apache starts is it:
Blocks all access to the physical file system /
Opens access to the physical file system /var/www/html
Opens access to the physical file system /var/www/perl
Opens access to the physical file system /var/www/cgi-bin
Opens access to the physical file system /var/www/protected-cgi-bin 
Opens access to the physical file system /home/*/public_html
Opens access to the physical file system /home/*/public_html/cgi-bin
Opens access to the physical file system /var/www/icons
Opens access to the physical file system /usr/share/doc

Since you're trying to access files outside of those allowed paths, you
have to specifically allow it.  It's done this way because of some past
exploits with the pathnames.  Rather than trust that there will never be
another bug within apache that will let you get somewhere you don't
want, you set it up securely out of the box so that apache won't let
itself go somewhere that you don't want it to.
</pre>


<p><li><h4>Incorrect Dataset version</h4>
The dataset you are trying to use is not compatible with the version.
When you upgrade datasets use the same database user in the "User"
field as the one listed in the Database section for the user.


<p><li><h4>Mandrake 8.2</h4>
Mandrake did not include the package "perl-DBD-Pg-1.01-1mdk.i586.rpm"
You can install the package from Mandrake 8.1


<p><li><h4>printing to a printer</h4>
Setup a printer in the "Printer" field in the users preferences.
i.e lpr -Plaser
and set $latex = 1 in sql-ledger.conf
LaTeX must be installed for this to work.

<p>To send the document to the printer check the "Postscript" or "PDF" format,
enter the number of copies and click on the "Print" button.

<p>The printer field is available only when you edit the user's
preferences with admin.pl.

<p>Note: html format is for screen preview. Use your browser's
print function.


<p><li><h4>beginning balances</h4>
Add a GL Journal entry and enter the beginning balance for your accounts.
Use your balance sheet. If you also want to add open invoices, add the invoices
and make the appropriate adjustments. Your balance sheet includes these
amounts!


<p><li><h4>cost for parts and service</h4>
the cost will be updated when you purchase goods and services. You can
enter the cost manually. This is so you can have a cost on file without
making a purchase.


<p><li><h4>establish a beginning inventory</h4>
add the parts with a purchase invoice. Use the <b>real cost</b> for the items
not zero. If you use zero cost then the cost of goods will be zero when you
sell the item.


<p><li><h4>Assemblies</h4>
Assemblies are manufactured goods assembled from parts, services and
assemblies.  Because you do not buy assemblies you 'stock assemblies' by
adding assembled units to your inventory. The quantity for individual parts 
is reduced and the quantity for the assembly increased. To disassemble an
assembly you simply return the parts to inventory by entering a negative
quantity for the number of assemblies to stock.


<p><li><h4>customizing SQL-Ledger</h4>
The <a href=/cgi-bin/nav.pl?page=feature/api.html&title=Application%20Interface>application interface</a>
consists of a global and private interface.


<p><li><h4>DBD-Pg not installed</h4>

Most modern distributions now package DBD-Pg. If it is
not packaged follow this recipe to get it working.

<ul>
  <li>check if you have the header files for PostgreSQL
  <br>$ find / -name 'libpq-fe.h'
  <br>if nothing shows up install the development package for PostgreSQL
  <li>download and untar DBD-Pg
  <li>set the environment variables POSTGRES_LIB and POSTGRES_INCLUDE
  <li>cd to DBD-Pg directory
  <br>as ordinary user
  <br>$ perl Makefile.PL
  <br>$ make
  <br>$ make test
  <br>if all went well su to root
  <br># make install
  <li>remove DBD-Pg
</ul>


<p><li><h4>SuSE 8.1 installation</h4>
<ol>
<li>Install the following using YaST2:

<p>- perl-DBD-Pg
<br>- postgresql
<br>- postgresql-contrib
<br>- postgresql-devl
<br>- postgresql-docs
<br>- postgresql-libs
<br>- postgresql-perl
<br>- postgresql-server
<br>- postgresql-test

<p><li>Setup directories and paths for PostgreSQL:

<p>> sux -     (change to root)

<p>- If not done by the installation, setup disk directory for your db:
<br># mkdir /var/lib/pgsql/data
<br># chown postgres /var/lib/pgsql/data

<p><li>Initialize the database, and start it, as below:
<p>Note that there are man pages for initdb and pg_ctl.
          
<p># touch /var/log/pgsql
<br># chown postgres:postgres /var/log/pgsql
<br># sux postgres
  
<p>- Initialize postgres:
<br>> /usr/bin/initdb -D /var/lib/pgsql/data
<br>(creating ... Success...)

<p>- Start the postgres daemon:
<br>> /usr/bin/pg_ctl -D /var/lib/pgsql/data -l /var/log/pgsql start (start db)
<br>(postmaster successfully started)

<p><li>Quick-test the server (still as user postgres):

<p>- > psql -d template1
<br>(Welcome ... \q to exit psql)
<br>\q

<p>- Try setting up another db user:
   
<p>> createuser &lt;db-user&gt; (&lt;db-user&gt; should match an existing Linux user)
<br>Shall the new user be allowed to create databases? (y/n) y
<br>Shall the new user be allowed to create more new users? (y/n) n

<p>Unless a problem with DBD::Pg (perl interface), postgres is ready to go.

<p><li>If a previous sql-ledger database needs to be installed,
<br>do the following as postgres user.  Steps for dumping the old db,
   and building the new follow:

<p>> sux postgres
<br>> psql template1
<br>=# CREATE DATABASE my_database;  (create your database)
<br>=# \q
<br>> cd /var/lib/pgsql/backups        (assuming your backups are here)
<br>The next command should have been performed earlier from the
  previous installed version of postgres and your database:
<br>> pg_dump -d my_database.sql.bak   (from previous ver postgres)
<br>> cp my_database.sql.bak my_database.sql
<br>- Use vi to change all occurrances of 'current_date' to current_date
    in file my_database.sql .
<br>The vi command for this is :g/'current_date'/s//current_date/g
<br>> psql my_database < my_database.sql > my_database.log
<br>- Check my_database.log for errors.

<p><li>Download setup.pl and run it as root while on line to the internet:

<p># mkdir /usr/local/sql-ledger
<br># cd /usr/local/sql-ledger
<br># ./setup.pl
<br>- Enter i
<br>- Enter httpd owner and group if different than displayed default.
<br>(Download occurs and status is displayed...)

<p><li>Setup the new sql-ledger with database.

<p>- Surf to http://my_computer/sql-ledger/admin.pl
<br>- Click enter (no password needed).
<br>->Database Administration
<br>- Leave fields Host and Port enpty for local installations.
<br>          - Enter your database name in the "Connect to" field.
<br>	  - Enter the database user you setup (postgres, sql-ledger, etc.)
<br>	  - Enter a password, only if a password is assigned to the database.
<br>	  - To update an existing sql-ledger database: ->Update Database
<br>	     Should see: The following Datasets need to be updated.
<br>	     ->Continue
<br>	     Do more admin.  You will need to setup at least one login.
<br>	     To exit: ->Database Admin

<p><li>See if it works:

<p>   - Surf to http://my_computer/sql-ledger/login.pl
<br>   - Enter the login name you just created.  Main menu screen should appear.
</ol>
				    


<p><li><h4>Redhat Installation</h4>

<ul>
<li>Install apache1.3.12-25.i386.rpm
<li>Install perl5.6.0-9.i386.rpm
<li>Install postgresql-7.0.2-17.i386.rpm
<li>Install postgresql-server-7.0.2-17.i386.rpm
<li>Install postgresql-devel-7.0.2-17.i386.rpm (POSTGRES_INCLUDE)
<li>tar xvzf DBI-1.14.tar.gz
<li>cd DBI-1.14
<li>perl Makefile.PL
<li>make
<li>make install
<li>cd ..
<li>tar xvzf DBD-Pg-0.95
<li>cd DBD-Pg-0.95
<li>export POSTGRES_LIB=/usr/lib/pgsql
<li>export POSTGRES_INCLUDE=/usr/include/pgsql
<li>perl Makefile.PL
<li>make
<li>make install
<li>install SQL-Ledger
</ul>

<p>Some of the applications have newer versions however the installation
instructions remain the same. Just substitute the old version with a newer
version.


<p><li><h4>Debian Installation</h4>

<ul>
<li>unpack into /usr/local/www/sql-ledger
<li>install postgresql (Dselect)
<li>install apache (Dselect)
<li>install libdbi-perl (Dselect)
<li>install libdbd-pg-perl (Dselect)
<li>install libpgperl (Dselect)
<li>modify /etc/postgresql/postgresql.conf
    <br>TCPIP_SOCKET = 1
<li>create a user for managing SQL-Ledger databases
<br>from root
<br>su postgres
<br>$ createuser -d sql-ledger
<br>if you use passwords to access postgres set the user up with a password
<br>$ createuser -d -P sql-ledger
<li>change /etc/apache/httpd.conf and add
<pre>
AddHandler cgi-script .pl
Alias /sql-ledger/ /usr/local/www/sql-ledger/
&lt;Directory /usr/local/www/sql-ledger&gt;
  Options +ExecCGI
&lt;/Directory&gt;

&lt;Directory /usr/local/www/sql-ledger/users&gt;
  Order Deny,Allow
  Deny from All
&lt;/Directory&gt;
</pre>
<li>restart apache
<li>change fileownership of users and templates to www-data
    <br>chown www-data: users templates
<li>From browser enter http://localhost/sql-ledger/admin.pl
<li>Login as the postgres user (account manager) you have created (above)
<br>Create a DB
<br>Create users

<li>then enter http://localhost/sql-ledger/login.pl
<br>Login as one of the users you have just created

</ul>

<p>
The long version was provided by Gordon Haverland.
<p>
<ul>
<li>You need to unpack the SQL-Ledger package (compressed tar archive)
    someplace. Unpacking it in<pre>
      /usr/local/www/sql-ledger.</pre>
    Remember where you have unpacked it.
<li>SQL-Ledger requires that the PostgreSQL database be installed.
This is a very full-featured database, and has many associated
packages.  SQL-Ledger requires version 7.0 or better.  The name
of the basic package on Debian is postgresql.  To find if you
already have postgresql installed, and if so what version, the
following command should work:<pre>
      dpkg -l | grep -i 'ii  postgresql '</pre>
    A typical response would be:<pre>
      ii  postgresql     7.1.3-5        Object....[stuff deleted]</pre>
    Indicating, that version 7.1.3 is installed (the -5 is a
    Debian patch level).  You can use dselect or apt-get to install
    postgresql if you need to.  You can visit the Debian maintainer's
    page for much more information on related packages at<pre>
      http://people.debian.org/~elphick/postgresql/</pre>
    Older versions of Debian's PostgreSQL installation use a file
    called postmaster.init, while newer versions use a file called
    postmaster.conf, either residing in /etc/postgresql.
<li>SQL-Ledger requires a HTTP server (or daemon) which is capable of
    handling CGI scripts.  Apache is the one which is recommended,
    version 1.3 or better.  Debian calls the base package apache.
    Debian has two alternative versions of Apache, one with mod-perl
    (apache-perl) support compiled in, and the other with SSL 
    (secure sockets layer - apache-ssl) support.  SQL-Ledger doesn't
    require mod-perl or SSL support, but works with either if
    you need it installed for other functions you have.  Older versions
    of Debian Apache installations, spread the configuration of the
    server across 3 files (srm.conf, access.conf and httpd.conf).
    Newer versions have consolidated all of this to httpd.conf.
<li>SQL-Ledger uses the Data Base Interface perl module for communication
    with PostgreSQL.  The CPAN (Comprehensive Perl Archive Network)
    name for this module is DBI.  Debian calls this module
    libdbi-perl.  You should probably deselect (or apt-get) the
    Debian version of this module to minimize upgrading headaches in
    the future.
<li>DBI requires the use of an implementation specific Data Base
    Driver.  In our case, we need the PostgreSQL specific one.
    CPAN calls this module DBD::PG, Debian calls it libdbd-pg-perl.
    You should use dselect (or apt-get) to install it.
<li>One more layer of Perl - PostgreSQL support is needed.  Debian
    calls this last package libpgperl.  Use dselect or apt-get to
    install it.  (You should be able to install all 5 packages at
    one time.)
<li>We need to allow your PostgreSQL database to accept queries
    in a network manner.  To do this, we need to change the value
    of the TCPIP_SOCKET to 1.  In newer
    PostgreSQL installs, this variable will be someplace in 
    /etc/postgresql/postgreslq.conf (older installs will be
    postmaster.init, same directory.  Note: you shouldn't have
    both files there.)  Start up your favorite text editor, find
    the line with that variable on it, change the "no" to a "yes",
    and make sure the line isn't commented out (a "#" in front
    of it on the same line).
<li>PostgreSQL has a set of users and passwords independent of
    normal user logins.  We need to set up a PostgreSQL user
    to "own" the SQL-Ledger data (choose a name that makes sense
    to you, it shouldn't be "root" or "postgres").  The (PostgreSQL)
    program for doing this is called "createuser".  To make this
    SQL-Ledger owner user, we first need to "become" the PostgreSQL
    superuser (on Debian, this is "postgres"), and then we will
    run the createuser program.  So, once we are logged in as root:
<pre>
      # su postgres
      $ createuser -d sql-ledger
    ...
      $ exit
      # 
</pre>
    As shown above, we then typed "exit" after createuser was done,
    to stop being the "postgres" user.  The "-d" switch (you called
    also use "--createdb") specifies that this user can create
    databases.
<li>We need to adjust the configuration of the HTTP server Apache
    next.  Older Apache installations (srm.conf, access.conf and
    httpd.conf) need changes in srm.conf and httpd.conf.  Newer
    installations just need to edit /etc/apache/httpd.conf.  First,
    we need to instruct the server that files that end in ".pl"
    are to be treated as "cgi-script"s (srm.conf if separate).<pre>
      AddHandler cgi-script .pl</pre>
    Second, we need to map our SQL-Ledger installation to be easy
    for users to find it (in srm.conf if separate).<pre>
      Alias /sql-ledger/ /usr/local/www/sql-ledger/</pre>
    The "/" at the end of sql-ledger in both strings is important!
    Next, we need to allow the server to execute files from those
    directories, include things and follow links.  This information
    is in httpd.conf (old or new installations).<pre>
      &lt;Directory /usr/local/www/sql-ledger&gt;
        Options ExecCGI Includes FollowSymLinks
      &lt;/Directory&gt;</pre>
    If we decided to put SQL-Ledger somewhere other than
    /usr/local/www/sql-ledger, we would use different paths above.
<li>All the files in the "users" and "templates" subdirectories
    of /usr/local/www/sql-ledger need to be owned by "www-data".<pre>
      # cd /usr/local/www/sql-ledger
      # chown www-data:www-data users templates users/members</pre>
    You may get an "error" about users/members not existing.  It
    is safe to ignore this error.
<li>Restart the apache server.<pre>
      /etc/init.d/apache restart</pre>
<li>From a browser, visit the URL<pre>
      http://localhost/sql-ledger/admin.pl</pre>
<li>Login as the PostgreSQL user responsible for the SQL-Ledger
    database you set up.  Create a database and create
    at least one user.  (It's not a good idea to access your
    SQL-Ledger data as the "owner" of the data on a regular basis.)
<li>Visit<pre>
      http://localhost/sql-ledger/login.pl</pre>
    and login as the user you created</pre>

</ul>


<p><li><h4>login.pl has compilation error</h4>

This could be because of a missing configuration file in the users directory

<p>check the permission for the users directory. The directory must be
set writeable for the webserver. If your webserver runs under nobody.nogroup
set it to
<pre>
drwxrwx--x   2 johndoe  nogroup    1024 May 26 16:49 users

or

drwx--x--x   2 nobody   nogroup    1024 May 26 16:49 users
</pre>


<p><li><h4>script not executing, shows in browser instead</h4>

Add

<pre>
  AddHandler cgi-script .pl
</pre>

in your httpd.conf file.


<p><li><h4>unknown terminal!</h4>
the frontend script couldn't figure out which browser you are using
<p>include the terminal variable on the URL
<pre>
  http://localhost/sql-ledger/login.pl?terminal=lynx</pre>
<p>Valid terminal variables are lynx and mozilla


<p><li><h4>permission denied at filesystem level</h4>

Check if your web server has write permission to write to the following
files and directories:
<pre>
  users/
  templates/
  users/members

  # chown nobody:nogroup users templates users/members
</pre>


<p><li><h4>permission denied to access tables</h4>
The user you entered in the "Database section" must be a valid
database user who has the rights to access the tables.

<p>If the tables are owned by 'john' and you enter 'mary' as the dba
you might run into this problem if mary doesn't have the rights to
access tables owned by john.


<p><li><h4>html and graphics files don't show up on screen</h4>

Enable Includes and FollowSymlinks Options in your httpd.conf file
<pre>  &lt;Directory /usr/local/sql-ledger&gt;
    Options ExecCGI Includes FollowSymlinks
  &lt;/Directory&gt;
</pre>


<p><li><h4>Can I use mySQL</h4>

No. mySQL lacks certain features required by SQL-Ledger.


<p><li><h4>switch display to a foreign language</h4>

Load your preferences and select the language.
<br>Language selection is in accordance to 
<a href=http://www.unece.org/cefact/locode/service/main.htm>
ISO 3166-1</a> standards.


<p><li><h4>Text shows in English when I use a foreign language</h4>

This is because the corresponding hash entry is missing.
Add the missing text in the locale/cc/all or locale/cc/missing
file and run 'perl locales.pl' to rebuild the individual files.

<br>cc refers to the country code.


<p><li><h4>switch to a foreign language for the login and admin screen</h4>

Edit sql-ledger.conf and enter the code for the variable
$language. If your language specific files are in 'locales/cc', enter 'cc'


</ul>

<p>
<hr>
<a name=security>
<h1>SQL-Ledger security</h1>
</a>

<ul>
<li>The security features built into SQL-Ledger provide encrypted passwords
and access control which makes it fairly safe out of the box to run even in
front of a firewall.
Some precautions which are out of our control must be taken though.
It matters where you install SL and how you configure your web and SQL server.

<pre>
  Typical setups:
  
  /usr/local/vh/www                   <- DocumentRoot for virtual host
  /usr/local/vh/sql-ledger            <- Alias for sql-ledger
  /usr/local/vh/users                 <- users directory out of reach

<hr width=60% align=left>
  /usr/local/vh/www                   <- DocumentRoot for virtual host
  /usr/local/vh/www/sql-ledger        <- Alias for sql-ledger
  /usr/local/vh/www/sql-ledger/users  <- users configuration files and tmp space

  &lt;Directory /usr/local/vh/www/sql-ledger/users&gt;  <- disable webserver access
    Order Deny,Allow                                 for users directory
    Deny from All
  &lt;/Directory&gt;

</pre>

The location for the users directory can be specified in sql-ledger.conf

<p><li>Set permission for the users and templates directory to 711
(most restrictive)

<p><li>If you do not want anyone to change the templates with the built-in
editor set the files in templates/directory/ to read only or disable
the menu item to edit the templates.

<p><li>For PostgreSQL you can set who has access to the server in the file
pg_hba.conf
<br>Authentication crypt does not work because not all SQL servers
accept encrypted passwords.

<p><li>in addition you can secure the tables from unauthorized access by
setting up a different database user and GRANT rights. For instance,
users without DELETE rights will still be able to use the program, change
customers or vendors but will not be able to delete transactions.
To lock all the tables GRANT SELECT rights only.

<p><li>Other security options include a secure shell, your webserver's
authentication system, SSL, encrypted tunnels, ...

</ul>

</BODY>
</HTML>