
PCIC数据门户包含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 https://github.com/pacificclimate/pdp cd pdp tox -e devenv
此过程可能需要5-30分钟,因为tox不使用系统包,需构建所有必要依赖。
生产环境建议维护一致的虚拟环境:
bashgit clone https://github.com/pacificclimate/pdp cd pdp virtualenv pyenv
pdp可在任何WSGI容器中运行,本指南使用gunicorn:
bashpyenv/bin/pip install -i https://pypi.pacificclimate.org/simple/ -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
可通过以下命令测试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
注意:以下为示例进程监控配置,具体细节因部署策略而异
生成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中查看。
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。






探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
无需登录使用专属域名
Kubernetes 集群配置 Containerd
K3s 轻量级 Kubernetes 镜像加速
VS Code Dev Containers 配置
Podman 容器引擎配置
HPC 科学计算容器配置
ghcr、Quay、nvcr 等镜像仓库
Harbor Proxy Repository 对接专属域名
Portainer Registries 加速拉取
Nexus3 Docker Proxy 内网缓存
需要其他帮助?请查看我们的 常见问题Docker 镜像访问常见问题解答 或 提交工单
docker search 限制
站内搜不到镜像
离线 save/load
插件要用 plugin install
WSL 拉取慢
安全与 digest
新手拉取配置
镜像合规机制
manifest unknown
no matching manifest(架构)
invalid tar header(解压)
TLS 证书失败
DNS 超时
域名连通性排查
410 Gone 排查
402 与流量用尽
401 认证失败
429 限流
D-Bus 凭证提示
413 与超大单层
来自真实用户的反馈,见证轩辕镜像的优质服务