Maison > Article > Opération et maintenance > Comment installer et utiliser PostgreSQL et PostGIS sous Linux
Cet article présente principalement l'installation et l'utilisation de PostgreSQL et PostGIS sous Linux, et analyse et explique les points auxquels il faut prêter attention. J'espère que cela pourra aider tout le monde.
PostgreSQL et PostGIS sont déjà des projets open source populaires et ont été inclus dans les packages yum ou apt des principales distributions Linux. Pour Ubuntu, par exemple, installez simplement les packages suivants :
$ sudo apt-get install postgresql-client postgresql postgis -y
Pour la série RedHat, veuillez installer :
$ sudo yum install postgresql-server postgresql postgis
Après l'installation initiale, une base de données nommée postgres et un utilisateur de base de données nommé postgres sont générés par défaut. Il convient de noter ici qu'un utilisateur du système Linux nommé postgres est également généré. Lorsque nous utiliserons PostgreSQL à l'avenir, nous devrions le faire dans cet utilisateur Postgres nouvellement créé.
Si vous installez à partir du code source
Il n'est pas recommandé d'installer à partir du code source. J'ai essayé d'installer à partir de la source. C'est trop gênant et diverses installations de Make sont sujettes aux erreurs. Finalement, je l'ai installé en utilisant RPM. Mais comme j'ai passé du temps à faire des recherches et que je l'ai installé avec succès, je vais l'enregistrer. Cependant, il peut y avoir des erreurs, donc si les lecteurs souhaitent installer à partir du code source, soyez prêt à revenir en arrière.
Si vous utilisez la compilation des sources et effectuez l'installation, cette section nécessite une configuration supplémentaire.
Il semble que l'installation de la série CentOS nécessite également...
Après l'installation par défaut de make, le répertoire d'installation de PostgreSQL est : /usr/local/pgsql/
Tout d'abord, selon Pour référence dans ce lien, vous devez configurer les variables d'environnement
$ set $PGDATA = "/usr/local/pgsql/database"
Cependant, après avoir exécuté pg_ctl start, un. Une erreur apparaîtra :
pg_ctl: directory "/usr/local/pgsql/database" is not a database cluster directory
Dans ce cas, vous devez suivre les étapes de la documentation officielle PostGreSQL pour créer une vraie base de données : 076402276aae5dbec7f672f8f4e5cc81
PostgreSQL : Documentation : 9.1 : Création d'un cluster de base de données
Créez d'abord un compte utilisateur nommé postgres
$ usradd postgres $ sudo chown postgres /usr/local/pgsql/database
Ensuite entrez ce compte et créez une base de données
$ sudo su postgres $ initdb -D /usr/local/pgsql/database/
À ce moment, le shell affichera :
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
Félicitations, vous pouvez ensuite démarrer PostgreSQL :
pg_ctl -D /usr/local/pgsql/database/ -l /usr/local/pgsql/database/psql.log start
entrez le compte postgres et accédez à la console PostgreSQL :
$ sudo su postgres $ psql
Cela équivaut à L'utilisateur système postgres se connecte à la base de données en tant qu'utilisateur de base de données avec le même nom. Sinon, nous devons spécifier l'utilisateur dans les paramètres à chaque fois. nous exécutons psql, ce qui est facile à oublier.
Définissez un mot de passe dans psql - il convient de noter que le mot de passe défini ici n'est pas le mot de passe du compte système postgres, mais le mot de passe de l'utilisateur dans la base de données :
postgres=# \password postgres
Ensuite, entrez simplement le mot de passe lorsque vous y êtes invité.
Installer PostGIS à partir du code source
Si vous choisissez d'installer PostgreSQL à partir du code source, vous devez d'abord déterminer quelle version de PostgreSQL vous avez installée
Ensuite, aller sur PostGIS Accédez à la page Web pour vérifier à quelle version de PostGIS elle correspond.
Enfin, téléchargez la source correspondante selon la version de PostGIS
L'import final est très fastidieux L'auteur est bloqué à cette étape, j'ai donc finalement abandonné l'installation à partir du code source.. .
Importer l'extension PostGIS
Selon les différentes versions de postgresql et postgis, le chemin sera légèrement différent, principalement parce que le chemin contient des informations de version :
$ 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
Dans l'opération ci-dessus, une base de données vide appelée "template_postgis" a été créée. Cette base de données est vide et appartient à l'utilisateur postgres. Faites attention à ne pas ajouter de données à cette base de données. La raison pour laquelle cette base de données est appelée « modèle » signifie qu'elle est utilisée pour la dérivation.
Le chemin PostGIS correspondant peut être différent. S'il échoue, essayez plus près du chemin ci-dessus et trouvez quelques fichiers .sql à essayer.
Convertir le fichier .shp en base de données PostGIS
Convertir .shp en fichier .sql
Recherchez d'abord le fichier qui doit être converti, en supposant que il doit être converti. Le fichier .shp est : /tmp/demo.shp, puis procédez comme suit :
$ sudo su postgres $ cd /tmp $ shp2pgsql -W GBK -s 3857 ./demo.shp entry > demo.sql
Ici, nous devons expliquer la signification de chacun partie de la dernière phrase :
-W GBK : Si votre fichier .shp contient des caractères chinois, veuillez ajouter cette option
-s 3857 : Spécifiez le système de coordonnées de référence du fichier. Mon fichier .shp utilise EPSG:3857
./demo.shp : Le chemin du fichier .shp
entrée : indique que vous je veux le nom de la table de base de données importée - en supposant que ce fichier .shp représente chaque entrée, je l'ai donc nommé "entrée"
demo.sql
Après avoir obtenu le fichier .sql, vous pouvez l'importer directement dans la base de données PostgreSQL.
Ici, vous devez utiliser le modèle précédent.
sudo su postgres psql CREATE DATABASE newdb WITH TEMPLATE originaldb OWNER dbuser;
newdb : nouveau nom de base de données
originaldb : qui est le précédent 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 = '*'
相关推荐:
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!