PostgreSQL installatie op Ubuntu

Uit EekBoek
Naar navigatie springenNaar zoeken springen

PostgreSQL-8.4 op een schone Ubuntu 10.10 server

Opmerking: Deze procedure is nog in ontwikkeling en is nu nog niet bruikbaar

Het volgende is een overzicht van de stappen welke doorlopen moeten worden in het opzetten van een PostgreSQL database voor EekBoek. De stappen zijn voor een PostgreSQL server op een Ubuntu machine welke benaderd wordt via een Windows 7 client.

Aannames:

  • de database server is 192.168.178.23
  • de windows client is 192.168.178.34
  • de database user die de database gaat benaderen is 'ebuser' met password 'eekboek'

Het volgende geïnstalleerd via tasksel:

  • ssh
  • postgresql
  • printserver
  • samba fileserver

Hierna de volgende aanpassingen:

Samba:

  • workgroup = ( Standaard = MSHOME )
  • smbpasswd –a gebruikersnaam

Naar mijn informatie is ssh, printserver en het samba gedoe niet nodig -- jv.

Aanpassen PostgreSQL configuratie.

File: /etc/postgresql/8.4/main/postgresql.conf

# listenadresses = 'localhost'

wijzigen in

listenadressses = '*'

Hiermee wordt het mogelijk gemaakt om de database server via het netwerk te benaderen.

Voor encryptie als aanvulling instellen:

# password_encryption = on

aangepast in

password_encryption = on

File: /etc/postgresql/8.4/main/pg_hba.conf door encrypted toegevoegd: ???

local	all	all	md5

voor netwerk buiten local toevoegen

host	all	all	198.168.178.0/24	md5	# computers in netwerkreeks toegang 

Toevoegen pgadmin3 als hulpmiddel om privileges en database te controleren

sudo apt-get install pgadmin3

Hierna herstarten:

sudo /etc/init.d/postgresql  restart

Gebruikers aanmaken. We kiezen als voorbeeld de user 'ebuser' met password 'eekboek':

sudo -u postgres createuser ebuser
-> Shall the new role be a superuser? (y/n) NO
-> Shall the new role be allowed to create database? (y/n) YES
-> Shall the new role be allowed to create more new roles? (y/n) NO
sudo -u postgres psql template1
-> #
ALTER USER ebuser WITH UNENCRYPTED PASSWORD 'eekboek';
-> ALTER ROLE
-> #
\q

Tot zover de voorbereidingen voor de installatie van EekBoek. Hierna EekBoek geïnstalleerd. Noot: deze procedure dient nog te worden verbeterd.

Controleren: Ubuntu 10.10 server met PostgreSQL en CLI ebshell werkt lokaal.

Serverzijde:

Poort 5432 controle met telnet localhost 5432
psql -h 192.168.178.23 template1
perl -wlMDBI -e 'DBI->connect("dbi:Pg:dbname=template1;host=192.168.178.23","ebuser","eekboek")'

Clientzijde

Noot: bij nieuwe Windows 7 staat standaard telnet uit!) Noot: wat houdt dat in? -- jv

Proberen in command window:

ping 192.168.178.23
telnet 192.168.178.23 5432

Serverzijde

> psql template1

systeem antwoord: template1-#

> telnet localhost 5432
trying ::1...
Connected to localhost.
Escape character is '^]'.
Connection closed by foreign host.
> telnet 192.168.178.23 5432
connected to 192.168.178.23.
Escape character is '^]'.
Connection closed by  foreingn host.
>:~$ psql -h 192.168.178.23 template1
Password:
psql (8.4.5)
SSL connection (cipher: DHE-RSA-AES256-SHA, bits: 256)
Type "help" for help.

template1=#

Stel voor een aparte postgres gebruiker voor eekboek aan te maken met de naam

aleidus@Gaffel:~$ sudo su postgres -c createuser
[sudo] password for aleidus:
Enter name of role to add: ebuser
Shall the new role be a superuser? (y/n) n
Shall the new role be allowed to create databases? (y/n) y
Shall the new role be allowed to create more new roles? (y/n) n

$ psql -h 192.168.178.23 template1 ebuser
> Password for user ebuser:
> psql: FATAL:  password authentication failed for user "ebuser"
> FATAL:  password authentication failed for user "ebuser"

