
pcic/pdpPCIC数据门户包含PCIC数据门户所需的前端代码,以及在WSGI容器中部署整个应用的WSGI可调用程序。
本指南假设基于ubuntu/debian系统。
pdp需要安装pip和tox:
bashsudo apt-get install python-pip python-dev build-essential sudo pip install tox ## 或 pip install tox --user
部分所需的Python库有系统级依赖:
bashsudo apt-get install libhdf5-dev libnetcdf-dev libgdal-dev
GDAL在安装Python包时无法正确获取自身库路径,需设置环境变量:
bashexport CPLUS_INCLUDE_PATH=/usr/include/gdal export C_INCLUDE_PATH=/usr/include/gdal
满足前提条件后,创建开发环境步骤如下:
bashgit clone [***] cd pdp tox -e devenv
此过程可能需要5-30分钟,因为tox不使用系统包,需构建所有必要依赖。
生产环境建议维护一致的虚拟环境:
bashgit clone [***] cd pdp virtualenv pyenv
pdp可在任何WSGI容器中运行,本指南使用gunicorn:
bashpyenv/bin/pip install -i [***] -r requirements.txt -r data_format_requirements.txt -r test_requirements.txt -r deploy_requirements.txt
安装并构建文档(构建文档需先安装包,构建后再次安装):
bashpyenv/bin/python setup.py install pyenv/bin/python setup.py build_sphinx pyenv/bin/python setup.py install
PDP通过一组环境变量进行配置,样本环境文件位于pdp/config.env。可在运行前source该文件、包含在Docker部署中或通过其他灵活方式使用:
bashsource pdp/config.env export $(grep -v '^#' pdp/config.env | cut -d= -f1)
app_root
数据门户的根暴露路径,需代理到服务器运行的端口。
data_root
后端数据服务器的根路径,通常为<app_root>/data。生产环境中需代理到数据服务器运行的端口;开发服务器运行时会内部重定向。
dsn
raster元数据库URL,格式为dialect[+driver]://username:password@host:port/database。密码需提供或在用户~/.pgpass文件中可用。
pcds_dsn
PCDS数据库URL,格式为dialect[+driver]://username:password@host:port/database。密码需提供或在用户~/.pgpass文件中可用。
js_min
控制是否使用JavaScript打包/压缩。
geoserver_url
PCDS Geoserver URL。
ncwms_url
raster门户ncWMS URL。
tilecache_url
基础地图的瓦片服务器URL(空格分隔的列表)。
use_analytics
启用或禁用Google Analytics报告。
analytics
Google Analytics ID。
正确配置后,所有测试应可通过:
bashpyenv/bin/py.test -vv --tb=short tests
若使用tox安装,可通过以下命令运行开发服务器:
bashdevenv/bin/python scripts/rast_serve -p <端口> [-t]
生产环境应在具备进程监控的生产级WSGI容器中运行。推荐使用gunicorn作为WSGI容器,Supervisord进行进程监控,Apache作为反向代理。
生产环境中,前端和后端在独立WSGI容器中运行,因前端处理短非阻塞请求,后端处理少量长阻塞请求。
可通过以下命令测试gunicorn运行:
bashpyenv/bin/gunicorn -b 0.0.0.0:<端口1> pdp.wsgi:frontend pyenv/bin/gunicorn -b 0.0.0.0:<端口2> pdp.wsgi:backend
注意:以下为示例进程监控配置,具体细节因部署策略而异
生成Supervisord配置文件:
bashpyenv/bin/echo_supervisord_conf > /安装路径/supervisord.conf
配置文件需包含[supervisord]部分,示例:
ini[supervisord] logfile=/安装路径/etc/<supervisord日志文件> ; (主日志文件;默认 $CWD/supervisord.log) loglevel=info ; (日志级别;默认info;其他:debug,warn,trace) nodaemon=true ; (若为true则前台启动,便于调试)
Supervisorctl是命令行工具,用于查看进程状态、输出及启停进程。以下配置使用unix socket文件,也可配置Web界面监控:
ini[unix_http_server] file = /tmp/supervisord.sock [supervisorctl] serverurl = unix:///tmp/supervisord.sock [rpcinterface:supervisor] supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface
前端配置:
ini[program:pdp_frontend-v.v.v] command=/安装路径/pyenv/bin/gunicorn -b 0.0.0.0:<端口> --access-logfile=<访问日志文件> --error-logfile=<错误日志文件> pdp.wsgi:frontend directory=/安装路径/ user=www-data environment=OPTION0="",OPTION2=""... autostart=true autorestart=true redirect_stderr=True killasgroup=True
后端配置:
ini[program:pdp_backend-v.v.v] command=/安装路径/pyenv/bin/gunicorn -b 0.0.0.0:<端口> --workers 10 --worker-class gevent -t 3600 --access-logfile=<访问日志文件> --error-logfile=<错误日志文件> pdp.wsgi:backend directory=/安装路径/ user=www-data environment=OPTION0="",OPTION2=""... autostart=true autorestart=true redirect_stderr=True killasgroup=True
为简化启停,在supervisord.conf中添加组:
ini[group:v.v.v] programs=pdp_frontend-v.v.v,pdp_backend-v.v.v
配置完成后,启动进程:
bashpyenv/bin/supervisord -c 路径/to/supervisord.conf
启动后,使用supervisorctl监控和更新进程:
bashpyenv/bin/supervisorctl
升级时,建议复制现有配置并更新路径/版本号。
重要:添加新版本时,需将旧版本的autostart和autorestart设为false。
使用supervisorctl可执行reread重新读取配置,update更新旧版本配置(使其停止并应用新的autostart/autorestart=false),然后update新版本。
错误可在supervisord_logfile中查看,gunicorn启动错误在error_logfile中查看。





manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务