从零开始搭建WebGIS网站(三)-PG数据库准备

# 写在前面

本文衔接上一篇文章:

从零开始搭建WebGIS网站(二)-远程开发环境准备-CSDN博客icon-default.png?t=N7T8https://blog.csdn.net/m0_50917429/article/details/138421557

        本文主要介绍在准备好的阿里云 Ubuntu 服务器上源码安装 Postgresql 数据库,基本流程参考博客,但其是在 CentOS 操作系统上安装的,囿于操作系统的差异(本服务器操作系统为 Ubuntu),很多关键环节有出入,本文将详细介绍在 Ubuntu 操作系统中手动安装 PG 数据库的流程。

1 安装PG数据库

        下载地址:PostgreSQL: File Browser

        从下载地址中选择合适的PG数据库版本,这里我们选取了最新的 v16.2 版本,在阿里云服务器终端执行如下操作:

cd /root/vscode-workspace/
# 下载 postgresql-16.2.tar.gz
wget https://ftp.postgresql.org/pub/source/v16.2/postgresql-16.2.tar.gz
# 解压缩 .tar.gz
tar -zxvf postgresql-16.2.tar.gz
# 创建PG数据库安装路径
mkdir /pgsql
# 更新编译环境,同时安装依赖库
apt-get update && apt-get install gcc && apt-get install g++ && apt-get install make && apt install libreadline-dev
# 编译postgresql源码。--prefix为安装的目录,默认为/usr/local/pgsql;--without-icu 跳过使用icu这个库来编译(未解决该库的安装)
cd /root/vscode-workspace/postgresql-16.2 && ./configure --prefix=/pgsql/postgresql --without-icu
# make安装
make && make install

        至此,已完成postgreql的安装。进入/pgsql/postgresql目录可以看到安装后的postgresql的文件:

[root@iZ2ze2vto7mqwqnweyj37iZ postgresql]# ls
bin  include  lib  share

2 创建Postgres用户

        我们创建用户 postgres 专责管理 PG 数据库,但实际上PG数据库的各类可执行文件均在/pgsql/postgresql/bin目录下,任何用户获得可执行文件的权限均可以操作 PG 数据库。具体操作如下:

# 创建用户组
groupadd postgres
# 创建用户
useradd -g postgres postgres
# 查看用户信息,输出为:uid=1000(postgres) gid=1000(postgres) groups=1000(postgres)
id postgres
# 创建用户目录并赋予所有者权限
mkdir /home/postgres && chown postgres:postgres /home/postgres
# 创建数据主目录并赋予所有者权限
mkdir /pgsql/postgresql/data && chown postgres:postgres /pgsql/postgresql/data

        此时执行命令 cat /etc/passwd,在输出的最后一行可以看到如下的输出:

85791efc5e334dd2b9770f6ad0b17854.png

        在操作过程中,红框中末尾实际的输出并非 /bin/bash 而是 /bin/sh,由于 /bin/bash 提供了更多功能和更丰富的语法,我们使用如下命令更改 postgres 启动的终端解释器:

chsh -s /bin/bash postgres

 3 配置环境变量并初始化

       执行 su postgres 切换用户为 postgres 并执行如下操作,配置环境变量:

# 创建打开Bash shell时加载的文件~/.bashrc
vim ~/.bashrc
####################### 粘贴以下内容 #######################
alias ll='ls -la'
alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'

export PGHOME=/pgsql/postgresql
export PGDATA=/pgsql/postgresql/data
PATH=$PATH:$HOME/bin:$PGHOME/bin
###########################################################


# 创建用户登录时加载的文件~/.bash_profile
vim ~/.bash_profile
####################### 粘贴以下内容 #######################
if [ -f ~/.bashrc ]; then
    . ~/.bashrc
fi
###########################################################

# 在 .bash_profile 中加载 .bashrc,以确保无论是登录 shell 还是非登录 shell,用户的配置都能被加载。

        使用 Ctrl + D 退出用户 postgres 登录,随后再次使用 su postgres 切换为 postgres ,此时在终端执行命令 which initdb,正常输出 "/pgsql/postgresql/bin/initdb" 说明环境变量配置完成,终端执行 initdb 初始化 PG 数据库。

4 修改PG数据库配置文件

        初始化成功后在 /pgsql/postgresql/data 目录下会存在两个配置文件:postgresql.conf(配置数据库服务器的参数)和 pg_hba.conf(配置对数据库的访问权限),接下来对两个配置文件分别进行修改:

# 修改数据库服务器的参数
vim /pgsql/postgresql/data/postgresql.conf
####################### 粘贴以下内容 #######################
listen_addresses = '*'                  # what IP address(es) to listen on;
                                        # comma-separated list of addresses;
                                        # defaults to 'localhost'; use '*' for all
                                        # (change requires restart)
port = 6543                             # (change requires restart)
###########################################################

        粘贴位置位于下图红框处: 

1e57438c5bbd4101ad6e67e05322cfb8.png

        参数 “listen_addresses”表示监听的IP地址,默认值为 "127.0.0.1",表示只接受来自本机的连接请求,这会让远程的 IP 无法连接数据库,修改为 "*" 表示允许所有 IP 进行连接。参数 "port" 表示数据库的访问端口,默认值为 "5432",修改为 "5432" 避免端口冲突同时可以提高安全性。

        编辑完成后,终端 ufw allow 6543,同时安全组出入方向均放行6543,细节可以参考第一篇博客中的 "4 防火墙和安全组放行端口"。

