postgis, rustfs

This commit is contained in:
wandoubaba 2026-07-18 15:06:51 +08:00
parent effd1e1621
commit 7020e7df22
2 changed files with 182 additions and 5 deletions

View File

@ -77,16 +77,16 @@ make install
#### 安装fuzzystrmatch扩展
fuzzystrmatch 是 PostgreSQL 的一个内置扩展模块,提供一组用于模糊字符串匹配的函数。它的核心作用是支持基于相似度的字符串比较,而非精确匹配。
`fuzzystrmatch` 是 PostgreSQL 的一个内置扩展模块,提供一组用于模糊字符串匹配的函数。它的核心作用是支持基于相似度的字符串比较,而非精确匹配。
PostGIS由于以下原因而需要用到 fuzzystrmatch 扩展:
PostGIS由于以下原因而需要用到 `fuzzystrmatch` 扩展:
- 地理编码依赖postgis_tiger_geocoder美国地址地理编码器使用 fuzzystrmatch 的算法来:
- 地理编码依赖postgis_tiger_geocoder美国地址地理编码器使用 `fuzzystrmatch` 的算法来:
+ 匹配不规范的地址输入(如拼写错误、缩写)。
+ 计算地址字符串与数据库中记录地址的相似度。
- 地址标准化address_standardizer 扩展也依赖它来清洗和标准化地址数据。
在postgres源码目录下执行下面的操作安装fuzzystrmatch扩展。
在postgres源码目录下执行下面的操作安装`fuzzystrmatch`扩展。
```sh
cd contrib/fuzzystrmatch
@ -250,7 +250,7 @@ systemctl start postgres
完成上面的操作postgres服务已经安装完成重启系统试一下postgres服务应该可以开机自启。
### 编译安装PostGIS扩展
### 编译安装PostGIS
#### 安装依赖
@ -287,6 +287,17 @@ make
make install
```
#### 安装address_standardizer扩展
`address_standardizer` 是专为地址数据清洗与标准化设计的扩展,通常与 `postgis_tiger_geocoder`配合使用。它的核心功能是将非结构化、格式不一致的地址转换为结构化、规范化的格式从而提升地理编码Geocoding的准确性和效率。
在postgis源码目录下执行下面的操作安装`address_standardizer`扩展。
```sh
cd extensions/address_standardizer
```
#### 创建数据库并启用PostGIS扩展
```sh

166
docs/src/ops/rustfs.md Normal file
View File

@ -0,0 +1,166 @@
# 部署RustFS服务
## 部署记录
### 系统配置
操作系统Anolis OS 23.4
CPU2核
内存4GB
数据盘NVMe 100GB * 4
### 部署过程
使用非root用户部署
#### 挂载数据盘
创建数据盘目录
```bash
sudo mkdir -p /data/rustfs{0..3}
```
用lsblk查看数据盘
```bash
lsblk
```
格式化并挂载数据盘
```bash
sudo mkfs.xfs -i size=512 -n ftype=1 -L RUSTFS0 /dev/nvme0n1
sudo mkfs.xfs -i size=512 -n ftype=1 -L RUSTFS1 /dev/nvme1n1
sudo mkfs.xfs -i size=512 -n ftype=1 -L RUSTFS2 /dev/nvme2n1
sudo mkfs.xfs -i size=512 -n ftype=1 -L RUSTFS3 /dev/nvme3n1
sudo vim /etc/fstab
```
编辑/etc/fstab添加如下内容
```bash
LABEL=RUSTFS0 /data/rustfs0 xfs defaults 0 0
LABEL=RUSTFS1 /data/rustfs1 xfs defaults 0 0
LABEL=RUSTFS2 /data/rustfs2 xfs defaults 0 0
LABEL=RUSTFS3 /data/rustfs3 xfs defaults 0 0
```
执行挂载
```bash
sudo systemctl daemon-reload
sudo mount -a
```
#### 创建用户和相关目录
创建用户组和用户
```bash
sudo groupadd -r rustfs
sudo useradd -M -r -g rustfs rustfs
```
创建相关目录
```bash
sudo mkdir -p /var/log/rustfs /var/lib/rustfs
```
设置目录权限
```bash
sudo chown -R rustfs:rustfs /data/rustfs* /var/log/rustfs /var/lib/rustfs
```
#### 配置环境变量
```bash
sudo vim /etc/default/rustfs
```
添加如下内容
```bash
RUSTFS_ACCESS_KEY=rustfsadmin
RUSTFS_SECRET_KEY=rustfsadmin
RUSTFS_VOLUMES="/data/rustfs0 /data/rustfs1 /data/rustfs2 /data/rustfs3"
RUSTFS_ADDRESS=":9000"
RUSTFS_CONSOLE_ENABLE=true
RUST_LOG=error
RUSTFS_OBS_LOG_DIRECTORY="/var/log/rustfs/"
```
#### 设置systemd服务
```bash
sudo vim /etc/systemd/system/rustfs.service
```
添加如下内容
```bash
[Unit]
Description=RustFS Object Storage Server
Documentation=https://rustfs.com/docs/
After=network-online.target
Wants=network-online.target
[Service]
Type=simple
#NotifyAccess=main
User=rustfs
Group=rustfs
WorkingDirectory=/var/lib/rustfs
EnvironmentFile=/etc/default/rustfs
ExecStart=/usr/local/bin/rustfs $RUSTFS_VOLUMES
LimitNOFILE=1048576
LimitNPROC=32768
TasksMax=infinity
Restart=always
RestartSec=10s
OOMScoreAdjust=-1000
SendSIGKILL=no
TimeoutStartSec=30s
TimeoutStopSec=30s
NoNewPrivileges=true
ProtectHome=true
PrivateTmp=true
PrivateDevices=true
ProtectClock=true
ProtectKernelTunables=true
ProtectKernelModules=true
ProtectControlGroups=true
RestrictSUIDSGID=true
RestrictRealtime=true
# service log configuration
StandardOutput=append:/var/log/rustfs/rustfs.log
StandardError=append:/var/log/rustfs/rustfs-err.log
[Install]
WantedBy=multi-user.target
```
#### 启动服务
```bash
sudo systemctl enable rustfs
sudo systemctl start rustfs
```
#### 防火墙配置
```bash
sudo firewall-cmd --zone=public --add-port=9000-9001/tcp --permanent
sudo firewall-cmd --reload
```