PostgreSQL installatie op Ubuntu
PostgreSQL-8.4 op een schone Ubuntu 10.10 server
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.
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?
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 door test van welke versie.
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 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.