Skip to content

Installatiehandleiding

Mark Prins edited this page Jan 29, 2024 · 47 revisions

Introductie

In dit hoofdstuk staan de installatieinstructies voor de BRMO. Uitgangspunt hierbij is dat het operating systeem en de database al geinstalleerd zijn. Bij het daadwerkelijk doen van de installatie wordt ook vaak een scherm-voor-scherm installatiehandleiding gemaakt. Een voorbeeld hiervan is los beschikbaar.

Systeemeisen

Zie Systeemeisen en de Security Policy.

Configuraties

De webapplicatie BRMO-service combineert een aantal functies: ophalen van berichten en verwerken van de berichten in een database. In bepaalde gevallen kunnen deze functies vanuit één instantie gebruikt worden, maar bij andere configuraties worden twee instanties ingezet, waarbij telkens een deel van de functies wordt geactiveerd.

In het volgende plaatje staan de meest logische configuraties. configuratie Alle configuraties hebben de volgende gemeenschappelijke kenmerken. De pijlen tussen de componenten geven aan vanuit welke component de communicatie wordt gestart; De data uit de basisregistraties wordt verzameld in één database op het LAN; Deze database wordt ontsloten door een server met GIS en SOAP services; De berichten worden via een push of pull mechanisme en via de cloud/internet opgehaald bij de landelijke voorzieningen.

  • A Dit is de meest eenvoudige configuratie. De BRMO-service staat in de DMZ en is endpoint voor pushmechanismen (bv BAG mutaties), maar initieert ook communicatie voor pullmechanismen (bv. BRK mutaties). De BRMO-service schrijft de resultaten zelf in de database op het LAN.
  • B Bij deze configuratie wordt een isolatie gecreëerd doordat twee instanties van de BRMO-service worden geïnstalleerd. De instantie in de DMZ zorgt voor de communicatie met de landelijke voorziening via zowel push- als pullmechanismen. De ontvangen berichten worden op een fileserver in de DMZ geplaatst. Een tweede instantie van BRMO-service staat op het LAN en haalt de berichten op van de fileserver in de DMZ. Deze BRMO-service schrijft de resultaten dan weer in de database op het LAN.
  • C Bij deze configuratie wordt een ESB ingezet voor de distributie van de berichten. Er zijn weer twee instanties van BRMO-service, maar in plaats van een fileserver wordt nu de ESB ingezet. Deze ESB ontvangt de berichten van de BRMO-service in de DMZ en levert deze af bij de BRMO-service op het LAN. Deze BRMO-service schrijft de resultaten dan weer in de database op het LAN. Vanzelfsprekend kunnen ook andere applicaties de berichten van de ESB afnemen.
  • D Bij deze configuratie ligt de verantwoordelijkheid voor het ophalen van de berichten volledig bij de ESB. Deze functie van BRMO-service wordt niet gebruikt. De ESB levert de berichten af bij de BRMO-service op het LAN. Deze BRMO-service schrijft de resultaten dan weer in de database op het LAN.

Databaseserver installatie [Postgresql]

  • Aanmaken postgresql gebruiker "brmo" met een veilig wachtwoord
  • Aanmaken databases "brmo_staging", "brmo_rsgb", "rsgbbgt", "topnl" met een eigen "owner" per database. Het is van belang dat de installatie van het schema met de "owner" rol wordt uitgevoerd.
  • Postgis extensie installeren op "rsgbbgt" database via SQL (als superuser):
  • Postgis extensie installeren op "topnl" database via SQL (als superuser):
  • Postgis extensie installeren op "brmo_rsgb" database via SQL (als superuser):
  • Uitvoeren "create-brmo-persistence-postgres.sql" op brmo_staging database, public schema
  • In de brmo_staging database staan inloggegevens voor toegang tot de "brmo-service" webapplicatie in de "gebruiker_" tabel. Dit moet gewijzigd worden in een ander wachtwoord, zie daarvoor de update wachtwoord procedure. Het default beheer account is gebruiker "brmo" met hetzelfde wachtwoord.
  • Uitvoeren "datamodel_postgres.sql" als database owner op "brmo_rsgb" database
  • Uitvoeren "brk2.0_postgresql.sql" als database owner op "brmo_rsgb" database
  • Uitvoeren "brk2.0_commentaar.sql" als database owner op "brmo_rsgb" database, in het "brk" schema
  • Uitvoeren "brk2.0_postgresql_views.sql" als database owner op "brmo_rsgb" database
  • Uitvoeren "postgresql.sql" als database owner op "topnl" database
  • Let op dat de applicatieserver moet kunnen verbinden met de databaseserver. PostgreSQL instellingen hiervoor staan in "pg_hba.conf".

