この記事では、主に Linux での PostgreSQL と PostGIS のインストールと使用方法を紹介し、注意が必要な点を分析して説明しますので、必要な方はぜひ参考にしてください。
PostgreSQL と PostGIS はすでに人気のあるオープン ソース プロジェクトであり、主要な Linux ディストリビューションの yum または apt パッケージに含まれています。たとえば、Ubuntu の場合は、次のパッケージをインストールするだけです:
$ sudo apt-get install postgresql-client postgresql postgis -y
RedHat シリーズの場合、インストールしてください:
$ sudo yum install postgresql-server postgresql postgis
初期インストール後、postgres という名前のデータベースと postgres という名前のデータベース ユーザーが生成されます。デフォルト。ここで、postgres という名前の Linux システム ユーザーも生成されることに注意してください。今後PostgreSQLを運用する際には、この新しく作成したpostgresユーザーで運用する必要があります。
ソースコードからインストールする場合
ソースコードからインストールすることは推奨されません。ソースコードからインストールしようとしましたが、面倒すぎて、さまざまなmake installでエラーが発生します。最後にrpmを使ってインストールしました。しかし、時間をかけて調査し、無事にインストールできたので、記録しておきます。ただし、エラーが発生する可能性があるため、ソース コードからインストールしたい場合は、ロールバックする準備をしてください。
ソースのコンパイルと make install インストールを使用している場合、このセクションでは追加の設定が必要です。
CentOSシリーズのインストールにも必要なようですが…
デフォルトのmake install後のPostgreSQLインストールディレクトリは/usr/local/pgsql/
まず、このリンクの参考によれば、環境変数を設定する必要があります
$ set $PGDATA = "/usr/local/pgsql/database"
しかし、pg_ctl startを実行すると、エラーが表示されます:
pg_ctl: directory "/usr/local/pgsql/database" is not a database cluster directory
この場合、実際のデータベースを作成するには、公式PostGreSQLドキュメントの手順に従う必要があります。 :
PostgreSQL: ドキュメント: 9.1: データベースクラスターの作成
まず、postgres という名前のユーザーアカウントを作成します
$ usradd postgres $ sudo chown postgres /usr/local/pgsql/database
次に、このアカウントを入力してデータベースを作成します
$ sudo su postgres $ initdb -D /usr/local/pgsql/database/
今回、シェルは次のように出力します:
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
おめでとうございます、次へ PostgreSQL を起動できます:
pg_ctl -D /usr/local/pgsql/database/ -l /usr/local/pgsql/database/psql.log start
$ sudo su postgres $ psql
psql でパスワードを設定します - ここで設定するパスワードは postgres システム アカウントのパスワードではなく、データベース内のユーザー パスワードであることに注意してください:
postgres=# \password postgres
ソース コードから PostGIS をインストールします
ソース コードから PostgreSQL をインストールすることを選択した場合は、まずインストールした PostgreSQL のバージョンを確認する必要があります
次に、PostGIS Web ページにアクセスして PostGIS のバージョンを確認しますに相当します。
最後に、PostGISのバージョンに応じて対応するソースをダウンロードします
最後のインポートが非常に面倒なので、作者はこの段階で行き詰ってしまい、最終的にソースコードからのインストールを断念しました…
PostGIS拡張機能をインポートします
postgresql と postgis によると、バージョンに応じて、パスは若干異なります。これは主にパスにバージョン情報が含まれているためです:
$ 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
対応する PostGIS パスが異なる可能性があります。失敗した場合は、上記のパスの近くで試して、いくつかの .sql ファイルを見つけて試してください。
.shp ファイルを PostGIS データベースに変換します
.shp を .sql ファイルに変換します
まず、変換する必要がある .shp ファイルが /tmp/demo であると仮定します。 shp を使用し、次の操作を実行します:
$ sudo su postgres $ cd /tmp $ shp2pgsql -W GBK -s 3857 ./demo.shp entry > demo.sql
PostGIS データベースを作成します
sudo su postgres psql CREATE DATABASE newdb WITH TEMPLATE originaldb OWNER dbuser;
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 = '*'
相关推荐:
以上がLinux に PostgreSQL と PostGIS をインストールして使用する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。