Platform:Netwerk: verschil tussen versies

Uit EekBoek
Naar navigatie springenNaar zoeken springen
 
(45 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. De handleiding is niet specifiek voor een bepaald platform en is daarom enigszins algemeen. Deze manual 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:
 
[[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 één of meerdere clients. Op de server dient PostgreSQL geinstalleerd te worden. 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.
 
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 pg_hba.conf of postgresql.conf moet postgresql herstart worden.


==== pg_hba.conf ====
==== 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:
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
  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: http://www.postgresql.org/docs/8.4/interactive/auth-pg-hba-conf.html
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]


==== postgresql.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 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: http://www.postgresql.org/docs/8.4/interactive/config-setting.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").


==== Database role aanmaken ====
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].


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'. In Linux realiseer ik dit met een commando als "sudo su postgres", hoe dit onder Windows/Mac moet weet ik niet. Het aanmaken van de role gaat 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" in hoofdletters. Uiteraard vraagt hij nog om een paswoord en dan is de role klaar. Je kunt voor iedere gebruiker een eigen role aanmaken, maar een role kan ook gedeeld worden door meerdere gebruikers. Hier is meer informatie te vinden over het "createuser" commando: http://www.postgresql.org/docs/8.4/static/app-createuser.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 voor PostgreSQL is vergelijkbaar met die van een webserver, alleen is het poortnummer dus anders.


=== Client ===
=== 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].


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.
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]].


Onderstaande gaat over de ontwikkelversie van EekBoek die op dit moment alleen nog maar beschikbaar is via Git. Mocht je een oudere versie van EekBoek gebruiken dan staan hier de juiste aanwijzingen: [[platform:Netwerkclient-oud]]
==== 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.


==== De eerste client ====
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.


Bij de installatie van de eerste client wordt de database aangemaakt. Het installeren van deze client kan eventueel ook op de server gebeuren. In de wizard geef je aan een nieuwe database te willen maken van het type "postgresql". Je kunt invullen met welke server je wilt connecten (standaard is localhost) en met welke user (standaard is ebuser) en welke poort. Gebruik als poort niet "--standaard--", want dan gaat het mis, vul "5432" in (standaard gebruikt hij Unix sockets en dat werkt niet in deze configuratie). Uiteraard moet ook het paswoord worden ingevuld. Er wordt hierna automatisch een database worden aangemaakt op de server.
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 ====
==== 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.


In de wizard kies je voor een nieuwe boekhouding. Wat voor boekhouding je kiest is niet erg van belang want we kiezen er later voor om hem niet aan te maken. Je kiest de postgresql database. Er wordt je om je username, paswoord, hostname en dergelijke gevraagd, die vul je in. Vergeet niet om bij de poort "5432" in te vullen, standaard werkt niet. Dan komt er als laatste een pagina met een overzicht wat er gaat gebeuren. Daar vink je alles uit behalve "configuratiebestand". Er wordt nu een configuratiebestand aangemaakt maar geen database (die is er immers al) en je kunt inloggen op de bestaande database.  
=== 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.


In het CLI interface is er geen laatste pagina met een overzicht maar komen er verschillende vragen na elkaar. De vraag over het configuratiebestand beantwoord je met "ja". De vraag over de administratiebestanden en over de database beantwoord je met "nee". De laatste vraag over doorgaan beantwoord je uiteraard weer met "ja".
=== 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.

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.