Changes between Initial Version and Version 1 of AlternativeSetup


Ignore:
Timestamp:
Feb 23, 2010, 9:35:01 AM (14 years ago)
Author:
fknauft
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • AlternativeSetup

    v1 v1  
     1= Alternative Setup =
     2
     3== 1 Vorbereitende Installationen ==
     4
     5
     6=== 1.1 Installation der Programmerzeugungstools ===
     7
     8Bevor mit der Installation von PostgreSQL und PostGIS begonnen werden kann, muss dafür gesorgt werden, dass diese aus ihrem Sourcecode erzeugt werden können. Dies ist notwendig, da für die aktuellsten Versionen noch keine Binaries vorliegen. Folgendes Tool muss installiert werden:
     9[[BR]]
     10Xcode Tools für Mac OS X 10.5 http://developer.apple.com/tools/xcode
     11[[BR]]
     12
     13
     14
     15=== 1.2 Installation des Paketmanagers !MacPorts ===
     16
     17Da nun die notwendigen Tools für das Kompilieren von Sourcecode vorliegen, kann der Paketmanager !MacPorts verwendet werden um die für den Server notwendigen Softwarepakete zu installieren. Der Vorteil bei !MacPorts liegt darin, dass es nicht nur die Software sondern auch ihre Abhängigkeiten bereitstellt. Da es ein konsolenbasiertes Programm ist, lassen sich auch wunderbar Skripte erstellen mit denen sich z.B. automatische Softwareupdates konfigurieren lassen. Zu finden ist !MacPorts unter der folgenden Adresse: [[BR]]
     18
     19http://www.macports.org [[BR]]
     20
     21Updates von !MacPorts lassen sich ebenfalls mittels eines Konsolenkommandos durchführen:[[BR]]
     22
     23
     24{{{
     25als root:       /opt/local/bin/port selfupdate
     26}}}
     27
     28
     29== 2. Installation des Datenbanksystems ==
     30
     31Nachdem die vorbereitenden Maßnahmen abgeschlossen sind, kann jetzt mit der Installation des Datenbanksystems fortgefahren werden. Da sie mit Hilfe von !MacPorts durchgeführt wird, läuft die gesamte Installation von PostgreSQL und PostGIS auf der Konsole ab.
     32
     33
     34
     35=== 2.1 Installation von PostgreSQL ===
     36
     37Für PostgreSQL müssen 2 Pakete installiert werden, PostgreSQL selbst und der Serverdienst von PostgreSQL. Dazu wird auf der Konsole das folgende Kommando ausgeführt:
     38[[BR]]
     39
     40
     41
     42{{{
     43als root:       /opt/local/bin/port  –k  install  postgresql83  postgresql83-server
     44
     45}}}
     46
     47Insofern die Konfigurationsdatei für die postgres-Installation nicht verändert wurde, sind die Dateien von postgres unter dem Ordner '''/opt/local/lib/postgresql83'''  zu finden. Desweiteren wurde ein neuer, eingeschränkter Benutzer (postgres) angelegt, der künftig die Datenbankverwaltung übernimmt.
     48
     49
     50=== 2.2 Festlegen des Standarddatenbankordners und Datenbankinitialisierung ===
     51
     52Nachdem jetzt auch PostgreSQL installiert ist, muss noch ein Standarddatenbankverzeichnis generiert werden. Dieses beinhaltet später die vom Server angebotenen Datenbanken und kann beliebig gewählt werden. Da der User postgres für Datenbankverwaltung zuständig sein soll, müssen ihm entsprechende Rechte gewährt werden.  Im Anschluss daran kann die Datenbank initialisiert werden, was dann über den User postgres geschieht: [[BR]]
     53
     54
     55
     56{{{
     57als root:       mkdir  -p  /database/chinagis
     58                chown  -R  postgres:postgres  /database/chinagis
     59als postgres:   /opt/local/lib/postgresql83/bin/initdb -D  /database/chinagis
     60
     61}}}
     62
     63
     64Da der Standarddatenbankordner gewöhnlich '''/opt/local/var/db/postgresql83''' lautet, wird später versucht die History für Datenbankeingaben auf Konsolenebene in diesem Ordner zu speichern. Um Fehlern vorzubeugen wird dieser daher noch zusätzlich erstellt: [[BR]]
     65
     66
     67
     68{{{
     69als root:       mkdir  -p  /opt/local/var/db/postgresql83
     70                chown  -R  postgres:postgres  /opt/local/var/db
     71
     72}}}
     73
     74
     75=== 2.3 Autostart für  PostgreSQL einrichten ===
     76
     77Damit der Datenbankserver mit dem Systemstart seinen Dienst aufnimmt, muss der Serverdienst automatisch gestartet werden. Dies erfolgt über das folgende Kommando:
     78
     79
     80{{{
     81als root:       launchctl load -w /Library/LaunchDaemons/org.macports.postgresql83-server.plist
     82
     83}}}
     84
     85
     86=== 2.4 Datenbankgastbenutzer anlegen ===
     87
     88Da der Server später aus dem Internet erreichbar sein wird und auch seine Daten von jedermann abgerufen werden können, wird  ein Gastbenutzer angelegt, der nur Daten aus der Datenbank lesen darf. Mit folgendem Kommando wird der Gastuser erstellt:[[BR]]
     89
     90
     91{{{
     92als postgres:   /opt/local/lib/postgresql83/bin/createuser guest --no-createdb --no-createrole --no-superuser -p "guest"
     93
     94}}}
     95
     96Alternativ kann auch das folgende Kommando verwendet werden, die Rollenvergabe wird dabei automatisch abgefragt.
     97
     98{{{
     99als postgres:   /opt/local/lib/postgresql83/bin/createuser guest -p "guest"
     100
     101}}}
     102
     103
     104
     105
     106=== 2.5 Installation von PostGIS und GEOS vorbereiten ===
     107
     108Im Gegensatz zur Installation von PostgreSQL sollte die Konfigurationsdatei für die Installation von PostGIS angepasst werden. Dies ist notwendig um Kompatibilitätsprobleme zwischen den von OS X mitgelieferten Bibliotheken und den von PostGIS vorzubeugen. Daher wird der Installationsordner von PostGIS auf das User-Verzeichnis umgelenkt.[[BR]]
     109
     110
     111{{{
     112bearbeiten als root:    /opt/local/var/macports/sources/rsync.macports.org/release/ports/databases/postgis/Portfile
     113ersetze:                build.args  "ICONV_LDFLAGS=\"-L${prefix}/lib -liconv\"
     114durch:                  build.args  "ICONV_LDFLAGS=\"-L$/usr/lib -liconv\"
     115
     116}}}
     117
     118=== 2.6 Installation von PostGIS und GEOS ===
     119
     120Die nun entsprechend vorbereitete Installation erfolgt auf die gleiche Art und Weise wie zuvor bei PostgreSQL über das folgende Kommando:[[BR]]
     121
     122
     123{{{
     124als root:       /opt/local/bin/port -k  install  postgis
     125
     126}}}
     127
     128GEOS muss dank !MacPorts nicht extra installiert werden, da es gleich automatisch mit integriert wird.
     129
     130
     131=== 2.7 Erstellung einer Testdatenbank (optional) ===
     132
     133Um die Funktion von PostgreSQL und PostGIS zu überprüfen, kann man mit wenigen Befehlen eine Testdatenbank erstellen und diese mit der PostGIS Erweiterung ausstatten:[[BR]]
     134
     135
     136{{{
     137als postgres:   /opt/local/lib/postgresql83/bin/pg_ctl start -D /database/chinagis -l /database/chinagis/logfile
     138                /opt/local/lib/postgresql83/bin/createdb testdatenbank --encoding "UTF-8"
     139                /opt/local/lib/postgresql83/bin/createlang plpgsql testdatenbank
     140                /opt/local/lib/postgresql83/bin/psql -f /opt/local/share/postgis/lwpostgis.sql testdatenbank
     141
     142}}}
     143
     144
     145== 3. Installation des Datenbankwebinterfaces ==
     146
     147=== 3.1 Installation von Apache2 ===
     148
     149Der Apache 2 Webserver wird benötigt um das Webinterface zur Steuerung der Datenbank benutzen zu können. Da Mac OS X Apache bereits mitliefert, muss dieser nur noch aktiviert werden, was in den Servereinstellungen unter Webserver eingestellt werden kann. Der Rootordner des mitgelieferten Apache  befindet sich in ''' /Library/WebServer/Documents/ '''.
     150
     151=== 3.2 Installation von PHP5 ===
     152
     153Obwohl PHP5 bereits von Mac OS X 10.5 mitgeliefert wird, muss eine andere Version installiert werden. Der Grund dafür liegt darin, dass die mitgelieferte Variante das dynamische Einbinden von Erweiterungen nicht zulässt. Aufgrund dessen kann die Webschnittstelle phpPG Admin, die zur Administration der Datenbank auf Webebene eingesetzt werden soll, nicht eingebunden werden.[[BR]]
     154
     155Um dieses Manko zu beheben, wird eine neue PHP-Version aus dem Internet geladen. Diese ist unter der Adresse ''' http://www.entropy.ch/software/macosx/php '''  zu finden. Nachdem sie heruntergeladen und in den Ordner ''' /usr/local/php5 ''' entpackt wurde, müssen noch Änderungen in der Konfiguration des Apache gemacht werden.
     156
     157
     158{{{
     159bearbeiten als root:    /etc/apache2/httpd.conf editieren
     160ersetze:                LoadModule php5_module libexec/apache2/libphp5.so
     161durch:                  LoadModule php5_module local/php5/libphp5.so
     162
     163füge hinzu:             AddHandler  application/x-httpd-php .php
     164                        AddHandler  application/x-httpd-php-source .phps
     165
     166}}}
     167
     168Danach ist nur noch ein Neustart des Apache-Servers notwendig:
     169
     170
     171{{{
     172als root:       apachectl restart
     173
     174}}}
     175
     176=== 3.3 Installation von phpPG Admin ===
     177
     178Sobald der Apache und PHP5 laufen, kann das Webinterface in Angriff genommen werden. Dieses liegt bereits als fertiges Paket auf der Webseite ''' http://phppgadmin.sourceforge.net ''' vor und muss nur in den Documents-Ordner des Apache entpackt werden. Als Beispiel wird der Ordner ''' /Library/WebServer/Documents/pgwebadmin ''' angenommen. Das Webinterface lässt sich jetzt über die Adresse ''' http://localhost/pgwebadmin ''' aufrufen. Im Anmeldefenster lassen sich die Benutzerdaten des Datenbankusers eingeben, wobei die Anmeldung als postgres standardmäßig verboten wird. Damit ein Login über den User postgres möglich ist muss noch der folgende Eintrag  geändert werden:
     179
     180
     181{{{
     182bearbeite als root:     /Library/WebServer/Documents/pgwebadmin/conf/config.inc.php
     183ersetze:                $conf[‘extra_login_security‘] = true
     184durch:                  $conf[‘extra_login_security‘] = false
     185
     186}}}
     187
     188Wurde dieser Eintrag geändert so ist jetzt eine Anmeldung über das Webinterface möglich. Dieses bietet den gleichen Funktionsumfang wie die Software PG Admin, allerdings läuft es lokal auf dem Server und muss daher nicht auf dem Remoterechner installiert werden.
     189
     190== 4. Inbetriebnahme der Chinagis-Datenbank ==
     191
     192Nachdem jetzt alle vorbereitenden Maßnahmen abgeschlossen sind, kann jetzt mit dem Aufsetzen der eigentlichen Datenbank begonnen werden, damit diese dann produktiv eingesetzt werden kann.
     193
     194
     195=== 4.1 Erzeugung der Chinagis-Datenbank ===
     196
     197Die Daten für die Chinagis-Datenbank liegen bereits in einem rohen Format als !ArcMap Geo-Shapes vor und wurden in den Ordner ''' /database/rawdata ''' gelegt. Ebenso liegt bereits ein Importskript vor, welches eine Datenbank erstellt und die Daten importiert. Bei diesem wurden noch einige Änderungen an den Konstanten vorgenommen um es an die vorliegende Verzeichnisstruktur anzugleichen. Das Skript wird dann mit dem User postgres ausgeführt und sieht wie folgt aus:[[BR]]
     198
     199
     200
     201{{{
     202#! /bin/bash
     203
     204
     205#USAGE: $binpathpostgis/shp2pgsql [<options>] <shapefile> #[<schema>.]<table>
     206#OPTIONS:
     207#  -s <$srid>  Set the $srid field. If not specified it defaults to -1.
     208#  (-d|a|c|p) These are mutually exclusive options:
     209#      -d  Drops the table, then recreates it and populates
     210#          it with current shape file data.
     211#      -a  Appends shape file into current table, must be
     212#          exactly the same table schema.
     213#      -c  Creates a new table and populates it, this is the
     214#          default if you do not specify any options.
     215#      -p  Prepare mode, only creates the table.
     216#  -g <geometry_column> Specify the name of the geometry column
     217#     (mostly useful in append mode).
     218#  -D  Use postgresql dump format (defaults to sql insert statments.
     219#  -k  Keep postgresql identifiers case.
     220#  -i  Use int4 type for all integer dbf fields.
     221#  -I  Create a GiST index on the geometry column.
     222#  -S  Generate simple geometries instead of MULTI geometries.
     223#  -w  Use wkt format (for postgis-0.x support - drops M - drifts coordinates).
     224
     225#  -W <$encoding> Specify the character $encoding of Shape's
     226#     attribute column. (default : "ASCII")
     227#  -N <policy> Specify NULL geometries handling policy (insert,skip,abort)
     228#  -n  Only import DBF file.
     229#  -? Display this help screen
     230
     231# If the *.shp can not be imported, may be, the UTF-8 is not correctly saved:
     232# Open the *.dbf with NeoOffice (choose Encoding UTF-8)and save again with UTF-8!
     233
     234#_____________________
     235# VARIABLE DEFINITIONS
     236
     237database=chinagis
     238srid="2333"
     239encod="UTF-8"
     240binpath=/opt/local/lib/postgresql83/bin
     241binpathpostgis=/opt/local/bin
     242dbpath=/database/chinagis
     243datapath=/database/rawdata
     244
     245#_____________________
     246#
     247
     248# restarting postgres
     249$binpath/pg_ctl restart -w -l $dbpath/logfile -D $dbpath -m i
     250
     251# dropping the old database
     252$binpath/dropdb $database
     253
     254# creating a new database
     255$binpath/createdb $database --encoding $encod
     256$binpath/createlang plpgsql $database
     257$binpath/psql -f $binpathpostgis/../share/postgis/lwpostgis.sql $database
     258
     259$binpathpostgis/shp2pgsql -s $srid -S -W $encod $datapath/v4_1820_lks_pgn_utf/v4_1820_lks_pgn_utf.shp public.v4_1820_lks_pgn_utf $database | $binpath/psql -d $database
     260
     261$binpathpostgis/shp2pgsql -s $srid -W $encod $datapath/v4_1820_rvr_lin_utf/v4_1820_rvr_lin_utf.shp public.v4_1820_rvr_lin_utf $database | $binpath/psql -d $database
     262
     263$binpathpostgis/shp2pgsql -s $srid -S -W $encod $datapath/v4_time_cnty_pts_utf/v4_time_cnty_pts_utf.shp public.v4_time_cnty_pts_utf $database | $binpath/psql -d $database
     264
     265$binpathpostgis/shp2pgsql -s $srid -W $encod $datapath/v4_time_pref_pgn_utf/v4_time_pref_pgn_utf.shp public.v4_time_pref_pgn_utf $database | $binpath/psql -d $database
     266
     267$binpathpostgis/shp2pgsql -s $srid -S -W $encod $datapath/v4_time_pref_pts_utf/v4_time_pref_pts_utf.shp public.v4_time_pref_pts_utf $database | $binpath/psql -d $database
     268
     269$binpathpostgis/shp2pgsql -s $srid -W $encod $datapath/v4_time_prov_pgn_utf/v4_time_prov_pgn_utf.shp public.v4_time_prov_pgn_utf $database | $binpath/psql -d $database
     270
     271$binpathpostgis/shp2pgsql -s $srid -S -W $encod $datapath/v4_time_prov_pts_utf/v4_time_prov_pts_utf.shp public.v4_time_prov_pts_utf $database | $binpath/psql -d $database
     272
     273$binpathpostgis/shp2pgsql -s $srid -W $encod $datapath/v4_time_reg_pgn_utf/v4_time_reg_pgn_utf.shp public.v4_time_reg_pgn_utf $database | $binpath/psql -d $database
     274
     275$binpathpostgis/shp2pgsql -s $srid -S -W $encod $datapath/v4_time_reg_pts_utf/v4_time_reg_pts_utf.shp public.v4_time_reg_pts_utf $database | $binpath/psql -d $database
     276
     277# VACUUM
     278$binpath/vacuumdb -d $database –z
     279
     280}}}
     281
     282
     283=== 4.2 Zugriffsrechte für Gastbenutzer einrichten ===
     284
     285Wie bereits erwähnt sollte der Gastbenutzer nur Leserechte für die Datenbank besitzen. Daher müssen diese Rechte jetzt entsprechend konfiguriert werden. Dies kann mittels Konsolenzugriff auf die Daten erfolgen oder über die Webschnittstelle.
     286Die Zugriffsrechte auf die Datenbank sehen wie folgt aus: der Gast darf die Datenbank verwenden  ( ''' USAGE ''' ) und auch temporäre Tabellen anlegen  ( ''' TEMPORARY ''' ). Das Recht Tabellen permanent anzulegen wird ihm jedoch verwehrt.[[BR]]
     287
     288Desweiteren müssen Zugriffsrechte für die jeweiligen Tabellen festgelegt werden. Hier werden ihm nur die Rechte gegeben Daten abzurufen ( ''' SELECT ''' ), Fremdschlüssel zu erzeugen ( ''' REFERENCES ''' ) und Trigger zu erzeugen ( ''' TRIGGER ''' ). Das Einfügen ( ''' INSERT ''' ), Verändern ( ''' UPDATE ''' ) und Löschen von Daten ( ''' DELETE ''' ) und das erzeugen von Regeln ( ''' RULE ''' ) werden ihm verwehrt.[[BR]]
     289
     290Mit Hilfe der Webschnittstelle lassen sich die Rechte festlegen indem die Datenbank bzw. die Tabellen angewählt werden und der Reiter ''' "Privileges" ''' angewählt wird. Auf Konsolenebene werden dazu die Befehle ''' grant ''' (gewähren) und ''' revoke ''' (verwehren) verwendet. Vergeben kann diese Rechte jeder, der selbst das entsprechende Recht dazu hat. In diesem Fall wäre dies der User postgres.[[BR]]
     291
     292
     293
     294===== 4.3 Datenbankserver für Remotezugriff konfigurieren =====
     295
     296Bisher ist der Zugriff auf das Datenbanksystem nur lokal möglich. Der Remote-Zugriff ist zwar schon über das Webinterface möglich, aber auch nur da es auf dem Server läuft und somit einen lokalen Zugriff tätigt. Damit man auch von Außen Zugriff auf das Datenbanksystem bekommt, müssen entsprechende Konfigurationseinträge wie folgt gesetzt werden.[[BR]]
     297
     298
     299{{{
     300bearbeite als root:     /database/chinagis/postgresql.conf
     301ersetze:                #listen_adresses ‘localhost‘
     302durch:                  listen_adresses = ‘*‘
     303
     304ersetze:                #port = 5432
     305durch:                  port = 5432
     306
     307}}}
     308
     309{{{
     310bearbeite als root:     /database/chinagis/pg_hba.conf
     311füge hinzu:             host    all     postgres        141.14.0.0      255.255.0.0     trust
     312füge hinzu:             host    all     guest           0.0.0.0         0.0.0.0         trust
     313
     314}}}
     315
     316Mit diesen Einstellungen ist es erlaubt, dass sich der Gastbenutzer von jeder beliebigen IP-Adresse auf die Datenbank zugreifen darf. Der User postgres hingegen darf derzeit nur aus dem ''' 141.14.0.0/16 ''' Netz zugreifen. Dies muss abgeändert werden, wenn die externe Nutzung des postgres Users erwünscht ist. Damit diese Änderungen aktiv werden, muss die Datenbank neu gestartet werden:
     317
     318
     319{{{
     320als postgres:   /opt/local/lib/postgresql83/bin/pg_ctl restart -D /database/chinagis -l /database/chinagis/logfile
     321
     322}}}
     323
     324Nach dem Neustart der Datenbank kann man nun auch remote auf die Datenbank zugreifen, etwa mit Tools wie PG Admin und Udig.
     325\\
     326
     327=== 4.4 Usereinschränkungen im Überblick ===
     328
     329''' guest ''' : hat von überall Zugriff auf die Chinagis-Datenbank, aber nur Leserechte[[BR]]
     330
     331''' postgres ''' :      hat derzeit nur Zugriffsrechte aus dem 141.14.0.0/16 Netz, dafür aber Vollzugriff auf die Chinagis-Datenbank und verteilt Zugriffsrechte[[BR]]
     332
     333
     334=== Was ist wo zu finden? ===
     335
     336Apache-Konfigurationsordner:    /etc/Apache2[[BR]]
     337
     338Apache-Rootdir:                 /Library/WebServer/Documents[[BR]]
     339
     340Chinagis-Datenbank:             /database/chinagis[[BR]]
     341
     342!MacPort Binaries:              /opt/local/bin[[BR]]
     343
     344!MacPort Portfiles:             /opt/local/var/macports/sources/rsync.macports.org/release/ports[[BR]]
     345
     346PHP5:                           /usr/local/php5[[BR]]
     347
     348phpPGAdmin:                     /Library/WebServer/Documents/pgwebadmin[[BR]]
     349
     350Postgis-Librarys:               /usr/lib/[[BR]]
     351
     352Postgis-Tools & Binaries:       /opt/local/bin[[BR]]
     353
     354Postgres-Installationsordner:   /opt/local/lib/postgresql83[[BR]]
     355
     356
     357=== Softwarequellen ===
     358
     359
     360!MacPorts:               http://www.macports.org [[BR]]
     361
     362PHP5:                    http://www.entropy.ch/software/macosx/php [[BR]]
     363
     364PHP PG Webadmin:         http://phppgadmin.sourceforge.net [[BR]]
     365
     366PG Admin:                http://pgadmin.org [[BR]]
     367
     368UDig:                    http://udig.refractions.net [[BR]]
     369
     370Xcode Tools:             http://developer.apple.com/tools/xcode [[BR]]
     371
     372
     373
     374=== Literaturquellen ===
     375
     376http://www.postgresql.org/docs/ [[BR]]
     377
     378http://docs.moodle.org/en/Step_by_Step_Installation_on_a_Mac_OS_X_10.5_Server [[BR]]
     379
     380http://www.lincolnritter.com/blog/2007/12/04/installing-postgresql-postgis-and-more-on-os-x-leopard/ [[BR]]
     381