> 文档中心 > harbor配置外部数据库postgresql

harbor配置外部数据库postgresql


1.安装postgresql

#两种方式安装:
①wget https://ftp.postgresql.org/pub/source/v12.2/postgresql-12.2.tar.gz(不推荐,下载非常慢)
②https://ftp.postgresql.org/pub/source/v12.2/postgresql-12.2.tar.gz
打开链接下载至本地,再通过winscp等软件上传至服务器(我上传到了/home目录下)
 
#安装依赖包
yum install -y cmake gcc gcc-c++ perl readline readline-devel openssl openssl-devel zlib zlib-devel ncurses-devel readline readline-devel zlib zlib-devel
 
#切换到上传目录,解压
cd /home tar -zxvf postgresql-12.2.tar.gz
 
#然后你就可以看到一个postgresql-12.2的文件夹,用起来不方便,重命名
mv postgresql-12.2 postgresql
 
#配置安装目录,编译安装
cd /home/postgresql
./configure --prefix=/usr/local/pgsql
make && make install

2.创建postgres用户

这里又有很多坑。。。。。

1.创建用户密码

useradd postgres
passwd postgres

创建完会在home目录下有个postgres目录(之前就是不知道,然后把它删了,一直提示烦死了!)
后面还遇到过su - postgres失败,root下无法切换到这个普通用户,删了重建,重新赋予后面提到的权限就可以了

#删除用户
把postgres目录删除(别看错啊!不是带sql的那个)
/var/spool/mail/这个目录下的postgres也要删除!!

创建需要用到的目录

mkdir /usr/local/pgsql/data
mkdir /usr/local/pgsql/tmp
mkdir /usr/local/pgsql/log
#把data目录设置postgres组
chown -R postgres:postgres /usr/local/pgsql/data

设置postgres用户的环境变量

vim /home/postgres/.bash_profile export PGHOME=/usr/local/pgsql export PGDATA=/usr/local/pgsql/data export PATH=$PATH:$HOME/.local/bin:$HOME/bin:$PGHOME/bin

保存以后记得source更新
注意:PATH必须放最后(反正之前吃过这个坑,没放最后是没生效的)

3.初始化数据库(在postgres用户下)

初始化

initdb

然后就可以发现目录下多了很多文件

#修改默认的配置
vim /usr/local/pgsql/data/postgresql.conf
 
#数据目录
data_directory='/usr/local/pgsql/data'
 
#客户端可连接ip,默认为localhost,若不需要可不修改,*为所有
listen_addresses = '*'
 
#端口设置,我设置 5000,记得开放端口不然后面不给连接
port = 5000
 
unix_socket_directories = '/usr/local/pgsql/tmp'
unix_socket_group = ''
unix_socket_permissions = 0777
 
#内存大小
shared_buffers = 128MB
 
#时区修改
timezone = 'Asia/Shanghai'
 
#是否开启日志
logging_collector = on
 
#日志存放目录
log_directory ='/usr/local/pgsql/log'
 
#每个日志最大
size log_rotation_size = 20MB
 
#日志时区
log_timezone = 'Asia/Shanghai'
 
#记录执行时间大于100ms的sql及执行时间,相当于慢SQL日志
log_min_duration_statement = 100

上面修改的地方有些需要取消注释!我之前就是有几个地方忘了客户端就无法连接!!

连接数据库

pg_ctl start
如果有报错,把data父目录也赋予postgres组(无需递归)
 
psql -h 127.0.0.1 -p 5000 -U postgres
 
#修改postgres用户的密码
postgres=# \password postgres
Enter new password:
Enter it again:
 
#创建数据库
create database register;
create database notarysigner;
create database notaryserver;

数据库开启自启(root用户下操作)

PostgreSQL的开机自启动脚本位于PostgreSQL源码目录的contrib/start-scripts路径下

1)修改linux文件属性,添加X属性
chmod a+x linux
 
2)复制linux文件到/etc/init.d目录下,更名为postgresql
cp linux /etc/init.d/postgresql
 
3)修改/etc/init.d/postgresql文件的两个变量(前面配过的话这里不需要改)prefix设置为postgresql的安装路径,PGDATA设置为postgresql的数据目录路径:
 
4) 启动并开启自启
service postgresql
start chkconfig --add postgresql

4.修改harbor配置

配置文件修改

vim harbor.yml
找到这个external_database(需要放开注释)
 
注意格式对齐,冒号后面是有空格的,IP改成你自己的
和上面创建的数据库对应

external_database:    harbor:  host: IP port: 5000 db_name: harbor username: postgres password: 042622 ssl_mode: disable max_idle_conns: 50 max_open_conns: 100    notary_signer: host: IP port: 5000 db_name: notarysigner username: postgres password: 042622 ssl_mode: disable max_idle_conns: 50 max_open_conns: 100    notary_server: host: IP port: 5000 db_name: notaryserver username: postgres password: 042622 ssl_mode: disable max_idle_conns: 50 max_open_conns: 100

有些教程需要改docker-compose.yml,看了一遍感觉不需要

执行sh install.sh

(./install.sh 不行,会有报错)

其他配置

如果数据库和服务不在同一台电脑,需要配置pg_hba.conf加一行host  all   postgres  0.0.0.0/0   trust

5.测试

客户端连接测试

我是用navicat工具连接的
连接信息harbor配置外部数据库postgresql
这里就连接成功

harbor和psql的连接测试

如果启动harbor的话数据库会有相应表。。但是不会写sql非常尴尬。。。教程只有在命令行输入的。。。

psql -h 127.0.0.1 -p 5000 -U postgres

进入数据库
\c 数据库名
 
#查看该库有什么表
\dt

在这里插入图片描述
到这里就基本完成了。。。。欢迎分享~

参考博文1
参考博文2

虫部落快搜