Platform:Netwerk: verschil tussen versies

Uit EekBoek
Naar navigatie springenNaar zoeken springen
 
(75 tussenliggende versies door 3 gebruikers niet weergegeven)
Regel 1: Regel 1:
==== Inleiding ====
Deze handleiding gaat over de netwerkinstallatie van EekBoek, ofwel het ter beschikking stellen van EekBoek via een bedrijfsnetwerk, zodat meerdere personen tegelijkertijd in dezelfde administraties boekingen kunnen invoeren of bewerken. De handleiding is niet specifiek voor een bepaald platform en is daarom enigszins algemeen. Deze handleiding is nog in ontwikkeling en zeker niet volledig. Kritiek en succesverhalen zijn welkom op paul@vandervlis.nl.


Deze handleiding gaat over de netwerkinstallatie van Eekboek.


In een netwerkinstallatie is sprake van een of meerdere clients die communiceren met een gezamenlijke database server. Daarvoor is een database server nodig die meerdere gebruikers tegelijk aan kan, zoals de PostgreSQL database. De clients zijn in principe gewone EekBoek installaties, bij de installatie van de client wordt daarom enkele algemene dingen verteld over de netwerkinstallatie en verder verwezen naar de installatiedocumentatie voor de verschillende platformen.
===Architectuur===
Het doel is om tot de volgende architectuur te komen:


Deze manual is nog in ontwikkeling, en zeker nog niet perfect. Kritiek en succesverhalen zijn welkom op paul@vandervlis.nl.
[[Bestand:Eekboek-network.png]]


==== Server ====
=== Server ===
Bij installatie in een netwerk is er een server en zijn er één of meerdere clients. Concreet betekent dit dat EekBoek als applicatie op iedere client is geinstalleerd en het database management systeem op de server. Het database management systeem uit deze handleiding is PostgreSQL, omdat dat systeem multi-user mogelijkheden biedt. PostgreSQL 8.3 en later is bruikbaar, waarschijnlijk wat oudere versies ook maar precies weet ik dit niet. PostgreSQL is een database met veel mogelijkheden waarover complete boeken vol zijn geschreven, mijn verhaal blijft daarom enigszins beperkt. PostgreSQL wordt niet standaard bij EekBoek geleverd, maar het zit wel in de meeste Linux distributies en voor de meeste andere platformen is het gratis te downloaden via  http://www.postgresql.org/ . Er zijn Windows, Mac, Linux, FreeBSD en Solaris versies.


Bij installatie in een netwerk is er een server en zijn er 1 of meerdere clients. Als server dient zogezegd PostgreSQL. PostgreSQL 8.3 en later is bruikbaar, waarschijnlijk wat oudere versies ook al maar precies weet ik dit niet. PostgreSQL is een database met veel mogelijkheden waarover complete boeken vol zijn geschreven, mijn verhaal blijft daarom enigsinds beperkt. PostgreSQL wordt niet standaard bij Eekboek geleverd, maar het zit wel in de meeste Linux distributies en voor de meeste andere platformen is het gratis te downloaden via  http://www.postgresql.org/ (er zijn Windows, Mac, Linux, FreeBSD en Solaris versies).
Ik ga het nu allereerst over een paar configuratiebestanden hebben. Deze staan op ieder platform weer ergens anders. Vaak is het het handigste er even naar te zoeken. Na het wijzigen van deze bestanden moet postgresql herstart worden.


