当前位置:   article > 正文

pgadmin4 本地安装部署_linux 安装 pgadmin 离线

linux 安装 pgadmin 离线

1、介绍

pgAdminPostgreSQL及其相关数据库管理系统的开源管理和开发平台。用Python和jQuery编写,它支持PostgreSQL中的所有功能。

您可以使用pgAdmin执行从编写基本SQL查询到监视数据库和配置高级数据库体系结构的所有操作。

既可以部署为web模式通过浏览器访问,也可以部署为桌面模式独立运行。

安装环境:centos7.8 + pgadmin4.15 + python3.8.1 + httpd2.4.41

2、下载pgadmin4

下载地址:https://www.postgresql.org/ftp/pgadmin/pgadmin4/

HGCMM使用的是4.15,文件名称:pgadmin4-4.15.tar.gz

3、安装python3.8.1

Centos7 编码编译python3.8

如果使用相对路径的python,可以不用做软连接和环境变量,只指定LD_LIBRARY_PATH即可

4、python安装依赖包

4.1、安装虚拟环境

  1. #Python目录 /opt/python381
  2. [root@baidu1 python381]# ./bin/pip3 install virtualenv
  3. #如果提示需要升级pip,那就按照命令升级
  4. /opt/py381env/bin/python -m pip install --upgrade pip

4.2、创建虚拟环境

  1. [root@baidu1 python381]# pwd
  2. /opt/python381
  3. [root@baidu1 python381]# ./bin/virtualenv -p ./bin/python3 --always-copy --clear /opt/py381env
  4. created virtual environment CPython3.8.1.final.0-64 in 158ms
  5. creator CPython3Posix(dest=/opt/py381env, clear=False, no_vcs_ignore=False, global=False)
  6. seeder FromAppData(download=False, pip=bundle, setuptools=bundle, wheel=bundle, via=copy, app_data_dir=/root/.local/share/virtualenv)
  7. added seed packages: pip==20.2.4, setuptools==50.3.2, wheel==0.35.1
  8. activators BashActivator,CShellActivator,FishActivator,PowerShellActivator,PythonActivator,XonshActivator
  9. [root@baidu1 python381]#

--always-copy:可执行文件拷贝副本,而不是软链接。

4.3、进入虚拟环境

  1. [root@baidu1 python381]# source /opt/py381env/bin/activate
  2. (py381env) [root@baidu1 python381]# which python
  3. /opt/py381env/bin/python
  4. (py381env) [root@baidu1 python381]# which pip3
  5. /opt/py381env/bin/pip3

4.4、安装pgAdmin及其依赖项

  1. #修改2个依赖模块
  2. (py381env) [root@baidu1 python381]# vi /opt/pgadmin4/requirements.txt
  3. #Werkzeug>=0.15.0
  4. Werkzeug==0.16.0
  5. #psycopg2>=2.8
  6. psycopg2-binary>=2.8
  7. #install
  8. (py381env) [root@baidu1 python381]# pip3 install -r /opt/pgadmin4/requirements.txt
  9. ...
  10. Successfully installed...
  11. #错误情况1
  12. Collecting psycopg2>=2.8
  13. Using cached psycopg2-2.8.6.tar.gz (383 kB)
  14. ERROR: Command errored out with exit status 1:
  15. Error: pg_config executable not found.
  16. #解决办法(官方不在推荐下载psycopg2,使用psycopg2-binary替代,正在开发psycopg3)
  17. psycopg2-binary>=2.8
  18. #错误情况2
  19. File "/opt/py381env/lib/python3.8/site-packages/flask_wtf/recaptcha/widgets.py", line 5, in <module>
  20. from werkzeug import url_encode
  21. ImportError: cannot import name 'url_encode' from 'werkzeug' (/opt/py381env/lib/python3.8/site-packages/werkzeug/__init__.py)
  22. #解决办法:Werkzeug==0.16.0

 

5、配置pgadmin4

5.1、创建pgadmin存储目录,日志/会话/存储

  1. mkdir -p /var/lib/pgadmin4/sessions
  2. mkdir -p /var/lib/pgadmin4/storage
  3. mkdir -p /var/log/pgadmin4

将这些目录的所有权更改为非root用户和组。这是必要的,因为它们目前由root用户拥有,但我们将从非root用户拥有的虚拟环境安装pgAdmin,
安装过程涉及在这些目录中创建一些文件。但是,在安装之后,我们会将所有权更改为www-data用户和组,以便将其提供给Web:

  1. chown -R see:see /var/lib/pgadmin4
  2. chown -R see:see /var/log/pgadmin4

