DeltaFStationl量化工具部署启动脚本
DeltaFStationl量化工具部署启动脚本deploy_deltafstation.sh#!/bin/bash# # DeltaFStation 宝塔 Linux 部署脚本# 适用CentOS 7/Ubuntu 18.04 已安装宝塔面板# 方式Supervisor 守护 python run.py Nginx 反向代理含 SSE 配置# 用法bash deploy_deltafstation.sh# set-e# ---------------------------- 可配置变量 ----------------------------# 项目安装目录宝塔默认站点根目录习惯放在 /www/wwwroot/INSTALL_DIR/www/wwwroot/deltafstation# Python 解释器优先宝塔 Python 管理器的 3.12找不到则回退系统 python3PYTHON_BIN${PYTHON_BIN:-}# 对外监听端口Flask 内部端口Nginx 反代到这里APP_PORT5000# Git 仓库优先 gitcode 国内快github 备选GIT_REPO${GIT_REPO:-https://gitcode.com/weixin_48616345/deltafstation.git}# 运行用户宝塔默认 wwwRUN_USERwww# ---------------------------- 颜色输出 ----------------------------RED\033[0;31m;GREEN\033[0;32m;YELLOW\033[1;33m;NC\033[0minfo(){echo-e${GREEN}[INFO]${NC}$1;}warn(){echo-e${YELLOW}[WARN]${NC}$1;}error(){echo-e${RED}[ERROR]${NC}$1;exit1;}# ---------------------------- 0. root 检查 ----------------------------[[$EUID-ne0]]error请用 root 执行sudo bash deploy_deltafstation.shinfo开始部署 DeltaFStation宝塔 Linux# ---------------------------- 1. 检测包管理器 ----------------------------ifcommand-vapt-get/dev/null;thenPKG_MGRapt;info检测到 Debian/Ubuntu 系elifcommand-vyum/dev/null;thenPKG_MGRyum;info检测到 CentOS/RHEL 系elseerror未识别的系统仅支持 apt/yumfi# ---------------------------- 2. 安装系统级依赖 ----------------------------info安装编译工具与 Python 开发库TA-Lib 编译需要if[[$PKG_MGRapt]];thenapt-getupdate-yapt-getinstall-ybuild-essential python3-dev python3-venv python3-pip\gitwgetcurllibssl-dev libffi-develseyum groupinstall-yDevelopment Toolsyuminstall-ypython3-devel python3-pipgitwgetcurlopenssl-devel libffi-develfi# ---------------------------- 3. 选择 Python 解释器 ----------------------------# 优先宝塔 Python 管理器安装的 3.12其次系统 python3.12最后系统 python3if[[-z$PYTHON_BIN]];thenforcandin/www/server/pyproject_evn/versions/3.12*/bin/python3.12\/usr/local/bin/python3.12 /usr/bin/python3.12;doif[[-x$cand]];thenPYTHON_BIN$cand;break;fidone[[-z$PYTHON_BIN]]PYTHON_BIN$(command-vpython3)fiPY_VER$($PYTHON_BIN-cimport sys;print(%d.%d%sys.version_info[:2]))info使用 Python:$PYTHON_BIN(版本$PY_VER)[[$PY_VER3.10]]warnPython 版本偏低项目推荐 3.12建议在宝塔软件商店安装 Python 3.12 后重跑# ---------------------------- 4. 编译安装 TA-Lib C 库 ----------------------------# 这是最容易踩坑的依赖必须先装 C 库再 pip install TA-Libif!ldconfig-p|grep-qlibta_lib;theninfo未检测到 TA-Lib C 库开始源码编译约 1-2 分钟cd/usr/local/src[[-fta-lib-0.4.0-src.tar.gz]]||wget-qhttp://prdownloads.sourceforge.net/ta-lib/ta-lib-0.4.0-src.tar.gz[[-dta-lib]]||tar-xzfta-lib-0.4.0-src.tar.gzcdta-lib ./configure--prefix/usrmake-j$(nproc)makeinstallldconfig infoTA-Lib C 库安装完成elseinfoTA-Lib C 库已存在跳过编译fi# ---------------------------- 5. 克隆项目 ----------------------------if[[!-d$INSTALL_DIR/.git]];theninfo克隆项目到$INSTALL_DIRmkdir-p$(dirname$INSTALL_DIR)[[-d$INSTALL_DIR]]rm-rf$INSTALL_DIRgitclone$GIT_REPO$INSTALL_DIR||{warngitcode 克隆失败回退 GitHubgitclone https://github.com/Delta-F/deltafstation.git$INSTALL_DIR}elseinfo项目目录已存在执行 git pull 更新cd$INSTALL_DIRgitpull--rebase||warngit pull 失败继续使用现有代码ficd$INSTALL_DIR# ---------------------------- 6. 创建虚拟环境 ----------------------------VENV_DIR$INSTALL_DIR/venvinfo创建虚拟环境:$VENV_DIR$PYTHON_BIN-mvenv$VENV_DIRVENV_PY$VENV_DIR/bin/python$VENV_PY-mpipinstall--upgradepip-q# ---------------------------- 7. 安装 Python 依赖 ----------------------------info安装 Python 依赖TA-Lib 此处为 wheel 绑定已装好 C 库$VENV_PY-mpipinstall-rrequirements.txt-ihttps://pypi.tuna.tsinghua.edu.cn/simple# ---------------------------- 8. 创建数据目录 ----------------------------info创建数据与日志目录mkdir-pdata/raw data/processed data/results data/strategies data/simulations logs# 目录归属给 www 用户避免宝塔 Nginx/Supervisor 权限问题chown-R$RUN_USER:$RUN_USER$INSTALL_DIR2/dev/null||warnchown 失败可忽略若用 root 运行# ---------------------------- 9. 生成 Supervisor 配置 ----------------------------info生成 Supervisor 配置SUPERVISOR_CONF_DIR/www/server/supervisor/conf.dmkdir-p$SUPERVISOR_CONF_DIR2/dev/null||truecat$SUPERVISOR_CONF_DIR/deltafstation.iniEOF [program:deltafstation] command$VENV_PY$INSTALL_DIR/run.py directory$INSTALL_DIRuser$RUN_USERautostarttrue autorestarttrue startsecs5 stopwaitsecs30 stopsignalTERM ; 环境变量生产模式关闭 debug固定端口 environmentFLASK_ENVproduction,PORT$APP_PORT,HOST127.0.0.1,FLASK_USE_RELOADER0 stdout_logfile$INSTALL_DIR/logs/supervisor_out.log stderr_logfile$INSTALL_DIR/logs/supervisor_err.log stdout_logfile_maxbytes20MB stdout_logfile_backups5 redirect_stderrfalse EOFinfoSupervisor 配置已写入:$SUPERVISOR_CONF_DIR/deltafstation.ini# ---------------------------- 10. 生成 Nginx 反代配置片段 ----------------------------# SSE 关键关闭缓冲、长超时、HTTP/1.1NGINX_SNIPPET$INSTALL_DIR/logs/nginx_deltafstation.confcat$NGINX_SNIPPETEOF # DeltaFStation Nginx 反向代理配置含 SSE 支持 # 在宝塔「网站 → 你的站点 → 配置文件」中把 server{} 里的 location / 替换为以下内容 # 或在宝塔「网站 → 反向代理」中新增后手动补充 SSE 相关指令 location / { proxy_pass http://127.0.0.1:5000; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; # SSE / 流式响应关键配置 proxy_http_version 1.1; proxy_set_header Connection ; # 启用长连接 proxy_buffering off; # 关闭响应缓冲SSE 必需 proxy_cache off; # 关闭缓存 proxy_request_buffering off; chunked_transfer_encoding on; # SSE/长连接超时默认 60s 会断流调大到 1 天 proxy_read_timeout 86400s; proxy_send_timeout 86400s; # WebSocket 支持如未来需要 proxy_set_header Upgrade $http_upgrade; } EOFinfoNginx 配置片段已生成:$NGINX_SNIPPET稍后按提示配置到宝塔站点# ---------------------------- 11. 完成输出后续操作指引 ----------------------------echoecho-e${GREEN}${NC}echo-e${GREEN}DeltaFStation 部署脚本执行完成${NC}echo-e${GREEN}${NC}echoecho项目目录:$INSTALL_DIRecho虚拟环境 Python:$VENV_PYechoFlask 监听: 127.0.0.1:$APP_PORT仅本机由 Nginx 对外echoecho-e${YELLOW}【后续手动操作】${NC}echoecho1) 在宝塔软件商店安装「Supervisor管理器」(如未安装)然后:echo - 进入 Supervisor 管理器 → 配置 → 重载配置echo - 或命令行: supervisorctl update supervisorctl restart deltafstationecho - 查看状态: supervisorctl status deltafstationecho - 查看日志: tail -f$INSTALL_DIR/logs/supervisor_out.logechoecho2) 在宝塔「网站」添加站点纯静态即可仅用其域名 Nginx然后:echo - 打开站点「设置 → 配置文件」echo - 参考$NGINX_SNIPPET的内容替换 location / 段注意 SSE 指令必须保留echo - 保存后重载 Nginx: nginx -s reloadechoecho3) 放行端口/绑定域名后浏览器访问 http://你的域名 即可echoecho4) AI Agent / LLM 配置:echo - 首次启动后在 Web 界面的 AI 设置里配置 OpenAI 兼容 API Keyecho - 或编辑 config/config.py 里的 LLM_* 配置项echoecho5) 实盘 miniQMT可选:echo - 需在一台 Windows 机器上运行 miniQMT 客户端echo - 详细见项目 docs/qmt-strategy-live.mdecho

