Heim > Artikel > Betrieb und Instandhaltung > So installieren und verwenden Sie PostgreSQL und PostGIS unter Linux
Dieser Artikel stellt hauptsächlich die Installation und Verwendung von PostgreSQL und PostGIS unter Linux vor und analysiert und erklärt die Punkte, auf die man achten muss. Ich hoffe, dass er allen helfen kann.
PostgreSQL und PostGIS sind bereits beliebte Open-Source-Projekte und wurden in die Yum- oder Apt-Pakete der wichtigsten Linux-Distributionen aufgenommen. Für Ubuntu installieren Sie beispielsweise einfach die folgenden Pakete:
$ sudo apt-get install postgresql-client postgresql postgis -y
Für die RedHat-Serie installieren Sie bitte:
$ sudo yum install postgresql-server postgresql postgis
Nach der Erstinstallation werden standardmäßig eine Datenbank namens postgres und ein Datenbankbenutzer namens postgres generiert. Hierbei ist zu beachten, dass auch ein Linux-Systembenutzer namens postgres generiert wird. Wenn wir in Zukunft PostgreSQL betreiben, sollten wir dies in diesem neu erstellten Postgres-Benutzer tun.
Wenn Sie vom Quellcode installieren
Es wird nicht empfohlen, vom Quellcode zu installieren. Ich habe versucht, von der Quelle zu installieren Code ist zu mühsam und verschiedene Make-Installationen sind fehleranfällig. Schließlich habe ich es mit rpm installiert. Aber da ich einige Zeit mit der Recherche verbracht habe und es erfolgreich installiert habe, werde ich es aufzeichnen – es können jedoch Fehler auftreten. Wenn Leser also die Installation vom Quellcode aus durchführen möchten, seien Sie bitte bereit, ein Rollback durchzuführen.
Wenn Sie die Quellkompilierung verwenden und die Installation durchführen, erfordert dieser Abschnitt eine zusätzliche Konfiguration.
Es scheint, dass die Installation der CentOS-Serie auch erfordert...
Nach der Standard-Make-Installation lautet das PostgreSQL-Installationsverzeichnis: /usr/local/pgsql/
Zunächst müssen Sie gemäß Zur Referenz in diesem Link die Umgebungsvariablen
$ set $PGDATA = "/usr/local/pgsql/database"
konfigurieren. Nach dem Ausführen von pg_ctl starten Sie jedoch Es wird ein Fehler angezeigt:
pg_ctl: directory "/usr/local/pgsql/database" is not a database cluster directory
In diesem Fall müssen Sie die Schritte in der offiziellen PostGreSQL-Dokumentation befolgen, um eine echte Datenbank zu erstellen: 076402276aae5dbec7f672f8f4e5cc81
PostgreSQL: Dokumentation: 9.1: Erstellen eines Datenbankclusters
Erstellen Sie zuerst ein Benutzerkonto mit dem Namen postgres
$ usradd postgres $ sudo chown postgres /usr/local/pgsql/database
Dann Geben Sie dieses Konto ein und erstellen Sie eine Datenbank
$ sudo su postgres $ initdb -D /usr/local/pgsql/database/
Zu diesem Zeitpunkt gibt die Shell Folgendes aus:
The files belonging to this database system will be owned by user "postgres". This user must also own the server process. The database cluster will be initialized with locale "C". The default database encoding has accordingly been set to "SQL_ASCII". The default text search configuration will be set to "english". Data page checksums are disabled. fixing permissions on existing directory /usr/local/pgsql/database ... ok creating subdirectories ... ok selecting default max_connections ... 100 selecting default shared_buffers ... 128MB selecting dynamic shared memory implementation ... posix creating configuration files ... ok creating template1 database in /usr/local/pgsql/database/base/1 ... ok initializing pg_authid ... ok initializing dependencies ... ok creating system views ... ok loading system objects' descriptions ... ok creating collations ... ok creating conversions ... ok creating dictionaries ... ok setting privileges on built-in objects ... ok creating information schema ... ok loading PL/pgSQL server-side language ... ok vacuuming database template1 ... ok copying template1 to template0 ... ok copying template1 to postgres ... ok syncing data to disk ... ok WARNING: enabling "trust" authentication for local connections You can change this by editing pg_hba.conf or using the option -A, or --auth-local and --auth-host, the next time you run initdb. Success. You can now start the database server using: pg_ctl -D /usr/local/pgsql/database/ -l logfile start
Herzlichen Glückwunsch, Sie können PostgreSQL als nächstes starten:
pg_ctl -D /usr/local/pgsql/database/ -l /usr/local/pgsql/database/psql.log start
geben Sie das Postgres-Konto ein und rufen Sie die PostgreSQL-Konsole auf:
$ sudo su postgres $ psql
Dies entspricht: Der Systembenutzer postgres meldet sich als Datenbankbenutzer mit demselben Namen bei der Datenbank an. Ansonsten müssen wir den Benutzer jedes Mal in den Parametern angeben Wir führen psql aus, was man leicht vergisst.
Legen Sie ein Passwort in psql fest – es ist zu beachten, dass das hier festgelegte Passwort nicht das Passwort des Postgres-Systemkontos ist, sondern das Benutzerpasswort in der Datenbank:
postgres=# \password postgres
Dann geben Sie einfach nach Aufforderung das Passwort ein.
PostGIS aus dem Quellcode installieren
Wenn Sie PostgreSQL aus dem Quellcode installieren möchten, müssen Sie zunächst feststellen, welche Version von PostgreSQL Sie installiert haben
Dann Gehen Sie zu PostGIS. Gehen Sie zur Webseite, um zu überprüfen, welcher Version von PostGIS sie entspricht.
Laden Sie abschließend die entsprechende Quelle entsprechend der PostGIS-Version herunter
Der endgültige Import ist sehr mühsam. Der Autor bleibt bei diesem Schritt hängen, daher habe ich die Installation vom Quellcode endgültig aufgegeben. .
PostGIS-Erweiterung importieren
Je nach verschiedenen Versionen von Postgresql und Postgis unterscheidet sich der Pfad geringfügig, hauptsächlich weil der Pfad Versionsinformationen enthält:
$ sudo su postgres $ createdb template_postgis $ createlang plpgsql template_postgis $ psql -d template_postgis -f /usr/share/postgresql/9.5/contrib/postgis-2.2/postgis.sql $ psql -d template_postgis -f /usr/share/postgresql/9.5/contrib/postgis-2.2/spatial_ref_sys.sql
Im obigen Vorgang wurde eine leere Datenbank namens „template_postgis“ erstellt. Diese Datenbank ist leer und gehört dem Postgres-Benutzer. Achten Sie darauf, dieser Datenbank keine Daten hinzuzufügen. Der Grund, warum diese Datenbank als „Vorlage“ bezeichnet wird, bedeutet, dass sie zur Ableitung verwendet wird.
Der entsprechende PostGIS-Pfad kann anders sein. Wenn dies fehlschlägt, versuchen Sie es mit dem oben genannten Pfad und suchen Sie nach einigen .sql-Dateien, die Sie ausprobieren können.
.shp-Datei in eine PostGIS-Datenbank konvertieren
.shp-in eine .sql-Datei konvertieren
Suchen Sie zunächst die Datei, die konvertiert werden muss, sofern dies der Fall ist Es muss konvertiert werden. Die .shp-Datei lautet: /tmp/demo.shp. Gehen Sie dann wie folgt vor:
$ sudo su postgres $ cd /tmp $ shp2pgsql -W GBK -s 3857 ./demo.shp entry > demo.sql
Hier müssen wir jeweils die Bedeutung erklären Teil des letzten Satzes:
-W GBK: Wenn Ihre .shp-Datei chinesische Schriftzeichen enthält, fügen Sie bitte diese Option hinzu
-s 3857 : Geben Sie das Referenzkoordinatensystem der Datei an. Meine .shp-Datei verwendet EPSG:3857
./demo.shp: Der Pfad der .shp-Datei
Eintrag: zeigt an, dass Sie möchte den Namen der importierten Datenbanktabelle – vorausgesetzt, dass diese .shp-Datei jeden Eintrag darstellt, also habe ich ihn „Eintrag“ genannt
demo.sql
Nachdem Sie die .sql-Datei erhalten haben, können Sie sie direkt in die PostgreSQL-Datenbank importieren.
Hier müssen Sie die vorherige Vorlage verwenden.
sudo su postgres psql CREATE DATABASE newdb WITH TEMPLATE originaldb OWNER dbuser;
newdb: neuer Datenbankname
originaldb: das ist das vorherige template_postgis
dbuser:你的账户名,我一般使用 postgres
导入 .sql 文件
sudo su postgres psql \c newdb \i demo.sql \d
可以看到,.sql 文件已经被导入了。
OK,现在我们在本机(服务器 IP 假设是 192.168.1.111)用以下命令登录 psql,会发现一段输出:
$ psql -h 192.168.1.111 -p 5432 psql: could not connect to server: Connection refused Is the server running on host "100.94.110.105" and accepting TCP/IP connections on port 5432?
这是因为 PostgreSQL 默认不对外开放权限,只对监听环回地址。要修改的话,需要找到 postgresql.conf 文件,修改值 listen_addresses:
listen_addresses = '*'
相关推荐:
Das obige ist der detaillierte Inhalt vonSo installieren und verwenden Sie PostgreSQL und PostGIS unter Linux. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!