# 修改数据库访问权限的参数
vim /pgsql/postgresql/data/pg_hba.conf
####################### 粘贴以下内容 #######################
host    all             all             0.0.0.0/0            trust
###########################################################

        粘贴位置位于下图红框处:

9d2e8100c5ee4aba8b82a211eb057ded.png

        上述修改可以保证所有的 IP 地址均可连接至数据库,如果想进一步提高安全性可以对 IP 地址进行限制。

5 启动PG数据库&设置开机自启动

        这一步是和参考博客差异最大的地方,具体操作如下:

# 赋予自启动文件执行权限
chmod a+x /root/vscode-workspace/postgresql-16.2/contrib/start-scripts/linux
# 复制自启动文件至/etc/init.d/并重命名为postgresql
cp /root/vscode-workspace/postgresql-16.2/contrib/start-scripts/linux /etc/init.d/postgresql
# 修改/etc/init.d/postgresql
vim /etc/init.d/postgresql
####################### 粘贴以下内容 #######################
### BEGIN INIT INFO
# Provides:             postgresql
# Required-Start:       $local_fs $remote_fs $network $syslog
# Required-Stop:        $local_fs $remote_fs $network $syslog
# Default-Start:        2 3 4 5
# Default-Stop:         0 1 6
# Short-Description:    PostgreSQL database server
# Description:          Start PostgreSQL database server
### END INIT INFO
###########################################################

        粘贴位置位于下图红框处:

16cb4a91b91a4a72b56e0ebb0e94131d.png

        同时需要修改 prefix 和 PGDATA 的路径,如下图红框所示:

f7e040387c19403a90471ede2df7b913.png

        修改完成后,终端执行命令 systemctl start postgresql,启动 PG 数据库,同时 systemctl

enable postgresql,设置开机自启动。

        输入指令 systemctl status postgresql 以及 systemctl is-enabled postgresql 有如下输出,表示操作无误。

7a7994741b914c52be41dcd8a11d383e.png

6 测试PG数据库

        执行 su postgres 切换用户为 postgres 并执行如下操作,测试PG数据库:

# 进入PG数据库终端,命令行前缀为"postgres=#"
psql -p 6543
# 查看所有用户及其密码
select usename,passwd from pg_shadow;
# 修改postgres,密码为"postgres"
ALTER USER postgres with password 'postgres';
# 再次查看所有用户及其密码,出现用户chase

# 创建用户chase,密码为"chase"
create user chase password 'chase';
# 赋予用户chase超级用户权限
ALTER ROLE chase SUPERUSER;

# 查看当前所有数据库
\l
# 切换为用户chase
\c - chase
# 创建一个名为 "testdb" 的数据库
CREATE DATABASE testdb;
# 连接到新创建的数据库
\c testdb;
# 创建一个名为 "test_table" 的表,并定义一些列
CREATE TABLE test_table (
    id SERIAL PRIMARY KEY,
    name VARCHAR(100),
    age INT
);
# 向表中插入一些测试数据
INSERT INTO test_table (name, age) VALUES ('Alice', 25), ('Bob', 30), ('Charlie', 35);
# 验证数据是否成功插入
SELECT * FROM test_table;
# 再次查看所有数据库,出现数据库testdb,所有者为chase

7 pgAdmin4连接测试

        pgAdmin4下载地址:Download (pgadmin.org),参考下图设置连接配置,注意输入阿里云服务器公网 IP 和修改后的端口 6543,可以看到 test_table 以及其中插入的测试数据。

babb6f1538674063bf1a41f8b962128a.png

        恭喜!!PG数据库准备完成!!

  • 9
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
开发一个从零开始WebGIS维项目需要经历以下几个步骤: 1.需求分析:首先,我们需要仔细分析项目的需求,包括功能、数据和用户要求。通过对项目需求的深入了解,我们能够确保项目的开发能够满足用户的期望。 2.数据准备:在项目开始之前,我们需要收集和准备所需的地理空间数据。这可能涉及到数据的采集、清理和处理,以及与其他数据源的集成。 3.技术选型:根据需求和数据准备情况,我们需要选择合适的技术来实现项目。通常,WebGIS维项目会使用一些常见的开发框架和技术,如JavaScript、HTML5和CSS3。同时,还需要选择适合的维地理信息系统工具和库,如CesiumJS或Three.js。 4.系统设计:在进行项目开发之前,我们需要进行系统设计。这包括定义系统的架构、模块和组件,并确定它们之间的关系和交互方式。同时,还需要设计用户界面和用户体验,以确保用户能够方便地浏览和操作维地理空间数据。 5.开发和测试:在系统设计完成后,我们可以开始项目的开发和测试。开发过程中,我们按照设计规范和要求,逐步实现系统的各个模块和功能。同时,我们需要进行测试来确保系统的正确性、稳定性和性能。 6.部署和上线:当项目开发和测试完成后,我们可以将系统部署到服务器上,并进行上线。通过将系统部署到互联网上,用户可以通过浏览器访问和使用WebGIS维项目。 7.维护和优化:一旦项目上线,我们还需要进行系统的维护和优化。这包括持续性地收集用户反馈和需求,并及时修复系统中的bug和问题。同时,我们还需要不断改进系统的性能和用户体验,以提高用户满意度。 总之,从零开始开发WebGIS维项目需要经历需求分析、数据准备、技术选型、系统设计、开发和测试、部署和上线,以及维护和优化等多个步骤。通过合理的计划和实施,我们可以成功地开发出满足用户需求的WebGIS维项目。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值