拾贝博客

——积累知识,胜于积累金银

优雅的安装pgadmin

作者:晨檬 向 | 发表于  2021年3月9日 (2330)

一、前言

本人使用CentOS7系统,想安装pgadmin管理系统,方便PG数据库的操作,采用官方的yum的安装方式虽然也很简单,安装的文件放地位置有好几个,感觉不爽,并且还要给我安装上httpd,关键是我用的nginx,总不能搞两个web服务,强迫症的我接收不了所以就自己动手了。
下面附上安装的地址:
https://www.pgadmin.org/download/pgadmin-4-rpm/

二、安装pgadmin4

2.1 创建 pgAdmin4 的项目目录

mkdir -p /home/www/pgadmin4  
cd /home/www/pgadmin4  

2.2 创建 python3 虚拟目录

不想污染系统的python环境建议为pgadmin建立独立的虚拟环境,以后升级更新页方便

virtualenv env  

2.3 激活python虚拟环境

一定要激活, 否则后续的操作都回反应在系统环境上的

source env/bin/activate  

2.4 更新PIP

其实不更新也可以,有的包可能检测不到,不一定你会碰上!

pip install --upgrade pip  

2.5 安装pgadmin4

现在进入主题了,前面都是准备工作。

pip install pgadmin4  

如果网速太慢,就更换pip源为阿里源

vim env/pip.conf  

[global]
index-url = https://mirrors.aliyun.com/pypi/simple/

[install]
trusted-host=mirrors.aliyun.com

把上面的内容放在env/pip.conf中
至此pgadmin4的安装已经完成

2.6 创建pgadmin数据目录

  • /var/lib/pgadmin pgAdmin4 的数据目录
  • /var/log/pgadmin pgAdmin4 的日志
    注意:要把目录的权限设置给uwsgi用户。

三、pgadmin4 配置

不要从上面的虚拟环境中退出

3.1 设置系统默认密码

python env/lib/python3.6/site-packages/pgadmin4/setup.py  

3.2 安装uwsgi 运行 pgAdmin4

再次提醒,pgAdmin4 是使用 Flask 开发的!永远不要在生产环境运行 Flask 的开发服务器。现在,我们应该使用 uwsgi 来在生产环境运行 pgAdmin4。
系统需要预先安装uwsgi服务

yum install uwsgi  
systemctl enable uwsgi  
systemctl start uwsgi  

python 虚拟环境中也需要安装

pip install uwsgi  

创建uwsgi配置文件

vim /etc/uwsgi.d/pgadmin4.ini  
# 内容如下:  
[uwsgi]  
plugins=python36  
chdir=/home/www/pgadmin4/env/lib/python3.6/site-packages/pgadmin4  
home=/home/www/pgadmin4/env  
module=pgAdmin4:app  
master=true  
processes=2  
socket=/var/run/uwsgi/pgadmin.sock  
chmod-socket=666  
logfile-chmod=644  
daemonize=/var/log/uwsgi/pgadmin.log  
uid=nginx  
gid=nginx  
procname-prefix-spaced=pgadmin  
#enable-threads = true  
vacuum = true  

重新启动uwsgi服务

systemctl restart uwsgi  

3.3 配置nginx

为pgadmin建立一个虚拟主机
官方的配置参考:
https://www.pgadmin.org/docs/pgadmin4/development/server_deployment.html#standalone-uwsgi-configuration

vim /etc/nginx/conf.d/pgadmin.conf  
server {  
    listen 8081;  
    server_name localhost; # 改成你自己的域名  

    location / {  
                try_files $uri @pgadmin;  
        }  
    location @pgadmin {  
         include /etc/nginx/uwsgi_params;  
         uwsgi_pass unix:/var/run/uwsgi/pgadmin.sock;  
        }  
}  

3.4 开放端口

firewall-cmd --zone=public --add-port=8081/tcp --permanent  
firewall-cmd --reload  

3.5 访问

直接在浏览器访问开放的端口即可

遇到的问题

  1. CSRF 问题
    注释掉配置文件中
vim /home/www/pgadmin4/env/lib/python3.6/site-packages/pgadmin4/config.py  
# WTF_CSRF_HEADERS = ['X-pgA-CSRFToken']  

 

分类:技术分享

标签: Django Linux Python 数据库

分享:

 我来说两句

评论列表

相关文章