有机化学、化学信息学、生物化学、生物信息学、机器学习、深度学习、药物设计、网站建设关注我!Bilibili
# 创建环境
conda create -n aiochemdbs python=3.8
# 激活环境
conda activate aiochemdbs
# 安装psql数据库17.5
conda install conda-forge::rdkit-postgresql
# 激活虚拟环境
conda activate aiochemdbs
# 初始化数据库--指定数据库文件的存放位置
initdb -D /home/aiochem/databases/
# 测试运行
postgres -D /home/aiochem/databases/
# ctrl+c可以关闭服务
# 安装监听软件
sudo apt install -y supervisor
# 检查 Supervisor 服务状态
sudo systemctl status supervisor
新建配置文件
sudo vim /etc/supervisor/conf.d/startpsql.conf
需要正确指定python环境的位置,和自定义数据库存放的位置
关于log日志的存放路径,自己提前创建对应的文件夹就行
[program:postgresql]
command=/home/chen/miniforge3/envs/aiochemdbs/bin/postgres -D /home/chen/databases
user=chen
autostart=true
autorestart=true
stopsignal=TERM
stopasgroup=true
killasgroup=true
stopwaitsecs=60
之后运行启动命令:
# 运行后出现postgresql: available表示没问题
sudo supervisorctl reread
# 出现:postgresql: added process group
sudo supervisorctl update
# 启动服务》如果前面准确,这里会显示已经启动(postgresql: ERROR (already started))
sudo supervisorctl start postgresqlq
# 设置自启动
sudo systemctl enable supervisor
在无需切换虚拟环境的情况下,使用psql的命令:
sudo ln -s /home/aiochem/miniforge3/envs/aiochemdbs/bin/psql /usr/local/bin/psql
这样就可以直接使用psql命令了,无需提前切换虚拟环境
这里下载对应的dmp文件
直接运行,进入默认数据库postgres
psql postgres
执行如下语句,创建名为chembldb的数据库
CREATE DATABASE chembldb
WITH
OWNER = chen
ENCODING = 'UTF8';
# 进入数据库
\c chembldb
# 开启插件
create extension rdkit;
使\q
退出操作数据库
然后在终端内:
# 激活环境
conda activate aiochemdbs
# 导入数据
pg_restore --no-owner -d chembldb dmp文件的路径
出现了如下问题
解决方式:
由于共享内存的进程清理不完全导致,修改了startpsql.conf的配置文件,指定了stopsignal等参数
如果未解决:关闭RemoveIPC
这个功能会在用户退出的时候,清理该用户的进程和其余共享服务(比如psql的共享内存) PostgreSQL 使用的共享内存段(位于 /dev/shm
)在用户会话退出后被自动清理,导致数据库进程无法访问共享内存,引发错误。
# 编辑这个文件
sudo vim /etc/systemd/logind.conf
# 需要修改的地方
[Login]
RemoveIPC=no
# 重启服务
sudo systemctl restart systemd-logind.service
# 检查状态
sudo systemd-analyze cat-config systemd/logind.conf | grep RemoveIPC
可以使用如下方式检查任务状态:
# 启动 PostgreSQL 后检查共享内存
ls -l /dev/shm/PostgreSQL.*
# 模拟用户退出(切换用户后退出)
sudo su - chen
exit
# 再次检查共享内存段是否仍在
ls -l /dev/shm/PostgreSQL.*
没有推荐的文章...
没有对应的文章...