创建 highgo 用户

创建用户

1
2
3
4
# 创建用户
useradd highgo -d /home/highgo
# 设置密码 1qaz@WSX
passwd highgo

提升用户权限

1
2
chmod u+w /etc/sudoers
vi /etc/sudoers

查找到 Allow root to run any commands anywhere,在 root 下增加一行命令

1
highgo  ALL=(ALL)       ALL

截屏 2023-03-13 14.41.41.png

准备安装包

hgdb6.0.4-enterprise-centos7-x86-64-20220127.rpm
postgis3.0-6.0.4-enterprise-centos7-x86-64-20220127.rpm

放到 /home/highgo 目录下

1
2
3
# 修改安装包所属用户
sudo chown highgo:highgo hgdb6.0.4-enterprise-centos7-x86-64-20220127.rpm
sudo chown highgo:highgo postgis3.0-6.0.4-enterprise-centos7-x86-64-20220127.rpm

安装数据库

切换到 highgo 用户,并进入用户目录

1
2
su highgo
cd /home/highgo

安装 hgdb

1
sudo rpm -ivh hgdb6.0.4-enterprise-centos7-x86-64-20220127.rpm

img2.png

数据库将被安装到 /opt/HighGo6.0.4-cluster 目录下

安装 postgis

1
rpm -ivh postgis3.0-6.0.4-enterprise-centos7-x86-64-20220127.rpm

img4.png

配置环境变量

编辑 /etc/profile 文件

1
2
3
4
5
# 切换到 root 用户
su root
# 添加环境变量
chmod u+w /etc/profile
vi /etc/profile

添加以下内容

1
2
# highgo environment
source /opt/HighGo6.0.4-cluster/etc/highgodb.env

img3.png

编辑 /etc/ld.so.conf 文件

1
2
3
# 添加环境变量
chmod u+w /etc/ld.so.conf
vi /etc/ld.so.conf

添加以下内容

1
2
3
# highgo
/usr/local/lib
/usr/local/hgdb-ee

img5.png

执行

1
ldconfig

创建数据库

切换到 highgo 用户

1
su highgo

执行命令

1
2
3
4
5
# 创建目录
sudo mkdir /opt/HighGo6.0.4-cluster/data
sudo chown highgo:highgo /opt/HighGo6.0.4-cluster/data
# 初始化
initdb

设置密码 1qaz@WSX

img6.png

启动数据库

1
pg_ctl start

img7.png

配置 postgis 扩展

1
2
psql -d highgo
create extension postgis;

img8.png

配置允许远程连接

1
vi /opt/HighGo6.0.4-cluster/data/pg_hba.conf

找到 IPv4 local connections,把 127.0.0.1/32 改为 0.0.0.0/0

img9.png

1
vi /opt/HighGo6.0.4-cluster/data/postgresql.conf

找到 listen_addresses,把 localhost 改为 *

img10.png

1
2
# 重启数据库
pg_ctl restart

设置数据库开机自启

新建 highgodb.service

在 /etc/systemd/system 目录下新建配置文件 highgodb.service

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
[Unit]
# 简短描述
Description=highgodb.service
# 在network.target服务之后运行,这里可以不要
After=network.target

[Service]
Type=forking
# 服务的类型,常用的有 simple(默认类型) 和 forking。默认的 simple 类型可以适应于绝大多数的场景,因此一般可以忽略这个参数的配置。而如果服务程序启动后会通过 fork 系统调用创建子进程,然后关闭应用程序本身进程的情况,则应该将 Type 的值设置为 forking,否则 systemd 将不会跟踪子进程的行为,而认为服务已经退出。 系统调用pg后会创建子进程,然后关闭本身进程,所以这里选择forKing进行子进程跟踪
# 运行程序的用户和群组
User=highgo
Group=highgo
# 工作目录
WorkingDirectory=/opt/HighGo6.0.4-cluster
# 启动命令
ExecStart=/opt/HighGo6.0.4-cluster/bin/pg_ctl start -D /opt/HighGo6.0.4-cluster/data
# 重新加载
ExecReload=/opt/HighGo6.0.4-cluster/bin/pg_ctl restart -D /opt/HighGo6.0.4-cluster/data
# 停止程序
ExecStop=/opt/HighGo6.0.4-cluster/bin/pg_ctl stop -D /opt/HighGo6.0.4-cluster/data
# 是否给服务分配独立的临时空间,需要
PrivateTmp=true

[Install]
WantedBy=multi-user.target
# 和前面的 Wants 作用相似,只是后面列出的不是服务所依赖的模块,而是依赖当前服务的模块。

重载 systemctl 服务

1
systemctl daemon-reload

启动 highgodb 服务

1
systemctl start highgodb.service

判断服务是否启动

1
2
3
4
5
systemctl is-active highgodb.service
# 也可以通过此命令判断服务状态
systemctl status highgodb.service
# 如果启动配置失败,也可以通过journalctl命令查看日志查找原因
journalctl -u highgodb.service

停止 highgodb 服务

1
systemctl stop highgodb.service

设置开机自启动

1
systemctl enable highgodb.service

如果设置了自动启动但是开机一会儿被关闭的话,执行

这是禁止 highgodb 自带的启动服务,这个服务有问题,并不能自动启动

1
systemctl disable hgdb-enterprise-6.0.4.service