修改postgis安装
This commit is contained in:
parent
6b50baee40
commit
effd1e1621
@ -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命令行
|
||||
|
||||
## 完成
|
||||
|
Loading…
Reference in New Issue
Block a user