Databaseserver installatie [Oracle]

  • Aanmaken user/schema "brmo_staging"
  • Aanmaken user/schema "brmo_rsgb"
  • Aanmaken user/schema "brmo_brk"
  • Aanmaken user/schema "brmo_bag"
  • Aanmaken user/schema "brmo_rsgbbgt"
  • Aanmaken user/schema "topnl"
  • Uitvoeren "create-brmo-persistence-oracle.sql" op brmo_staging schema
  • In het brmo_staging schema staan inloggegevens voor toegang tot de "brmo-service" webapplicatie in de "gebruiker_" tabel. Dit moet gewijzigd worden in een ander wachtwoord, zie daarvoor de update wachtwoord procedure. Het default beheer account is gebruiker "brmo" met hetzelfde wachtwoord.
  • Uitvoeren "datamodel_oracle.sql" op "brmo_rsgb" schema
  • Uitvoeren "brk2.0_oracle.sql" op "brmo_brk" schema
  • Uitvoeren "brk2.0_commentaar.sql" op "brmo_brk" schema
  • Uitvoeren "brk2.0_oracle_views.sql" op "brmo_brk" schema
  • Uitvoeren "oracletop10nl.sql", "oracletop50nl.sql", "oracletop100nl.sql" en "oracletop250nl.sql"

