PostgreSQL 有一个官方的图形界面管理工具:pgAdmin。目前,已经到了 pgAdmin4 了,它是一个使用 Python 及 Flask 框架开发的工具。有两种运行模式:桌面模式及 Web 模式。
通常,CentOS 是作为 PostgreSQL 数据库的服务器运行,所以我们在 CentOS 上以 Web 模式运行 pgAdmin,如此,就不用再:
本文的目标是实现 pgAdmin4 的安装,并以 uwsgi 运行,只监听本地请求。最终,使用 nginx 将其暴露到公网上。由于 pgAdmin 是使用 Flask 开发,所以通过 uwsgi 运行变得非常容易。
pgAdmin 可以运行在 Python 2.7 和 Python 3 环境中,强烈建议使用 Python 3。本例使用 lnpp 一键安装包 来安装 Python 3.6、 nginx 和 PostgreSQL 10。
[email protected]
wrdll.com
在 pgAdmin 官网的 Python Wheel 页面下载最新版的 pgAdmin4,本例下载的是 v3.0 版,保存在主目录下 ~
:
cd ~
wget https://ftp.postgresql.org/pub/pgadmin/pgadmin4/v3.0/pip/pgadmin4-3.0-py2.py3-none-any.whl
需要创建3个目录:
/opt/pgadmin
pgAdmin4 的项目目录/var/lib/pgadmin
pgAdmin4 的数据目录/var/log/pgadmin
pgAdmin4 的日志mkdir -p /opt/pgadmin
mkdir -p /var/lib/pgadmin
mkdir -p /var/log/pgadmin
我们将 pgAdmin4 虚拟环境创建在它的项目目录 /opt/pgadmin
的 venv
子目录下:
cd /opt/pgadmin
python3.6m -m venv venv
为了安装 pgAdmin4 ,需要先激活虚拟环境
source venv/bin/activate
为了保证安装成功,可以更新虚拟环境里的 pip 和 setuptools
pip install --upgrade pip pip install --upgrade setuptools
现在可以安装 pgAdmin4 了
pip install ~/pgadmin4-3.0-py2.py3-none-any.whl
如果网速太慢,可以使用清华大学的 pip 镜像:
pip install ~/pgadmin4-3.0-py2.py3-none-any.whl -i https://pypi.tuna.tsinghua.edu.cn/simple
至此,pgAdmin4 安装完成。
运行以下命令,对pgadmin4的用户名和密码进行设置:
python /opt/pgadmin/venv/lib/python3.6/site-packages/pgadmin4/setup.py
不报错的话,说明 pgAdmin4 安装成功。pgAdmin4 会要求你输入 pgAdmin4 的管理员Email 和密码,在此分别输入 [email protected]
和 wrdll.com
。
再次提醒,pgAdmin4 是使用 Flask 开发的!永远不要在生产环境运行 Flask 的开发服务器。现在,我们应该使用 uwsgi 来在生产环境运行 pgAdmin4。
pip install uwsgi
vi /opt/pgadmin/uwsgi.ini
输入以下内容:
[uwsgi] chdir=/opt/pgadmin/venv/lib/python3.6/site-packages/pgadmin4 home=/opt/pgadmin/venv wsgi-file=pgAdmin4.wsgi master=true processes=2 socket=/opt/pgadmin/pgadmin.sock chmod-socket=666 logfile-chmod=644 daemonize=/opt/pgadmin/pgadmin.log uid=nginx gid=nginx procname-prefix-spaced=pgadmin
为了安全,我们需要使用 nginx:nginx
这个用户和用户组来运行 pgAdmin4,所以需要将相应的目录权限进行修改:
chown -R nginx:nginx /opt/pgadmin chown -R nginx:nginx /var/lib/pgadmin chown -R nginx:nginx /var/log/pgadmin
现在可以启动 uwsgi 了
uwsgi -c uwsgi.ini
vi /etc/nginx/nginx.conf
在该文件的 http
中加入:
include /etc/nginx/server/*.conf;
mkdir -p /etc/nginx/server
vi /etc/nginx/server/pgadmin.conf
输入以下内容:
server { listen 80; server_name pgadmin.wrdll.com; # 改成你自己的域名 location / { try_files $uri @pgadmin; } location @pgadmin { include /etc/nginx/uwsgi_params; uwsgi_pass unix:/opt/pgadmin/pgadmin.sock; } }
nginx -t nginx -s reload
安装好之后,第一次登录时注意:1、点击“login”按钮进行登录,不要直接按回车;2、可能一直出现登录页面,此时重复登录几次即可;3、以后登录基本能正常工作了。此问题的原因暂时不知,但在 debian 下是没有这个问题的。