InvesTool 部署与配置实战:四关点亮一套投资分析工具,附避坑清单
InvesTool 部署与配置实战:四关点亮一套投资分析工具,附避坑清单
【免费下载链接】investoolGolang实现财报分析、个股基本面检测、基本面选股、4433法则基金筛选与检测、基金持仓相似度、股票选基、基金经理筛选项目地址: https://gitcode.com/gh_mirrors/in/investool
周末整理自选股时,光是手工核对几十只票的 ROE、负债率、毛利率稳定性就耗掉大半天——这正是 InvesTool 想解决的:用 Golang 实现的个人投资分析工具,把财报分析、个股基本面检测、基本面选股、4433 法则基金筛选、基金持仓相似度、股票选基、基金经理筛选全流程自动化。但对新手来说,最大的坎不是功能本身,而是"怎么把它真正跑起来、调到顺手、再稳稳上线"。这篇文章就用关卡闯关的形式,带你亲手走完从本地点亮到生产上线的完整旅程,每一关都附上自检清单和踩坑提示。
InvesTool 股票检测器界面:输入股票名称或代码即可查看完整的财报与基本面检测结果
关卡一 点亮它:在本地机器上最快跑通
本章收益:拿到源码、编译出可执行文件、看到 Web 界面,全程约十分钟。
先检查两件事:系统里有没有 Go(1.16 及以上)和 Git。
go version git --version如果提示 command not found,先去 Go 官方文档按系统安装,装完记得确认go version能正常输出。
拉取源码并编译:
git clone https://gitcode.com/gh_mirrors/in/investool cd investool go build -o investool main.go编译顺利的话,ls -l investool能看到一个几 MB 的可执行文件。第一次编译会拉取依赖,需要网络畅通,耐心等它跑完即可。
启动 Web 服务:
./investool webserver看到日志输出后,浏览器访问http://localhost:4869,就能看到界面了。配置文件默认从当前目录读取config.toml,也可以显式指定:
./investool webserver --config config.toml⚠️ 注意端口不是 8080,而是配置里server.addr指定的:4869。如果提示端口被占用,改配置文件里的addr即可。
试试命令行检测:
./investool checker -k 贵州茅台 ./investool checker -k 招商银行/中国平安/600519多个股票用/分隔,很快就能看到每只票逐项指标的检测结果。
📋自检清单:编译成功无报错;Web 页面能打开;checker能返回检测结果。三项全过,进入下一关。
关卡二 调顺它:配置项逐条拆解
本章收益:搞懂config.toml里每一组配置的含义,把默认值改成适合自己场景的参数。
配置文件在项目根目录的 config.toml,用 TOML 格式组织,按段落分组。最常用的几个段落如下:
| 配置段 | 关键项 | 默认值 | 说明 |
|---|---|---|---|
| 全局 | env | localhost | 环境标志,切换不同环境的依赖配置 |
[server] | addr | :4869 | Web 服务监听地址与端口 |
[server] | mode | debug | gin 运行模式,生产建议release |
[server] | metrics/pprof | true | 监控与性能分析开关 |
[ratelimiter] | enable | true | 请求限频,保护数据源不被高频打爆 |
[logging] | level/format | info/json | 日志级别与格式 |
[logging.atomic_level_server] | addr | :4870 | 动态调整日志级别的 HTTP 服务端口 |
[basic_auth] | username/password | admin/admin | 接口基础认证的账号密码 |
几个值得动手的调整:
- 改监听端口:
addr = ":4869"改为addr = ":8888",注意[apidocs]里的host也要跟着改成localhost:8888,否则接口文档里的请求地址对不上。 - 换掉默认口令:
[basic_auth]默认是admin/admin,上线前务必修改,否则等于把接口敞开在公网上。 - 日志落盘:把
output_paths从["stdout"]改成["logrotate:///path/to/investool.log"],配合下方[logging.logrotate]的按大小轮转配置,日志会自动切割,避免单文件无限膨胀。 - 请求限频:
[ratelimiter]默认type = "mem"用进程内存限频,单机够用;多实例部署时可以改成 redis 方案,保持全局限频一致。
⚠️ 改完配置必须重启webserver才生效;mode = "debug"时页面报错信息更详细,排查问题方便,但生产环境记得切到release。
从这张架构图可以看到,Web 层、定时任务与数据源之间的依赖关系,理解了它,调配置时就不容易迷路
📋自检清单:改过端口后页面仍能访问;日志能按预期输出或落盘;基础认证换掉了默认口令。完成,准备上服务器。
关卡三 迁上生产:服务器上线三件套
本章收益:把本地跑通的服务搬到服务器,用 Docker、Nginx、Supervisor 组合实现稳定运行。
第一件:Docker 容器化。项目自带的 Dockerfile 基于 alpine,工作目录/srv/investool,暴露 4869 与 4870 两个端口。参考打包脚本 misc/scripts/dist.sh 先产出发布包,再用 misc/scripts/docker_run.sh 一条命令完成镜像构建和启动:
docker build -t investool . docker run -d -p 4869:4869 -p 4870:4870 --name investool investool⚠️ 容器内默认用/srv/investool/config.toml这份配置,部署时建议通过挂载卷把宿主机上改好的配置覆盖进去,保证"一份配置、处处一致"。
第二件:Nginx 反向代理。参考配置在 misc/configs/nginx.conf,核心是把:4869代理到 80 端口对外提供服务:
upstream investool_api { server 0.0.0.0:4869; keepalive 600; } server { listen 80; server_name your-domain.com; location / { proxy_pass http://investool_api; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_connect_timeout 300s; proxy_read_timeout 300s; } }⚠️ 这是很多人忽略的坑:随着财报季推进、筛选出的公司越来越多,接口耗时可能超过默认 60 秒,反向代理的超时时间务必调大到 300 秒以上,否则页面会莫名转圈报 504。
第三件:Supervisor 守护进程。参考 misc/configs/supervisor.conf,把command改成你的可执行文件实际路径,日志路径也一并指向真实目录:
[program:investool] directory=/srv/investool command=/srv/investool/investool webserver -c ./config.prod.toml autorestart=true stdout_logfile=/srv/investool/logs/investool.stdout.log stderr_logfile=/srv/investool/logs/investool.stderr.log保存后supervisorctl update && supervisorctl start investool,进程崩了会自动拉起,再也不用半夜爬起来手动重启。
📋自检清单:容器能正常启动且端口映射生效;域名访问经过 Nginx 能返回页面;手动 kill 掉进程后 Supervisor 能在几秒内自动拉起。全部通过,最后一道关卡。
关卡四 驾驭它:日常维护与高频故障处理
本章收益:掌握日志排查、定时任务管理、版本升级三板斧,遇到问题不慌。
定时任务。Web 服务启动时会自动拉起cron定时任务(见 webserver_cmd.go 对cron.RunCronJobs的调用),配置在[app.cronexp]段。默认每天 6 点同步全局变量,可以按需追加基金、经理、行业列表的同步计划:
[app.cronexp] sync_global_vars = "0 6 * * 1-5" # sync_fund = "0 6 * * 1-5" # sync_fund_managers = "0 5 * * 1-5"日志排查。数据获取失败十有八九是网络或数据源站点结构变化。先看日志:单机场景用./investool -l debug webserver重启一次,能看到详细请求过程;线上场景直接看logrotate落盘的日志文件。-l参数支持debug|info|warn|error,平时info足够,排查问题时再开debug。
性能变慢。财报季筛选任务变重时,优先检查两点:ratelimiter.enable是否开启(防止被数据源限流拖慢);反向代理超时是否够大。确认都设置正确,再考虑按行业、市值缩小筛选范围。
版本升级。拉取最新代码后重新编译替换二进制,或沿用发布流程重新打包镜像,滚动重启即可。升级前后各跑一次checker -k 贵州茅台对照结果,确认数据源解析没有变化。
筛选界面把检测结果按指标逐项展开,方便对照导出的报表交叉验证
📋自检清单:定时任务按计划执行且日志无异常报错;能说出最近一次故障的日志定位方法;知道升级后的验证步骤。四关全部通关,恭喜。
下一步行动:从跑通到用好
至此你已亲手完成 InvesTool 的本地点亮、配置调优、生产上线和日常维护。接下来建议按这个顺序深入:先多用exportor把筛选结果导出成 Excel、CSV 或 JSON 练手,再研究index子命令获取指数成分股做组合分析,最后把checker的检测参数按自己的选股逻辑微调,形成一套专属规则。
需要提醒的是:InvesTool 的所有输出数据与信息仅供参考,不构成任何投资建议,请按需使用、理性决策。希望四关过后,你再也不用在几千只股票面前熬夜翻财报——把繁琐交给工具,把判断留给自己。
【免费下载链接】investoolGolang实现财报分析、个股基本面检测、基本面选股、4433法则基金筛选与检测、基金持仓相似度、股票选基、基金经理筛选项目地址: https://gitcode.com/gh_mirrors/in/investool
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