相关新闻

01_合同效力与招投标瑕疵

01_合同效力与招投标瑕疵

建设工程常见法律问题答疑(第一篇)|合同效力与招投标瑕疵仅供法律实务参考,不构成正式法律意见。当事人:必须招标的项目范围如何界定?我们作为私企开发的商品房住宅项目到底要不要公开招标? 邱富…

2026/8/16 2:17:32 阅读更多 →
工业软件授权分发技术解析与实践

工业软件授权分发技术解析与实践

1. 工业软件授权分发的技术特点解析工业软件作为现代制造业的"数字神经",其授权分发机制直接决定了产品的市场覆盖率和商业价值。与消费级软件不同,工业软件的授权体系需要兼顾企业级安全需求与复杂使用场景。我在参与某CAD/CAM系统授权模块开…

2026/8/16 2:16:31 阅读更多 →
知网AIGC检测前,先用哪个免费检测自查

知网AIGC检测前,先用哪个免费检测自查

知网AIGC检测前,先用哪个免费检测自查很多同学的学校,用知网做终检。但知网检测次数有限、也比较贵,不可能天天拿它自查。所以聪明的做法,是在定稿前,先用免费的 AIGC 检测工具自查一遍,把问题都清干净了&a…

2026/8/16 2:16:31 阅读更多 →