Opmerking ebuser gaat mis bij encrypted password. Dus unencryted instellen.

sudo su postgres -c pgsql template1

postgres=# alter user ebuser unencrypted password '. . . . . .';
ALTER ROLE
postgres=# \q

aleidus@Gaffel:~$ psql -h 192.168.178.23 template1 ebuser
Password for user ebuser:
psql (8.4.5)
SSL connection (cipher: DHE-RSA-AES256-SHA, bits: 256)
Type "help" for help.

Testen ebuser voor aanmaken van database.

template1=> create database foo;
CREATE DATABASE
template1=> drop database foo;
DROP DATABASE
template1=>
template1=> \q

Samenvattend: op de server draait de database server. Deze is via de internet poort toegankelijk. Database user ebuser is aangemaakt, heeft toegangsrechten en mag databases aanmaken en verwijderen.

Client: netbook met Windows 7 starter

In een command window:

C:\Users\Aleidus> ping 192.168.178.23
Pingen naar 192.168.178.23 met 32 bytes aan gegevens:
Antwoord van 192.168.178.23: bytes=32 tijd=4 ms TTL=64
Antwoord van 192.168.178.23: bytes=32 tijd=1 ms TTL=64
Antwoord van 192.168.178.23: bytes=32 tijd=2 ms TTL=64
Antwoord van 192.168.178.23: bytes=32 tijd=2 ms TTL=64

Ping-statistieken voor 192.168.178.23:
    Pakketten: verzonden = 4, ontvangen = 4, verloren = 0
    (0% verlies).

De gemiddelde tijd voor het uitvoeren van één bewerking in milliseconden:
    Minimum = 1ms, Maximum = 4ms, Gemiddelde = 2ms

C:\Users\Aleidus> telnet 192.168.178.23 5432

Na 5 minuten geen resultaat en enter ingedrukt = afgebroken. Blijkbaar gaat het mis, hoe dit op te lossen zie verder.

> psql -h 192.168.178.23 template1 ebuser
C:\Users\Aleidus>psql -h 192.168.178.23 template1 ebuser

psql wordt niet herkend als een interne of externe opdracht, programma of batchbestand.

Conclusie geen psql op netbook. Eerst psql voor Windows installeren, zie psql

file:///C:/Users/Aleidus/Downloads/postgresql-frontend-7.4.6

Complete Eekboek GUI installeren

De installatie bevat:

  • ActivePerl
  • EekBoek 2.00.02
  • de packages DBI en DBD::Pg

In een command window uitvoeren:

perl -MDBI -e "DBI->connect(q{dbi:Pg:dbname=template1;host=IP-adres host})"

Controle of Perl is geinstalleerd:

C:\Users\Aleidus> perl -v

This is perl 5, version 12, subversion 2 (v5.12.2) built for MSWin32-x86-multi-thread (with 8 registered patches, see perl -V for more detail)

Copyright 1987-2010, Larry Wall

Binary build 1202 [293621] provided by ActiveState 
http://www.ActiveState.com
Built Sep  6 2010 23:36:03

EekBoek opstarten:

C:\Users\Aleidus> ebshell
EekBoek 2.00.02 -- Copyright 2005-2010 Squirrel Consultancy
EekBoek is VRIJE software, ontwikkeld om vrij over uw eigen gegevens te kunnen beschikken. Met uw keuze voor het Microsoft Windows besturingssysteem geeft u echter alle vrijheden weer uit handen. Dat is erg triest.

Geef een unieke naam voor de nieuwe administratie. Deze wordt gebruikt voor rapporten en dergelijke.
^C

Installeren van DBD::Pg

DBD::Pg is de Perl PostgreSQL driver en kan als volgt worden geinstalleerd:

C:\Users\Aleidus> ppm install DBD::Pg
Downloading DBD-Pg-2.17.1...done
Unpacking DBD-Pg-2.17.1...done
Generating HTML for DBD-Pg-2.17.1...done
Updating files in site area...done
  13 files installed

C:\Users\Aleidus> perl -MDBI -e "DBI->connect(q{dbi:Pg:dbname=template1;host=ip-adres})"
DBI connect('dbname=template1;host=ip-adres',,...) failed: fe_sendauth: no password supplied at -e line 1

De laatste regel geeft Failed en zo te zien is fe_sendauth een regelmatig terugkomend woord waar het mis mee loopt.

