簡介
pgAdmin4 是開源數據庫 PostgreSQL 的圖形管理工具,是桌面版圖形管理工具pgAdmin3 的重寫,遵循 PostgreSQL協議 是開源、免費、可商用的。pgAdmin4 是python開發的web應用程序,既可以部署為web模式通過瀏覽器訪問,也可以部署為桌面模式獨立運行。
以下基於: pgadmin 4.15 + python2.7 + httpd2.4
建議:如果您僅僅是使用pgAdmin4,建議您優先到官網下載安裝包進行安裝。
1 在Centos7 源碼安裝pgAdmin4(via pgadmin4.whl)[1]
安裝系統依賴包
sudo yum install gcc python-devel -y
安裝python應用開發依賴(python/pip/virtualenv)
#使用centos7系統自帶的python2.7.5,因此不用安裝
#安裝python2-pip(安裝到了系統python中)
sudo yum -y install epel-release
sudo yum install python2-pip
pip —version
##注意:python3配套的是python3-pip
#安裝虛擬環境(安裝到了系統python中)
pip install virtualenv
#創建虛擬環境(--no-site-packages 已被棄用)
cd /home/centos7/
virtualenv py2env
#進入虛擬環境
source py2env/bin/activate
#安裝依賴模塊包
##將pgadmin4/requirements.txt中的psycopg2修改為psycopg2-binary
(py2env) vim ./pgadmin4/requirements.txt
#psycopg2>=2.8
psycopg2-binary>=2.8
(py2env) pip install ./pgadmin4/requirements.txt
注意:
1 pip 安裝超時報錯:aise ReadTimeoutError(self._pool, None, 'Read timed out.')
可通過更換安裝源來解決:pip install -i https://pypi.douban.com/simple <需要安裝的包>
2 virtualenvwrapper是virtualenv的擴展包,用於更方便管理虛擬環境,不是必須安裝的。[2]
python編譯運行程序
#創建配置文件和日志文件
(py2env) python ./pgadmin4/web/setup.py
#啟動
(py2env) python ./pgadmin4/web/pgAdmin4.py
httpd+mod_wsgi部署pgAdmin4服務
#安裝apache httpd
sudo yum install -y httpd httpd-devel
#在虛擬機環境中安裝mod_wsgi
(py2env) ./bin/pip install mod_wsgi
#查看安裝路徑
(py2env) ./bin/mod_wsgi-express install-module
LoadModule wsgi_module "/usr/lib64/httpd/modules/mod_wsgi-py36.cpython-36m-x86_64-linux-gnu.so"
WSGIPythonHome "/home/centos8/py3env/“
#配置httpd.conf
vim /etc/httpd/conf/httpd.conf
#末尾添加
LoadModule wsgi_module "/usr/lib64/httpd/modules/mod_wsgi-py36.cpython-27m-x86_64-linux-gnu.so"
WSGIPythonHome "/home/centos7/py2env/"
Listen 5050
<VirtualHost *:5050>
#ServerName pgadmin.example.com
#LogLevel debug
#ErrorLog ${APACHE_LOG_DIR}/pgadmin-error.log
#CustomLog ${APACHE_LOG_DIR}/pgadmin-access.log combined
#WSGIDaemonProcess pgadmin processes=1 threads=25 python-home=/home/centos7/py2env/
WSGIScriptAlias / /home/centos7/py2env/hgadmin4/web/pgAdmin4.wsgi
<Directory "/home/centos7/py2env/hgadmin4/web/">
WSGIProcessGroup pgadmin
WSGIApplicationGroup %{GLOBAL}
Require all granted
</Directory>
</VirtualHost>
#檢查httpd配置文件修改語法正確性
apachectl configtest
修改pgadmin配置文件的用戶訪問控制權限[3]
注意:默認在非server_mode時以下配置庫根目錄變為:~/.pgadmin/
#修改配置路徑
vim web/config_distro.py
LOG_FILE = '/var/log/pgadmin/pgadmin4.log'
SQLITE_PATH = '/var/lib/pgadmin/pgadmin4.db'
SESSION_DB_PATH = '/var/lib/pgadmin/sessions'
STORAGE_DIR = '/var/lib/pgadmin/storage’
#修改配置文件和庫的所屬關系(按照httpd.conf中的用戶和組)
chown -R apache:apache /var/lib/pgadmin
chown -R apache:apache /var/log/pgadmin
#如果SeLinux開啟了,使用以下命令修改SELinux policy:
chcon -R -t httpd_sys_content_rw_t "/var/log/pgadmin/"
chcon -R -t httpd_sys_content_rw_t "/var/lib/pgadmin/"
#修改selinux安全訪問配置
su - root
vim /etc/selinux/config
SELINUX = disabeld #重啟生效
setenforce 0 #即時生效
service iptables stop
#重啟apache httpd服務(一般在root下啟動)
apachectl restart
apachectl status
瀏覽器瀏覽: http://127.0.0.1:5050
2. 在 win10 源碼安裝pgAdmin4(python+httpd必須位數一致)
此處使用 [ python2.7.17_32bit + apache2.4.6_32bit + VCForPython27.msi ]
2.1 安裝並配置python和pip
下載python-2.7.17.32.msi,並手動安裝到 C:\Python27。(python和pip執行文件位於C:\Python27\Scripts)
#在系統環境變量path中添加:c:\Python27; C:\Python27\Scripts
C:\Users\liuyu>python —version
Python 2.7.17
C:\Users\liuyu>pip -version
pip 19.2.3 from C:\Python27\lib\site-package\pip (python 27)
注意:有時C:\Windows\System32路徑需要python27.dll文件,如缺失復制進去即可。
2.2 安裝並創建虛擬環境
#安裝虛擬環境
C:\>pip install virtualenv
#創建虛擬環境
C:\>virtualenv py2env
#進入虛擬環境
C:\>cd c:\py2env
C:\py2env>Scripts\activate
2.3 安裝pgAdmin4依賴
#將pgadmin4源碼包拷貝到py2env
git clone https://github.com/postgres/pgadmin4.git pgadmin4
#將pgadmin4依賴模塊包安裝到虛擬環境
(py2env)C:\py2env>Scripts\pip install -r pgadmin4\requirement.txt
#試運行python程序
(py2env)C:\py2env>Scripts\python.exe pgadmin4\web\setup.py
(py2env)C:\py2env>Scripts\python.exe pgadmin4\web\pgAdmin4.py
Starting pgAdmin 4. Please navigate to http://127.0.0.1:5050 in your browser.
* Serving Flask app "pgadmin" (lazy loading)
* Environment: production
WARNING: Do not use the development server in a production environment.
Use a production WSGI server instead.
* Debug mode: off
注意:如配置完啟動httpd時報錯在c:/Windows/System32/找不到python27.dll,可以通過以下方式解決:上網下載python27.dll並放到C:/Windows/System32/;
2.4 安裝apache httpd
手動安裝或者解壓apache2.4到C:\apache2.4
2.5 安裝mod_wsgi
安裝mod_wsgi依賴的編譯器VCForPython27.mis
下載VCForPython27.mis(mod_wsgi的gcc編譯器)到本地系統,使用手動安裝或者命令行靜模安裝到默認路徑即可。其中,命令行如下:
msiexec /i VCForPython27.msi /qb REBOOT=SUPPRESS
安裝mod_wsgi
#設置臨時環境變量
(py2env) c:\py2env>set “MOD_WSGI_APACHE_ROOTDIR=C:\apache2.4”
#在虛擬環境中安裝mod_wsgi
(py2env) c:\py2env>Scripts\pip.exe install mod_wsgi
Collecting mod_wsgi
Using cached https://files.pythonhosted.org/packages/25/d8/1df4ba9c051cd88e02971814f0867274a8ac821baf983b6778dacd6e31f7/mod_wsgi-4.6.8.tar.gz
Building wheels for collected packages: mod-wsgi
Building wheel for mod-wsgi (setup.py) ... done
Created wheel for mod-wsgi: filename=mod_wsgi-4.6.8-cp27-cp27m-win_amd64.whl size=365468 sha256=74afcaa578aa17be65bc3b19b63419b76f3617992a22ee8c49edaafb7470053b
Stored in directory: C:\Users\liuyu\AppData\Local\pip\Cache\wheels\14\20\6d\6302d26b9f3a8d84eb8a06e2c418cf807700e3550ded230f8a
Successfully built mod-wsgi
Installing collected packages: mod-wsgi
Successfully installed mod-wsgi-4.6.8
#查看mod_wsgi安裝配置情況
(py2env) c:\py2env>Scripts\mod_wsgi-express.exe --help
Usage: mod_wsgi-express command [params]
Commands:
module-config
module-location
(py2env) c:\py2env>Scripts\mod_wsgi-express.exe module-config
LoadModule wsgi_module "c:/py2env/lib/site-packages/mod_wsgi/server/mod_wsgi.pyd"
WSGIPythonHome "c:/py2env”
2.6 將pgAdmin4.wsgi配置到httpd.conf
在C:\apache2.4\conf\httpd.conf 末尾加入(或者配置在單獨的pgamin4.conf文件)以下內容:
#config pgadmin4
LoadModule wsgi_module “C:/py2env/lib/site-packages/mod_wsgi/server/mod_wsgi.pyd"
WSGIPythonHome “C:/py2env"
<VirtualHost *:80>
ServerName pgadmin4.highgo.com
WSGIScriptAlias / C:\py2env\pgadmin4\web\pgAdmin4.wsgi
<Directory C:\py2env\pgadmin4\web\>
# Order deny,allow
# Allow from all
Require all granted
</Directory>
</VirtualHost>
2.7 啟動httpd服務
#雙擊或者命令行啟動httpd.exe
C:\apache2.4\bin>httpd.exe
(如正確則不返回任何信息,報錯則返回甚至退出)
2.8 訪問pgAdmin4網頁
瀏覽器訪問 http://localhost:80/

參考