当前位置: 首页 > news >正文

气候服务平台ClimateSERV2.0简介(python)

1 简介

ClimateSERV 2.0允许开发从业者、科学家/研究人员和政府决策者可视化和下载历史降雨数据、植被状况数据以及 180 天的降雨和温度预报,以增进对农业和水资源供应相关问题的理解并做出改进的决策。

这些数据可以通过 Web 应用程序直接访问,也可以使用 Python 应用程序中的 ClimateSERVpy 通过应用程序 API 进行访问

可以通过以下方式安装 ClimateSERVpy包:

pip install climateserv
conda install -c servir climateserv

环境要求:

  • Python 3.9.5 或更高版本 (建议使用 3.9.5)
  • PostgreSQL (版本 13)
  • THREDDS (版本 4.6.14)
  • Linux 服务器

具体安装需要使用两个环境:一个用于数据库,另一个用于应用程序

2 在conda 环境中设置数据库

  • 创建环境
mkdir -p /cserv2/python_environments/conda/anaconda3/envs/
conda create --prefix=/cserv2/python_environments/conda/anaconda3/envs/psqlenv python=3.9.5
conda create --name psqlenv python=3.9.5
  • 进入环境
conda activate psqlenv
  • 通过 Conda 安装 PostgreSQL
conda install -y -c conda-forge postgresql
  • 创建基本数据库
cd /cserv2
mkdir db
cd dbinitdb -D local_climateserv
  • 启动 Postgres 的服务器模式/实例
pg_ctl -D local_climateserv -l logfile start
  • 创建非超级用户(更安全)
createuser --encrypted --pwprompt csadmin
  • 使用此用户,在 Base Database 中创建内部数据库
createdb --owner=csadmin cs2_db
conda deactivate
  • 创建数据库连接文件

将以下内容粘贴到下面的文件:

/cserv2/django_app/ClimateSERV2/climateserv2/data.json

{"NAME": "cs2_db","USER": "csadmin","PASSWORD": "PASSWORD_YOU_SET_FOR_THIS_USER","HOST": "127.0.0.1","SECRET_KEY": "Your_super_secret_key_for_django""DEBUG": "False"
}

对于 SECRET_KEY 必须是一个较大的随机值,并且必须保密。

对于 DEBUG,在 development 中,将其设置为 “True”,对于生产环境,将其设置为 “False”

3 在conda 环境中设置应用程序

安装 conda 后,运行以下命令来创建 python 环境并激活

conda create --prefix=/cserv2/python_environments/conda/anaconda3/envs/climateserv2 python=3.9.5
conda activate ClimateSERV2

cd 到项目目录,然后运行以下两个安装命令:

pip install -r requirements.txt
conda install --file conda_requirements.txt

完成后,再添加一个全局 lib 来代理消息队列

sudo apt-get install rabbitmq-server
sudo systemctl enable rabbitmq-server
sudo service rabbitmq-server start

现在可以创建一个服务和配置文件来启动 celery,这是任务队列,专注于实时处理。

需要创建两个文件,一个位于 /etc/systemd/system/celery.service,另一个位于 /etc/conf.d/celery

在 celery.service 中,需要以下内容(可能需要调整路径):

[Unit]
Description=Celery Service
After=rabbitmq-server.service network.target
Requires=rabbitmq-server.service
RuntimeDirectory=celery [Service]
Type=forking
User=www-data
Group=www-data
EnvironmentFile=/etc/conf.d/celery
WorkingDirectory=/cserv2/django_app/ClimateSERV2
ExecStart=/bin/bash -c '${CELERY_BIN} -A $CELERY_APP multi start $CELERYD_NODES \--pidfile=${CELERYD_PID_FILE} --logfile=${CELERYD_LOG_FILE} \--loglevel="${CELERYD_LOG_LEVEL}" $CELERYD_OPTS' 
ExecStop=/bin/sh -c '${CELERY_BIN} multi stopwait $CELERYD_NODES \--pidfile=${CELERYD_PID_FILE} --logfile=${CELERYD_LOG_FILE} \--loglevel="${CELERYD_LOG_LEVEL}"'
ExecReload=/bin/sh -c '${CELERY_BIN} -A $CELERY_APP multi restart $CELERYD_NODES \--pidfile=${CELERYD_PID_FILE} --logfile=${CELERYD_LOG_FILE} \--loglevel="${CELERYD_LOG_LEVEL}" $CELERYD_OPTS'
Restart=always[Install]
WantedBy=multi-user.target