NB Het verdient de voorkeur om de databases aan te maken met een UTF8 of UTF16 default karakterset en de NLS_LENGTH_SEMANTICS op CHAR te zetten dit zodat 2-byte characters zoals tekens met een diakriet ook in de kolommen passen. Bijvoorbeeld de verkorte straatnaam in de tabel GEM_OPENB_RMTE (zie ook #240).

Let op! Bij gebruik van bepaalde SQL-tools, zoals Toad of sqlplus (maar bijvoorbeeld niet DbVisualiser) worden tekens als & of %, zelfs als deze in een tekenreeks waarde staan, aangezien als query parameter. In het datamodel_oracle.sql script staan INSERT statements voor de tabellen 'wijk' en 'buurt' met & tekens. Zet bij het gebruik van deze tools dan bovenaan het script de regel: SET DEFINE OFF;

Applicatieserver installatie

Het is het handigst om de webapplicaties voor de BRMO in een aparte Tomcat 9.0 instantie te installeren die alleen voor de BRMO wordt gebruikt. Indien de applicatie server al voor andere applicaties een Tomcat installatie heeft kan dit door Tomcat opnieuw te installeren en andere poorten en een andere service naam te kiezen.

Configureren JavaMail resource

Voor het versturen van mail voor bijvoorbeeld de MailRapportage dient JavaMail te worden geïnstalleerd en geconfigureerd in Tomcat. De mail drivers zijn te vinden in de download zip.

In de server.xml dient een resource te worden toegevoegd met de naam "mail/session" met daarin de mail configuratie (na <GlobalNamingResources>):

<Resource name="mail/session"
          auth="Container"
          type="javax.mail.Session"
          mail.smtp.host="<smtp server voor fq-domein>"
          mail.from="brmo-no-reply@<fq-domein>"
/>

Voor meer informatie zie:

Configureren JNDI data sources

Open Notepad als Administrator en open server.xml van de BRMO Tomcat instantie. Voeg na <GlobalNamingResources> de configuratie regels voor de JNDI data sources toe met de juiste connectie gegevens (gebruikersnaam/wachtwoord, database naam en hostname).

NB Er zijn verschillen in syntax tussen verschillende versies van Tomcat; oa. de maxActive optie is in versies na Tomcat 7 vervangen door maxTotal en maxWait door maxWaitMillis zie verder:

Voor PostgreSQL

De drivers voor PostgreSQL zijn te vinden in de download zip.

<Resource name="jdbc/brmo/staging"
        auth="Container"
        type="javax.sql.DataSource"
        username="staging"
        password="**"
        driverClassName="org.postgresql.Driver"
        url="jdbc:postgresql://HOSTNAME/staging?ApplicationName=brmo-service"
        maxTotal="40" initialSize="2"
        validationQuery="select 1"
        timeBetweenEvictionRunsMillis="30000"
        minEvictableIdleTimeMillis="5000"
        testOnBorrow="true"
/>

<Resource name="jdbc/brmo/rsgb"
        auth="Container"
        type="javax.sql.DataSource"
        username="rsgb"
        password="**"
        driverClassName="org.postgresql.Driver"
        url="jdbc:postgresql://HOSTNAME/rsgb?ApplicationName=brmo-service"
        maxTotal="40" initialSize="0"
        validationQuery="select 1"
        timeBetweenEvictionRunsMillis="30000"
        minEvictableIdleTimeMillis="5000"
        testOnBorrow="true"
/>
<!-- let op de accessToUnderlyingConnectionAllowed en url opties vanaf versie 2.1.0 -->
<Resource name="jdbc/brmo/rsgbbgt"
        auth="Container"
        type="javax.sql.DataSource"
        username="rsgbbgt"
        password="**"
        driverClassName="org.postgresql.Driver"
        url="jdbc:postgresql://HOSTNAME/rsgbbgt?sslmode=disable&amp;reWriteBatchedInserts=true&amp;ApplicationName=brmo-service"
        accessToUnderlyingConnectionAllowed="true"
        maxTotal="10" initialSize="0"
        validationQuery="select 1"
        timeBetweenEvictionRunsMillis="30000"
        minEvictableIdleTimeMillis="5000"
/>

<Resource name="jdbc/brmo/rsgbtopnl"
        auth="Container"
        type="javax.sql.DataSource"
        username="topnl"
        password="**"
        driverClassName="org.postgresql.Driver"
        url="jdbc:postgresql://HOSTNAME/topnl?ApplicationName=brmo-service"
        maxTotal="40" initialSize="0"
        validationQuery="select 1"
        timeBetweenEvictionRunsMillis="30000"
        minEvictableIdleTimeMillis="5000"
        testOnBorrow="true"
/>

<!-- BAG 2 vanaf 2.2.0-rc1 -->
<Resource name="jdbc/brmo/rsgbbag"
        auth="Container"
        type="javax.sql.DataSource"
        username="rsgbbag"
        password="****"
        driverClassName="org.postgresql.Driver"
        url="jdbc:postgresql://HOSTNAME/rsgb?ApplicationName=brmo-service"
        maxTotal="40" initialSize="0"
        validationQuery="select 1"
        timeBetweenEvictionRunsMillis="30000"
        minEvictableIdleTimeMillis="5000"
        testOnBorrow="true"
/>

<Resource auth="Container" 
          name="jdbc/brmo/rsgbbrk" 
          password="rsgb" 
          username="rsgb"
          driverClassName="org.postgresql.Driver"
          maxTotal="40" initialSize="0"
          minEvictableIdleTimeMillis="5000"
          timeBetweenEvictionRunsMillis="30000" 
          type="javax.sql.DataSource"
          url="jdbc:postgresql://HOSTNAME/rsgb?currentSchema=brk&amp;ApplicationName=brmo-service"
          validationQuery="select 1"
/>

Voor Oracle

Voor Oracle wordt de JDBC Thin Driver gebruikt, deze is te vinden in de download zip.

<Resource name="jdbc/brmo/staging"
        auth="Container"
        type="javax.sql.DataSource"
        driverClassName="oracle.jdbc.OracleDriver"
        url="jdbc:oracle:thin:@HOSTNAME:1521:orcl"
        username="brmo_staging"
        password="**"
        maxTotal="100" initialSize="2"
        maxIdle="30"
        maxWaitMillis="8000"
        validationQuery="select 1 from dual"
        timeBetweenEvictionRunsMillis="30000"
        minEvictableIdleTimeMillis="5000"
        testOnBorrow="true"
/>

<Resource name="jdbc/brmo/rsgb"
        auth="Container"
        type="javax.sql.DataSource"
        driverClassName="oracle.jdbc.OracleDriver"
        url="jdbc:oracle:thin:@HOSTNAME:1521:orcl"
        username="brmo_rsgb"
        password="**"
        maxTotal="100" initialSize="0"
        maxIdle="30"
        maxWaitMillis="8000"
        validationQuery="select 1 from dual"
        timeBetweenEvictionRunsMillis="30000"
        minEvictableIdleTimeMillis="5000"
        testOnBorrow="true"
/>

<Resource name="jdbc/brmo/rsgbbgt"
        auth="Container"
        type="javax.sql.DataSource"
        driverClassName="oracle.jdbc.OracleDriver"
        url="jdbc:oracle:thin:@HOSTNAME:1521:orcl"
        username="brmo_rsgbbgt"
        password="**"
        maxTotal="100" initialSize="0"
        maxIdle="30"
        maxWaitMillis="8000"
        validationQuery="select 1 from dual"
        timeBetweenEvictionRunsMillis="30000"
        minEvictableIdleTimeMillis="5000"
        testOnBorrow="true"
/>

<Resource name="jdbc/brmo/rsgbtopnl"
        auth="Container"
        type="javax.sql.DataSource"
        driverClassName="oracle.jdbc.OracleDriver"
        url="jdbc:oracle:thin:@HOSTNAME:1521:orcl"
        username="brmo_rsgbtopnl"
        password="**"
        maxTotal="100" initialSize="0"
        maxIdle="30"
        maxWaitMillis="8000"
        validationQuery="select 1 from dual"
        timeBetweenEvictionRunsMillis="30000"
        minEvictableIdleTimeMillis="5000"
        testOnBorrow="true"
/>
    
<Resource name="jdbc/brmo/rsgbbag"
        auth="Container"
        type="javax.sql.DataSource"
        driverClassName="oracle.jdbc.OracleDriver"
        url="jdbc:oracle:thin:@HOSTNAME:1521:orcl"
        username="rsgb_bag"
        password="****"
        maxTotal="100" initialSize="0"
        maxIdle="30"
        maxWaitMillis="8000"
        validationQuery="select 1 from dual"
        timeBetweenEvictionRunsMillis="30000"
        minEvictableIdleTimeMillis="5000"
        testOnBorrow="true"
/>

<Resource auth="Container" 
          name="jdbc/brmo/rsgbbrk"
          password="****" 
          username="brmo_brk"
          driverClassName="oracle.jdbc.OracleDriver"
          maxTotal="40" initialSize="0"
          minEvictableIdleTimeMillis="5000"
          timeBetweenEvictionRunsMillis="30000" 
          type="javax.sql.DataSource"
          url="jdbc:oracle:thin:@HOSTNAME:1521:orcl"
          validationQuery="select 1 from dual"
/>

Zie deze pagina voor de Tomcat documentatie.

Configureren geheugeninstellingen Tomcat

Voor de goede werking van de BRMO wordt geadviseerd minimaal 12GB RAM toe te wijzen aan Tomcat (ervan uitgaande dat de brmo-service de enige applicatie is die in deze tomcat instantie wordt gehost).

Deployen webapplicatie

Deploy de "brmo-service.war" door deze te kopiëren naar de "webapps" directory. Controleer in de "logs" directory in het "brmo-service.log" bestand of er geen fouten optreden en of de applicatie werkt (http://localhost:8080/brmo-service/).

Clone this wiki locally