修改postgis安装

This commit is contained in:
wandoubaba 2025-04-28 16:45:56 +08:00
parent 6b50baee40
commit effd1e1621

View File

@ -71,9 +71,29 @@ cd postgresql-17.4
```sh
make all
su
make install
```
#### 安装fuzzystrmatch扩展
fuzzystrmatch 是 PostgreSQL 的一个内置扩展模块,提供一组用于模糊字符串匹配的函数。它的核心作用是支持基于相似度的字符串比较,而非精确匹配。
PostGIS由于以下原因而需要用到 fuzzystrmatch 扩展:
- 地理编码依赖postgis_tiger_geocoder美国地址地理编码器使用 fuzzystrmatch 的算法来:
+ 匹配不规范的地址输入(如拼写错误、缩写)。
+ 计算地址字符串与数据库中记录地址的相似度。
- 地址标准化address_standardizer 扩展也依赖它来清洗和标准化地址数据。
在postgres源码目录下执行下面的操作安装fuzzystrmatch扩展。
```sh
cd contrib/fuzzystrmatch
make
sudo make install
```
#### 配置环境
```sh
@ -97,9 +117,10 @@ psql (PostgreSQL) 17.4
#### 初始化数据库
```sh
sudo mkdir -p /usr/local/pgsql/data
sudo chown -R postgres:postgres /usr/local/pgsql/data
sudo su - postgres -c 'initdb -D /usr/local/pgsql/data'
mkdir -p /usr/local/pgsql/data
chown -R postgres:postgres /usr/local/pgsql/data
su - postgres
initdb -D /usr/local/pgsql/data
```
最后一句执行后应该可以看到类似下面的结果
@ -138,7 +159,7 @@ Success. You can now start the database server using:
#### 首次启动postgres服务
```sh
sudo su - postgres -c 'pg_ctl -D /usr/local/pgsql/data -l /usr/local/pgsql/data/logfile start'
pg_ctl -D /usr/local/pgsql/data -l logfile start
```
应该看到类似下面的消息
@ -150,7 +171,13 @@ server started
#### 修改配置
编辑`postgresql.conf`
编辑`postgresql.conf`
```sh
vim /usr/local/pgsql/data/postgresql.conf
```
修改内容:
```ini
# 监听IP地址设置为*表示允许其他主机连接
@ -159,7 +186,13 @@ listen_addresses = '*'
port = 5432
```
编辑`pg_hba.conf`添加下面这一行表示信任来自本地局域网的连接根据实际情况编写IP地址
编辑`pg_hba.conf`
```sh
vim /usr/local/pgsql/data/pg_hba.conf
```
添加下面这一行表示信任来自本地局域网的连接根据实际情况编写IP地址
```ini
# IPv4 LAN connections:
@ -169,15 +202,17 @@ host all all 192.168.156.0/24 trust
#### 重启postgres服务
```sh
sudo su - postgres -c 'pg_ctl -D /usr/local/pgsql/data -l /usr/local/pgsql/data/logfile restart'
pg_ctl -D /usr/local/pgsql/data -l logfile restart
```
#### 配置systemd服务
这个时候通过数据库客户端试着连接这个数据库服务,使用用户名`postgres`,密码空,默认数据库`postgres`,端口号`5432`,应该可以连接成功。
#### 配置systemd服务
接下来我们配置一下`systemd`系统服务:
> 使用`exit`命令退出`postgres`用户,应该可以直接返回到`root`用户
```sh
vim /etc/systemd/system/postgres.service
```
@ -207,10 +242,10 @@ WantedBy=multi-user.target
然后让服务生效并实现开机自启
```sh
sudo su - postgres -c 'pg_ctl -D /usr/local/pgsql/data -l /usr/local/pgsql/data/logfile stop'
sudo systemctl daemon-reload
sudo systemctl enable postgres
sudo systemctl start postgres
su - postgres -c 'pg_ctl -D /usr/local/pgsql/data -l /usr/local/pgsql/data/logfile stop'
systemctl daemon-reload
systemctl enable postgres
systemctl start postgres
```
完成上面的操作postgres服务已经安装完成重启系统试一下postgres服务应该可以开机自启。
@ -220,13 +255,14 @@ sudo systemctl start postgres
#### 安装依赖
```sh
apt-get install -y \
sudo apt-get install -y \
libxml2-dev \
libgeos-dev \
libproj-dev \
libprotobuf-c-dev \
protobuf-c-compiler \
libgdal-dev
libgdal-dev \
libsfcgal-dev
```
#### 编译
@ -240,7 +276,8 @@ cd postgis-3.5.2
--with-geosconfig=/usr/bin/geos-config \
--with-proj \
--with-gdalconfig=/usr/bin/gdal-config \
--with-json-c
--with-json-c \
--with-sfcgal
```
#### 构建并安装
@ -256,6 +293,11 @@ make install
sudo su - postgres -c 'createdb postgis_template'
sudo su - postgres -c 'psql postgis_template -c "CREATE EXTENSION postgis;"'
sudo su - postgres -c 'psql postgis_template -c "CREATE EXTENSION postgis_raster;"'
sudo su - postgres -c 'psql postgis_template -c "CREATE EXTENSION postgis_sfcgal;"'
sudo su - postgres -c 'psql postgis_template -c "CREATE EXTENSION fuzzystrmatch;"'
sudo su - postgres -c 'psql postgis_template -c "CREATE EXTENSION address_standardizer;"'
sudo su - postgres -c 'psql postgis_template -c "CREATE EXTENSION address_standardizer_data_us;"'
sudo su - postgres -c 'psql postgis_template -c "CREATE EXTENSION postgis_tiger_geocoder;"'
sudo su - postgres -c 'psql postgis_template -c "CREATE EXTENSION postgis_topology;"
```
@ -294,6 +336,28 @@ SELECT ST_AsText(ST_GeomFromText('POINT(1 1)'));
(1 row)
```
执行下面的查询:
```sql
SELECT name, default_version,installed_version
FROM pg_available_extensions WHERE name LIKE 'postgis%' or name LIKE 'address%';
```
应该能看到下面的结果:
```sh
name | default_version | installed_version
------------------------------+-----------------+-------------------
postgis | 3.5.2 |
address_standardizer | 3.5.2 |
postgis_sfcgal | 3.5.2 |
postgis_raster | 3.5.2 |
postgis_tiger_geocoder | 3.5.2 |
address_standardizer_data_us | 3.5.2 |
postgis_topology | 3.5.2 |
(7 rows)
```
用`exit`命令可以退出psql命令行
## 完成