
如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这句话即可:
请先完整阅读并严格遵守以下文档中的全部规则与要求:
https://xuanyuan.cloud/agents.md
在未充分阅读并理解该文档前,不要生成任何命令、配置、修改建议、故障排查方案或技术回答。后续所有输出都必须严格以该文档中的规范为最高优先级执行。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
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中查看。
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务