最新新闻

一人公司如何用AgentOS构建自动化数字飞轮:架构设计与实战

一人公司如何用AgentOS构建自动化数字飞轮:架构设计与实战

1. 项目概述:一人公司的数字飞轮如何转动最近和几个独立开发者朋友聊天,大家普遍有个共鸣:一个人单打独斗做项目,精力太容易被琐事耗散。今天要处理服务器告警,明天要回复用户反馈,后天还得写更新日志。创意…

2026/8/16 3:09:53 阅读更多 →
DeepSeek Harness 深度解析:与 LangChain / LangGraph 的本质区别

DeepSeek Harness 深度解析:与 LangChain / LangGraph 的本质区别

前言:这篇文章带大家从它的现象来理解这几个概念,拥有抽象的能力,知识才会越学越快。 一、场景锚定:它们分别解决什么痛点? 先讲一个"中央厨房"的故事 想象你开了一家大型餐厅。 大模型(比如…

2026/8/16 3:09:53 阅读更多 →
基于Spring Boot的手工艺品销售网站设计与实现

基于Spring Boot的手工艺品销售网站设计与实现

1. 项目背景与意义随着互联网经济的蓬勃发展和消费者对个性化、文化内涵商品需求的日益增长,手工艺品市场正迎来新的发展机遇。传统手工艺品销售模式受限于地域、信息不对称和渠道单一,难以将优质作品高效地展示给广大消费者。本项目旨在设计并实现一个基…

2026/8/16 3:09:53 阅读更多 →
Java 学习打卡 2026.08.15

Java 学习打卡 2026.08.15

一.Arrays 数组工具类(重点)Arrays 是 Java 提供的数组专用工具包,不用自己手写复杂逻辑,直接调用方法操作数组,非常便捷。1. 第三种打印数组方式:Arrays.toString()之前打印数组需要手写循环,现…

2026/8/16 3:09:53 阅读更多 →
VSCode与Notepad++十六进制插件对比与二进制编辑实战指南

VSCode与Notepad++十六进制插件对比与二进制编辑实战指南

1. 为什么我们需要直接编辑二进制文件?在大多数开发者和技术爱好者的日常工作中,我们打交道的主要是文本文件。无论是写代码、配环境还是记笔记,我们都在与人类可读的字符打交道。但当你需要处理一个损坏的图片、分析一个未知格式的数据包、逆…

2026/8/16 3:09:53 阅读更多 →
从解释者到决策架构师:石油工程师的下一个十年

从解释者到决策架构师:石油工程师的下一个十年

数字化工作流程正在从根本上改变地下工作的本质。 人工智能和自动化正在减轻数据整合、处理和协调输入的负担,使技术团队能够聚焦于不确定性和运营背景。 可扩展的计算能力正在消除迭代限制,使团队能够测试多种合理情景,并识别哪些变量对其运…

2026/8/16 3:08:52 阅读更多 →

日新闻

基于阿里云与通义千问(Qwen)构建AI应用:从模型调用到生产部署的完整实践指南

基于阿里云与通义千问(Qwen)构建AI应用:从模型调用到生产部署的完整实践指南

如果你是一名开发者,最近可能已经感受到了AI大模型正在从“玩具”变成“生产力工具”的强烈信号。从代码补全到智能Agent,从本地部署到云端API,我们正处在一个技术栈快速重构的节点。然而,面对层出不穷的模型、框架和工具&#xf…

2026/8/16 0:00:54 阅读更多 →
工业通信系统底层逻辑:04 反射——高频能量撞墙之后会发生什么?

工业通信系统底层逻辑:04 反射——高频能量撞墙之后会发生什么?

第四篇:反射——高频能量撞墙之后会发生什么? —— 你以为信号已经过去了,其实它正在回来打你 老Q的现场笔记 第五季,我们正式进入工业神经系统层。这里不再是单个设备的战斗,而是整个工厂“经脉”层面的秩序之战。从这一篇开始,你将第一次看清:看似简单的信号传播,背…

2026/8/16 0:00:55 阅读更多 →
【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码

【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室👇 关注我领取海量matlab电子书和…

2026/8/16 0:03:55 阅读更多 →

周新闻

基于阿里云与通义千问(Qwen)构建AI应用:从模型调用到生产部署的完整实践指南

基于阿里云与通义千问(Qwen)构建AI应用:从模型调用到生产部署的完整实践指南

如果你是一名开发者,最近可能已经感受到了AI大模型正在从“玩具”变成“生产力工具”的强烈信号。从代码补全到智能Agent,从本地部署到云端API,我们正处在一个技术栈快速重构的节点。然而,面对层出不穷的模型、框架和工具&#xf…

2026/8/16 0:00:54 阅读更多 →
工业通信系统底层逻辑:04 反射——高频能量撞墙之后会发生什么?

工业通信系统底层逻辑:04 反射——高频能量撞墙之后会发生什么?

第四篇:反射——高频能量撞墙之后会发生什么? —— 你以为信号已经过去了,其实它正在回来打你 老Q的现场笔记 第五季,我们正式进入工业神经系统层。这里不再是单个设备的战斗,而是整个工厂“经脉”层面的秩序之战。从这一篇开始,你将第一次看清:看似简单的信号传播,背…

2026/8/16 0:00:55 阅读更多 →
【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码

【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室👇 关注我领取海量matlab电子书和…

2026/8/16 0:03:55 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/14 13:40:53 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/14 14:06:45 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/15 2:35:29 阅读更多 →