在 /etc/conf.d/celery 中,可以粘贴:

CELERYD_NODES="w1 w2 w3"
DJANGO_SETTINGS_MODULE="climateserv2.settings"# Absolute or relative path to the 'celery' command:
CELERY_BIN="/cserv2/python_environments/conda/anaconda3/envs/climateserv2/bin/celery"# App instance to use
CELERY_APP="climateserv2"
CELERYD_MULTI="multi"# Extra command-line arguments to the worker
CELERYD_OPTS="--time-limit=300 --concurrency=8"
CELERYD_PID_FILE="/var/run/celery/%n.pid"
CELERYD_LOG_FILE="/var/log/celery/%n%I.log"

Celery 使用一个临时目录,该目录需要在重启时自动创建。创建 /usr/lib/tmpfiles.d 并将以下内容粘贴到其中:

D /var/run/celery 0777 root root - -

手动创建此目录,以及其他几个目录:

sudo mkdir /var/run/celery 
sudo chmod 777 /var/run/celery -Rsudo mkdir /opt/celery
sudo chmod 777 /opt/celerysudo mkdir /var/log/celery
sudo chmod 777 /var/log/celery -R

可以启用并启动 celery:

sudo chmod 644 /etc/systemd/system/celery.service
sudo systemctl daemon-reload
sudo systemctl enable celery
sudo service celery restart

开始应用程序设置:

python manage.py migrate

这将负责设置数据库

运行前,需要创建一个超级用户

python manage.py createsuperuser

启动应用程序

python manage.py runserver

4 其他

web端还提供不同参数的统计计算以及不同数据的图层可视化

在这里插入图片描述
在这里插入图片描述

参考:https://github.com/SERVIR/ClimateSERV2

在这里插入图片描述

http://www.lryc.cn/news/469592.html

相关文章:

  • Docker | centos7上对docker进行安装和配置
  • React--》掌握Valtio让状态管理变得轻松优雅
  • python爬虫百度图片
  • 前端开发:Vue中数据绑定原理
  • CTF-RE 从0到N: TEA
  • python 使用PIL获取图片长宽
  • 【Nas】X-DOC:搞机之PVE部署All In One(黑群晖NAS 软路由OpenWrt Docker Win10远程桌面)
  • linux 驱动源码分析的理解。
  • 鸿蒙-任务栏右击退出 或 UIAbility窗口关闭,怎么弹框拦截
  • 【C++进阶篇】——STL的简介
  • 信息安全工程师(70)网络攻击陷阱技术与应用
  • Web保存状态的手段(Session的使用)
  • 第五十四章 安全元素的详细信息 - DerivedKeyToken 详情
  • kafka 的高可用机制是什么?
  • 4.1.3 网站通信技术
  • Java-图书管理系统
  • python如何通过json以及pickle读写保存数据
  • 【SPIE出版,EI检索稳定】2024年人机交互与虚拟现实国际会议(HCIVR 2024,11月15-17日)
  • Linux vim编辑器
  • 普推知产:申请商标名称从4字改成3字下了初审!
  • Flink 状态精准一次性特性
  • 算法笔记day08
  • 在Selenium中有哪些元素对象操作方法?( ̄﹃ ̄)
  • sqli-labs靶场安装以及刷题记录-docker
  • 谷歌仓库管理工具repo
  • C#的自定义Tip窗体 - 开源研究系列文章
  • 目前最新 Reflector V11.1.0.2067版本 .NET 反编译软件
  • 软考:CORBA架构
  • qt QSaveFile详解
  • 【Linux】线程池详解及其基本架构与单例模式实现