C:\Users\Aleidus> perl -MDBI -e "DBI->connect(q{dbi:Pg:dbname=template1;host=ip-adres},q{ebuser},q{eekboek})"

Lijkt geaccepteerd. Waar het nu om gaat is dat je op de server een werkende EekBoek administratie opzet, in de PostgreSQL database. Als die op de server draait, dan gaan we kijken of we die op de client kunnen benaderen.

Installatie eekboek CLI

Dus de volgende stap is het opzetten van een administratie (neem gewoon de voorbeeldadministratie) op de server.

aleidus@Gaffel:~$ sudo aptitude show eekboek
Package: eekboek
New: yes
State: not installed
Version: 2.00.02-2
Priority: extra
Section: universe/perl
Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
Uncompressed Size: 1974k
Depends: perl, libterm-readline-gnu-perl, libdbi-perl (>= 1.40), libdbd-sqlite3-perl (>= 1.13), libarchive-zip-perl, libcarp-assert-perl
Suggests: eekboek-gui
Description: Bookkeeping software for small and medium-size businesses
EekBoek is a bookkeeping package for Dutch users; it creates reports such as a balance sheet ("Balans"), a general journal "Journaal"), a general ledger ("Grootboek") and a VAT report ("BTW-aangifte").

If you'd like to use EekBoek with a PostgreSQL back end (instead of the default SQLite), install the package eekboek-db-postgresql. If you'd like to use the Eekboek GUI, install the suggested package eekboek-gui. Homepage: http://www.eekboek.nl/

Helaas gaat het fout. En inderdaad, test even of internet werkt:

> ping 8.8.8.8
> ping google.nl

Overigens moet je naast 'eekboek' ook 'eekboek-postgres' installeren! Dat pakket heet eekboek-db-postgresql.

aleidus@Gaffel:~$ ping 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_req=1 ttl=55 time=24.4 ms
64 bytes from 8.8.8.8: icmp_req=2 ttl=55 time=20.8 ms
64 bytes from 8.8.8.8: icmp_req=3 ttl=55 time=20.5 ms
^C
--- 8.8.8.8 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2003ms
rtt min/avg/max/mdev = 20.581/21.952/24.453/1.771 ms
aleidus@Gaffel:~$ ping google.nl
ping: unknown host google.nl
aleidus@Gaffel:~$

Met de host is iets mis. Dit had te maken met het feit dat ik af wil van een vaste naam in de router/DHCP die ik niet kan wijzigen. Inmiddels het probleem van DNS opgelost.

Opnieuw eekboek-postgresql geinstalleerd zie hierbij het reultaat.

aleidus@Gaffel:~$ sudo aptitude install eekboek-db-postgresql
The following NEW packages will be installed:
  eekboek{a} eekboek-db-postgresql libarchive-zip-perl{a}
  libcarp-assert-perl{a} libdbd-pg-perl{a} libdbd-sqlite3-perl{a}
  libdbi-perl{a} libnet-daemon-perl{a} libplrpc-perl{a}
  libterm-readline-gnu-perl{a}
0 packages upgraded, 10 newly installed, 0 to remove and 13 not upgraded.
Need to get 1934kB of archives. After unpacking 6373kB will be used.
Do you want to continue? [Y/n/?] Y
Get:1 http://nl.archive.ubuntu.com/ubuntu/ maverick/main 
libarchive-zip-perl all 1.30-2 [95,9kB]
[ingekort]
aleidus@Gaffel:~$ sudo aptitude install eekboek
No packages will be installed, upgraded, or removed.
0 packages upgraded, 0 newly installed, 0 to remove and 13 not upgraded.
Need to get 0B of archives. After unpacking 0B will be used.

aleidus@Gaffel:~$ ebshell
EekBoek 2.00.02 (Nederlands) -- Copyright 2005-2010 Squirrel Consultancy

Geef een unieke naam voor de nieuwe administratie. Deze wordt gebruikt voor rapporten en dergelijke.

Naam [Mijn eerste EekBoek]: test

Geef het boekjaar voor deze administatie. De administatie begint op 1 januari van het opgegeven jaar.

Begindatum <1990..2020> [2010]: 2000

Geef een unieke code voor de administratie. Deze wordt gebruikt als interne naam voor de database en administratiefolders.
De standaardwaarde is afgeleid van de administratienaam en de begindatum.