Ik ga het nu allereerst over een paar configuratiebestanden hebben. Deze staan op ieder platform weer ergens anders. Vaak is het het handigste er even naar te zoeken.
==== pg_hba.conf ====
Een belangrijk bestand in PostgreSQL is pg_hba.conf, hier dient het netwerk toegang te krijgen tot de database. Ik stel voor deze regel toe te voegen:
host all all 0.0.0.0/0 md5
Hiermee vertel je dat iedereen via het netwerk mag inloggen op alle databases mits er een juiste username en paswoord bekend is. Uiteraard kan er ook iets als 192.168.1.0/24 gebruikt worden in plaats van 0.0.0.0/0 als extra veiligheid. Meer informatie is [http://www.postgresql.org/docs/8.4/interactive/auth-pg-hba-conf.html hier te vinden]


===== pg_hba.conf =====
==== postgresql.conf ====
Een ander belangerijk bestand is postgresql.conf. Ik raad je aan in dit bestand te zoeken naar "listen_addresses". Vaak is dit namelijk "localhost", of is het default "localhost" en dat gaat niet werken via het netwerk. Ik raad je hier aan er "listen_addresses = '*' " van te maken, wat betekent dat je van overal kunt aanmelden. Een eventueel hekje (#) aan het begin van de regel moet worden verwijderd. Uiteraard kan het ook hier op vele manieren, meer informatie is [http://www.postgresql.org/docs/8.4/interactive/config-setting.html hier te vinden].


Een belangerijk bestand in PostgreSQL is pg_hba.conf, hier dient het netwerk toegang te krijgen tot de database, voorbeeldregel: "host  all all all md5". Hiermee vertel je dat iedereen via het netwerk mag inloggen op alle databases mits er een juiste username en paswoord bekend is. Meer informatie is hier te vinden: http://www.postgresql.org/docs/8.4/interactive/auth-pg-hba-conf.html
==== Database role aanmaken ====
In PostgreSQL moet een "role" aangemaakt worden, dat is een user in PostgreSQL termen. Dit moet gedaan worden door de administratieve user van PostgreSQL, normaal heet deze "postgres". Je kunt voor iedere gebruiker een eigen role aanmaken, maar een role kan ook prima gedeeld worden door meerdere gebruikers, vandaar ook de term "role" (in het Nederlands "rol").


===== postgresql.conf =====
In Linux/Unix kun je user "postgres" worden met een commando als "sudo su postgres" of als root met "su progres". Het aanmaken van de role gaat hier met het commando "createuser -P ebuser". Hiermee maak je een role "ebuser" aan met paswoord. Hij vraagt of de nieuwe role een superuser moet zijn, daarop antwoord je "nee". Hij vraagt of de nieuwe role nieuwe databases mag aanmaken, daarop antwoord je normaal "ja" [1]. Als laatste vraagt hij of de nieuwe role nieuwe roles mag aanmaken, daarop antwoord je "nee". Uiteraard vraagt hij nog om een paswoord voor de nieuwe user en dan is de role klaar. Meer informatie over het "createuser" commando is [http://www.postgresql.org/docs/8.4/static/app-createuser.html hier te vinden].


Een ander belangerijk bestand is postgresql.conf. Ik raad je aan in dit bestand te zoeken naar "listen_addresses". Vaak is dit namelijk "localhost", of is het default "localhost" en dat gaat niet werken via het netwerk. Ik raad je hier aan er "listen_addresses = '*'" van te maken, wat betekent dat je van overal kunt aanmelden. Maar uiteraard kun je het doen zoals je wilt, meer informatie is hier te vinden: http://www.postgresql.org/docs/8.4/interactive/config-setting.html
Bij Windows/Mac wordt er een programma PGAdmin meegeleverd waarmee je gemakkelijk een user kunt aanmaken nadat je verbonden bent als user "postgres" met postgresql op localhost. Ook voor Linux is dit programma beschikbaar. Je moet "edit | new object | new login role" doen. Let er op dat de nieuwe user normaal databases moet kunnen aanmaken [1], dat kun je in een tabblad instellen.


===== firewall =====
==== Firewall ====
Op de meeste servers zit tegenwoordig een firewall. PostgreSQL draait normaal op 5432 TCP en deze poort moet worden opengezet, zodat de clients bij deze poort kunnen. De configuratie van de firewall voor PostgreSQL is vergelijkbaar met die van een webserver, alleen is het poortnummer dus anders.


Op de meeste servers zit tegenwoordig een firewall. PostgreSQL draait normaal op 5432 TCP en deze poort moet worden opengezet zodat de clients bij deze poort kunnen. De configuratie van de firewall is vergelijkbaar met die van een webserver, alleen is de poort dus anders.
=== Client ===
Het is een goed idee om vanaf een client PC eerst te testen of de server te bereiken is op poort 5432. Ik doe dat normaal door op de commandline het commando "telnet 1.2.3.4 5432" te geven. Uiteraard moet je in plaats van "1.2.3.4" het correcte IP adres of de correcte naam van de server opgeven. Mocht de poort niet te bereiken zijn, ga dan nog eens naar de configuratie van de server kijken. Sommige Windows versies hebben overigens de telnet client default uit staan, [http://windows.microsoft.com/nl-NL/windows-vista/Telnet-frequently-asked-questions hier staat hoe je dat kunt veranderen].


===== Database role aanmaken =====
Onderstaande gaat over Eekboek versie 2.02.00 en hoger. Mocht je een oudere versie van EekBoek gebruiken dan staan [[platform:Netwerkclient-oud|hier de juiste aanwijzingen]].


In PostgreSQL moet een "role" aangemaakt worden, dat is een user. Normaal doe je dit op de commandline met het commando "createuser -SdR ebuser" (hiermee maak je een role ebuser aan, die zelf databases mag aanmaken). Let op dat de "d" een kleine letter is, en de "S" en de "R" groot. Je kunt voor iedere gebruiker een eigen role aanmaken, maar een role kan ook gedeeld worden door meerdere gebruikers. Belangerijk is dat je het createuser-commando uitvoert als de administratieve user, normaal is dat de user "postgres". Als dit onduidelijk is, is er meer informatie te vinden in het boven al genoemde bestand "pg_hba.conf".
==== De eerste client, het aanmaken van de database ====
Na installatie van de eerste client kan de database worden aangemaakt. Het installeren van deze client kan eventueel ook op de server gebeuren, we gaan hier ervan uit dat het op de client gebeurt.


===== Database aanmaken =====
In de wizard geef je aan een nieuwe database te willen maken van het type "postgresql". Je moet invullen met welke server je wilt connecten, via welke TCP/IP poort en met welke usernaam (role) en password. In een normale netwerkinstallatie vul je het ip nummer of de naam van de databaseserver in, de poort laat je ongewijzigd ("--standaard--"), de role waarmee je toegang hebt tot de database, en het bijbehorende paswoord. Bij het afronden van de wizard wordt de database op de server aangemaakt.


Alhoewel het niet persee nodig is, is het handig op de server ook Eekboek te installeren om de database aan te maken. Wellicht kan dit ook vanaf een client, maar dit is nog niet goed getest. Uiteraard hoeft er geen grafische client op de server. Hoe het installeren van de client gaat is beschreven in verschillende handleidingen per platform, dus dat wou ik hier niet nogmaals gaan doen.  
Waarschuwing: als je een administratie aanmaakt onder een naam die al bestaat in PostgreSQL, en je hebt de database aangemaakt zoals beschreven op deze pagina, dan zal de bestaande boekhouding worden overschreven. Zie ook voetnoot [1].


In de wizzard geef je aan een nieuwe database te willen maken van het type "postgresql". Bij heel nieuwe versies van Eekboek (na versie 2.00.02) kun je dan gelijk invullen met welke server je wilt connecten en met welke user (role) en welke poort. Er zal dan automatisch een database worden aangemaakt.
==== De volgende clients ====
In de wizard kies je voor "verbinden met een bestaande boekhouding". Er wordt je om je username, paswoord, hostname en dergelijke gevraagd, die vul je in precies zoals hierboven beschreven. Er wordt nu een configuratiebestand aangemaakt maar geen boekhouding (die is er immers al) en je kunt inloggen op de bestaande boekhouding.


Bij oudere versies van Eekboek kan er in de wizzard geen hostname, username, paswoord en poort worden ingevuld en zal er een foutmelding volgen bij het aanmaken van de database. Hier moeten de gegevens met de hand in het configfile worden gezet. Normaal worden de configfiles opgeslagen in een directory ~/.eekboek/admdir/naam/eekboek.conf of C:\documents and settings\user\eekboek\admdir\naam\eekboek.conf (zoek eventueel op "admdir"). Hierin moet dan iets dergelijks komen te staan:
=== Resultaat ===
Het resultaat is een boekhouding waar verschillende mensen tegelijk op kunnen werken. De gegevens staan in een database op een server, die wellicht wat degelijker is en gebackupped wordt, en wie weet zelfs een UPS heeft tegen stroomuitval.


[database]
name      = boekhouding_2010
driver    = postgres
host      = localhost
port      = 5432
user      = ebuser
password  = eekboek


Hierna kan de database vanuit deze directory op de commandline worden aangemaakt met:
[1] Eekboek kan boekhoudingen zelf aanmaken in PostgreSQL, daartoe moet de role wel het recht hebben om databases aan te maken. Er zijn echter situaties denkbaar waarin de beheerder van de database dit niet wil, hij/zij kan dan zelf databases aanmaken, en de role dit recht niet geven. Een andere optie is om 2 roles te maken, bijvoorbeeld een role "ebuser" die geen databases mag aanmaken en een role "ebadmin" die dit wel mag. Het lastige daarvan is wel, dat de role "ebuser" het recht zal moeten krijgen om de database van "ebadmin" te bewerken.
ebshell --init
 
==== Client ====
 
Het is een goed idee om vanaf een client PC eerst te testen of de server te bereiken is op poort 5432. Ik doe dat normaal door op de commandline het commando "telnet 1.2.3.4 5432" te geven. Uiteraard moet je in plaats van "1.2.3.4" het correcte IP adres of de correcte naam van de server opgeven. Mocht de poort niet te bereiken zijn, ga dan nog eens naar de configuratie van de server kijken.
 
===== Client installatie (eenvoudig) =====
 
Deze allinea is alleen bestemd voor een erg actule GUI versie van Eekboek. In de wizzard kies je voor een nieuwe boekhouding. Wat voor boekhouding je kiest is verder niet erg van belang. Je kiest postgresql. Als het goed is wordt je om je username, paswoord, hostname en dergelijke gevraagd, die vul je in. Mocht dit niet gevraagd worden dan werk je nog met de oude versie en moet je de moeilijke installatie doen. Dan komt er als laatste een overzichtpagina met een overzicht wat er gaat gebeuren. Daar vink je alles uit behalve "configuratiebestand", en dan ga je verder. Er wordt nu een configuratiebestand aangemaakt maar geen database.
 
===== Client installatie (moeilijk) =====
 
Deze methode kies je als je op de commandline werkt of als je niet beschikt over een nieuwe versie van Eekboek. In de wizzard kies je voor een nieuwe boekhouding. Wat voor boekhouding je kiest is verder niet erg van belang. Je kiest geen postgresql maar sqlite en maakt de wizzard verder af, er wordt dus een sqlite boekhouding aangemaakt. Nu ga je naar de directory waarin de boekhouding staat (zie "Database aanmaken") en je wist daar alle bestanden behalve eekboek.conf, wat je gaat aanpassen. Doe dit op dezelfde manier als bij "Database aanmaken". Uiteraard hoeft er nu geen database te worden aangemaakt.
 
==== Resultaat ====
 
Het resultaat is een boekhouding waar verschillende mensen tegelijk op kunnen werken.

Huidige versie van 9 okt 2012 om 10:09

Deze handleiding gaat over de netwerkinstallatie van EekBoek, ofwel het ter beschikking stellen van EekBoek via een bedrijfsnetwerk, zodat meerdere personen tegelijkertijd in dezelfde administraties boekingen kunnen invoeren of bewerken. De handleiding is niet specifiek voor een bepaald platform en is daarom enigszins algemeen. Deze handleiding is nog in ontwikkeling en zeker niet volledig. Kritiek en succesverhalen zijn welkom op paul@vandervlis.nl.


Architectuur

Het doel is om tot de volgende architectuur te komen:

Server

Bij installatie in een netwerk is er een server en zijn er één of meerdere clients. Concreet betekent dit dat EekBoek als applicatie op iedere client is geinstalleerd en het database management systeem op de server. Het database management systeem uit deze handleiding is PostgreSQL, omdat dat systeem multi-user mogelijkheden biedt. PostgreSQL 8.3 en later is bruikbaar, waarschijnlijk wat oudere versies ook maar precies weet ik dit niet. PostgreSQL is een database met veel mogelijkheden waarover complete boeken vol zijn geschreven, mijn verhaal blijft daarom enigszins beperkt. PostgreSQL wordt niet standaard bij EekBoek geleverd, maar het zit wel in de meeste Linux distributies en voor de meeste andere platformen is het gratis te downloaden via http://www.postgresql.org/ . Er zijn Windows, Mac, Linux, FreeBSD en Solaris versies.

Ik ga het nu allereerst over een paar configuratiebestanden hebben. Deze staan op ieder platform weer ergens anders. Vaak is het het handigste er even naar te zoeken. Na het wijzigen van deze bestanden moet postgresql herstart worden.

pg_hba.conf

Een belangrijk bestand in PostgreSQL is pg_hba.conf, hier dient het netwerk toegang te krijgen tot de database. Ik stel voor deze regel toe te voegen:

host all all 0.0.0.0/0 md5

Hiermee vertel je dat iedereen via het netwerk mag inloggen op alle databases mits er een juiste username en paswoord bekend is. Uiteraard kan er ook iets als 192.168.1.0/24 gebruikt worden in plaats van 0.0.0.0/0 als extra veiligheid. Meer informatie is hier te vinden

postgresql.conf

Een ander belangerijk bestand is postgresql.conf. Ik raad je aan in dit bestand te zoeken naar "listen_addresses". Vaak is dit namelijk "localhost", of is het default "localhost" en dat gaat niet werken via het netwerk. Ik raad je hier aan er "listen_addresses = '*' " van te maken, wat betekent dat je van overal kunt aanmelden. Een eventueel hekje (#) aan het begin van de regel moet worden verwijderd. Uiteraard kan het ook hier op vele manieren, meer informatie is hier te vinden.

Database role aanmaken

In PostgreSQL moet een "role" aangemaakt worden, dat is een user in PostgreSQL termen. Dit moet gedaan worden door de administratieve user van PostgreSQL, normaal heet deze "postgres". Je kunt voor iedere gebruiker een eigen role aanmaken, maar een role kan ook prima gedeeld worden door meerdere gebruikers, vandaar ook de term "role" (in het Nederlands "rol").

In Linux/Unix kun je user "postgres" worden met een commando als "sudo su postgres" of als root met "su progres". Het aanmaken van de role gaat hier met het commando "createuser -P ebuser". Hiermee maak je een role "ebuser" aan met paswoord. Hij vraagt of de nieuwe role een superuser moet zijn, daarop antwoord je "nee". Hij vraagt of de nieuwe role nieuwe databases mag aanmaken, daarop antwoord je normaal "ja" [1]. Als laatste vraagt hij of de nieuwe role nieuwe roles mag aanmaken, daarop antwoord je "nee". Uiteraard vraagt hij nog om een paswoord voor de nieuwe user en dan is de role klaar. Meer informatie over het "createuser" commando is hier te vinden.

Bij Windows/Mac wordt er een programma PGAdmin meegeleverd waarmee je gemakkelijk een user kunt aanmaken nadat je verbonden bent als user "postgres" met postgresql op localhost. Ook voor Linux is dit programma beschikbaar. Je moet "edit | new object | new login role" doen. Let er op dat de nieuwe user normaal databases moet kunnen aanmaken [1], dat kun je in een tabblad instellen.

Firewall

Op de meeste servers zit tegenwoordig een firewall. PostgreSQL draait normaal op 5432 TCP en deze poort moet worden opengezet, zodat de clients bij deze poort kunnen. De configuratie van de firewall voor PostgreSQL is vergelijkbaar met die van een webserver, alleen is het poortnummer dus anders.

Client

Het is een goed idee om vanaf een client PC eerst te testen of de server te bereiken is op poort 5432. Ik doe dat normaal door op de commandline het commando "telnet 1.2.3.4 5432" te geven. Uiteraard moet je in plaats van "1.2.3.4" het correcte IP adres of de correcte naam van de server opgeven. Mocht de poort niet te bereiken zijn, ga dan nog eens naar de configuratie van de server kijken. Sommige Windows versies hebben overigens de telnet client default uit staan, hier staat hoe je dat kunt veranderen.

Onderstaande gaat over Eekboek versie 2.02.00 en hoger. Mocht je een oudere versie van EekBoek gebruiken dan staan hier de juiste aanwijzingen.

De eerste client, het aanmaken van de database

Na installatie van de eerste client kan de database worden aangemaakt. Het installeren van deze client kan eventueel ook op de server gebeuren, we gaan hier ervan uit dat het op de client gebeurt.

In de wizard geef je aan een nieuwe database te willen maken van het type "postgresql". Je moet invullen met welke server je wilt connecten, via welke TCP/IP poort en met welke usernaam (role) en password. In een normale netwerkinstallatie vul je het ip nummer of de naam van de databaseserver in, de poort laat je ongewijzigd ("--standaard--"), de role waarmee je toegang hebt tot de database, en het bijbehorende paswoord. Bij het afronden van de wizard wordt de database op de server aangemaakt.

Waarschuwing: als je een administratie aanmaakt onder een naam die al bestaat in PostgreSQL, en je hebt de database aangemaakt zoals beschreven op deze pagina, dan zal de bestaande boekhouding worden overschreven. Zie ook voetnoot [1].

De volgende clients

In de wizard kies je voor "verbinden met een bestaande boekhouding". Er wordt je om je username, paswoord, hostname en dergelijke gevraagd, die vul je in precies zoals hierboven beschreven. Er wordt nu een configuratiebestand aangemaakt maar geen boekhouding (die is er immers al) en je kunt inloggen op de bestaande boekhouding.

Resultaat

Het resultaat is een boekhouding waar verschillende mensen tegelijk op kunnen werken. De gegevens staan in een database op een server, die wellicht wat degelijker is en gebackupped wordt, en wie weet zelfs een UPS heeft tegen stroomuitval.


[1] Eekboek kan boekhoudingen zelf aanmaken in PostgreSQL, daartoe moet de role wel het recht hebben om databases aan te maken. Er zijn echter situaties denkbaar waarin de beheerder van de database dit niet wil, hij/zij kan dan zelf databases aanmaken, en de role dit recht niet geven. Een andere optie is om 2 roles te maken, bijvoorbeeld een role "ebuser" die geen databases mag aanmaken en een role "ebadmin" die dit wel mag. Het lastige daarvan is wel, dat de role "ebuser" het recht zal moeten krijgen om de database van "ebadmin" te bewerken.