确保它具有允许其正确提供Web界面所需的权限和配置。
pgAdmin的主配置文件config.py,它将在任何其他配置文件之前被读取。其内容可用作可在pgAdmin的其他配置文件中指定的其他配置设置的参考点,但为避免无法预料的错误,您不应编辑config.py文件本身。
我们将对一个名为的新文件添加一些配置更改,该文件config_local.py将在主文件之后读取。

  1. (py381env) [root@baidu1 python381]# vim /opt/pgadmin4/web/config_local.py
  2. #内容
  3. LOG_FILE = '/var/log/pgadmin4/pgadmin4.log'
  4. SQLITE_PATH = '/var/lib/pgadmin4/pgadmin4.db'
  5. SESSION_DB_PATH = '/var/lib/pgadmin4/sessions'
  6. STORAGE_DIR = '/var/lib/pgadmin4/storage'
  7. SERVER_MODE = True

以下是这五个指令的作用:

  • LOG_FILE:这定义了将存储pgAdmin日志的文件。
  • SQLITE_PATH:pgAdmin将用户相关数据存储在SQLite数据库中,该指令将pgAdmin软件指向此配置数据库。由于此文件位于持久目录/var/lib/pgadmin4/下,因此升级后您的用户数据不会丢失。
  • SESSION_DB_PATH:指定将用于存储会话数据的目录。
  • STORAGE_DIR:定义pgAdmin将存储其他数据的位置,例如备份和安全证书。
  • SERVER_MODE:设置此指令以True告知pgAdmin在服务器模式下运行,而不是桌面模式。
  1. (py381env) [root@baidu1 python381]# python3 /opt/pgadmin4/web/setup.py
  2. Email address: 345731923@qq.com
  3. Password:
  4. Retype password:
  5. ...
  6. pgAdmin 4 - Application Initialisation
  7. ======================================
  8. #退出虚拟环境
  9. (py381env) [root@baidu1 python381]# deactivate
  10. [root@baidu1 python381]#
  11. #测试(只限本机),浏览器访问127.0.0.1:5050
  12. (py381env) [root@baidu1 python381]# python3 /opt/pgadmin4/web/pgAdmin4.py

这样,pgAdmin就配置完成了。 

6、配置Apache httpd

6.1、pip安装mod_wsgi

  1. yum install -y httpd httpd-devel
  2. [root@baidu1 python381]# pwd
  3. /opt/python381
  4. [root@baidu1 python381]# source /opt/py381env/bin/activate
  5. (py381env) [root@baidu1 python381]# pip3 install mod_wsgi
  6. Collecting mod_Wsgi
  7. Using cached mod_wsgi-4.7.1-cp38-cp38-linux_x86_64.whl
  8. Installing collected packages: mod-Wsgi
  9. Successfully installed mod-Wsgi-4.7.1
  10. #wsgi位置
  11. (py381env) [root@baidu1 python381]# mod_wsgi-express install-module
  12. LoadModule wsgi_module "/usr/lib64/httpd/modules/mod_wsgi-py38.cpython-38-x86_64-linux-gnu.so"
  13. WSGIPythonHome "/opt/python381"
  14. (py381env) [root@baidu1 python381]#

6.2、源码编译Apache httpd

Apache httpd 源码编译安装

6.3、修改httpd.conf

  1. <IfModule unixd_module>
  2. #前面授权的用户
  3. User see
  4. Group see
  5. # for pgadmin4
  6. LoadModule wsgi_module /usr/lib64/httpd/modules/mod_wsgi-py38.cpython-38-x86_64-linux-gnu.so
  7. WSGIPythonHome "/opt/py381env"
  8. Listen 6060
  9. Define ROOT "/opt"
  10. <VirtualHost *:6060>
  11. WSGIScriptAlias / ${ROOT}/pgadmin4/web/pgAdmin4.wsgi
  12. WSGIDaemonProcess pgadmin processes=1 threads=25
  13. <Directory ${ROOT}/pgadmin4/web>
  14. Require all granted
  15. </Directory>
  16. </VirtualHost>

保存退出。

7、启动

7.1、使用普通用户启动

  1. sudo ./bin/apachectl -f ./conf/httpd.conf -k start
  2. #页面报错查看日志
  3. tail -f ./logs/error.log

7.2、打开浏览器,输入http://localhost:6060即可看到pgadmin4界面

 

#Apache httpd日志错误:the CSRF token do not match

解决办法:这种情况一般出现在离线版的pgadmin,原因是Apache httpd依赖apr、apr-util、pcre,如果环境变量找不到这几个就会出现token无法验证的情况。

#[mpm_worker:alert] [pid 7967:tid 281473025372592] (11)Resource temporarily unavailable: AH03142: apr_thread_create: unable to create worker thread

解决办法:环境变量没有配置apr、apr-uitl、prce的lib

[wsgi:alert] [pid 15183:tid 281472937192016] (13)Permission denied: mod_wsgi (pid=15183): Couldn't bind unix domain socket '/run/httpd/wsgi.15183.0.1.sock'.

解决办法:没有权限设置sock文件,设置一个属性即可。WSGISocketPrefix /var/run/wsgi

详情见:https://modwsgi.readthedocs.io/en/master/user-guides/configuration-issues.html

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/520698
推荐阅读
相关标签
  

闽ICP备14008679号