Code [test_2000]:

U kunt een van de meegeleverde sjablonen gebruiken voor uw administratie.

  1: Lege administratie
  2: Eenmanszaak (ZZP)
  3: BV / NV
  4: Ondernemer
  5: EekBoek voorbeeldadministratie
  6: Vereniging / Stichting

Sjabloon <1..6> [5]: 1

Moet BTW worden toegepast in deze administratie [Ja]: nee

Kies het type database dat u wilt gebruiken voor deze administratie.

  1: postgres
  2: sqlite

Database <1..2> [2]: 1

Gereed om de administratieve bestanden en de database aan te maken.

Doorgaan [Ja]: ja
DBI connect('dbname=template1',,...) failed: fe_sendauth: no password supplied at /usr/share/perl5/EB/DB/Postgres.pm line 87
?Database probleem: fe_sendauth: no password supplied 
aleidus@Gaffel:~$

Hier gaat het mis met de path naar administratie bestanden. Ga nu naar de directory waar de EekBoek waar de administratiebestanden zijn neergezet. Dat is hoogstwaarschijnlijk .eekboek/admdir/test

$ cd ~/.eekboek/admdir/test

Pas het bestand eekboek.conf aan met editor. Zoek de sectie [database]:

[database]
name = test
driver = postgres

Voeg hieraan toe:

host = 192.168.178.23
user = ebuser
password = eekboek

Opslaan. Vervolgens doe je terwijl je nog steeds in die folder staat:

$ ebshell --init
aleidus@Gaffel:~/.eekboek/admdir/test_2000$ vi eekboek.conf
aleidus@Gaffel:~/.eekboek/admdir/test_2000$ ebshell --init
EekBoek 2.00.02 (Nederlands) -- Copyright 2005-2010 Squirrel Consultancy
%Lege database test_2000 is aangemaakt
NOTICE:  CREATE TABLE / PRIMARY KEY will create implicit index 
"constants_pkey" for table "constants"
[ingekort]
NOTICE:  CREATE TABLE / UNIQUE will create implicit index 
"journal_jnl_bsk_id_key" for table "journal"
                            Openingsbalans
Datum: 2000-01-01
test                                       EekBoek 2.00.02, 2010-12-02

RekNr   Grootboekrekening                             Debet     Credit
----------------------------------------------------------------------
----------------------------------------------------------------------
        TOTAAL Balans                                  0,00       0,00

aleidus@Gaffel:~/.eekboek/admdir/test_2000$

Dat werkt. Nu weer naar de client. Maak daar een folder c:\eekboek\admdir\test_2000. Maak daarin een bestand eekboek.conf aan met als inhoud:

[database]
name = test_2000
driver = postgres
host = 192.168.178.23
user = ebuser
password = eekboek

En dan .... terwijl je nog steeds in die folder staat, geef je de opdracht "ebshell". Hier het resultaat:

C:\eekboek\admdir>edit eekboek.conf

name     = test_2000
driver   = postgres
host     = 192.168.178.23
user     = ebuser
password = eekboek

Begint de file met

[database]

Maak daar een folder c:\eekboek\admdir\test_2000

Dus, samenvattend:

  • je maakt de administratie aan op de server
  • je past de betreffende eekboek.conf aan met de host, user en password informatie
  • je doet "ebshell --init"
  • verifieren met "ebshell"

Dan op de client:

  • folder aanmaken in eekboek\admdir
  • eekboek.conf aanmaken in die nieuwe folder
  • daar de [database] gegevens inzetten
  • uitproberen met "ebshell"

Dan op de client terug naar je home directory en ebshell intikken, dan krijg je de nieuwe administratie in het keuzelijstje erbij. Dit zijn de (eenmalige) stappen voor elke administratie die je op deze wijze wilt opzetten.

Als het goed is is je configfile eekboek\admdir\test_2000\eekboek.conf Zou je willen proberen:

C:\> dir eekboek\admdir\test_2000\eekboek.conf
C:\> ebwxshell -f eekboek\admdir\test_2000\eekboek.conf

Map van C:\eekboek\admdir\vvhlid_2008

C:\>ebwxshell -f eekboek\admdir\vvhlid_2008\eekboek.conf

Dat werkt en kan daar mee verder.