mayfly-go是web 版 linux(终端[终端回放] 文件 脚本 进程 计划任务)、数据库(mysql postgres oracle sqlserver 达梦 高斯 sqlite)、redis(单机 哨兵 集群)、mongo 等集工单流程审批于一体的统一管理操作平台
部署
具体部署见:部署 · 语雀
安装包部署
Ubuntu的apt包里没有,所以要手工下载安装。
前往下载地址下载对应版本的安装包:mayfly-go 发行版 - Gitee.com
解压,然后执行startup.sh即可:
bash
wget https://gitee.com/dromara/mayfly-go/releases/download/v1.7.4/mayfly-go-linux-amd64.zip
unzip mayfly-go-linux-amd64.zip
cd mayfly-go-linux-amd64/
# 修改配置文件
cp config.yml.example config.yml
# 启动mayfly-go
sh startup.sh
# 停止mayfly-go
sh shutdown.sh
现在的新版本直接就有config.yml文件了,不用再执行cp config.yml.example config.yml
数据库mysql需要配置一下,或者不用mysql,直接使用sqlite 。编辑config.yml文件:
bash
# 若存在mysql配置,优先使用mysql
#mysql:
# host: mysql:3306
# username: root
# password: 111049
# db-name: mayfly-go
# config: charset=utf8&loc=Local&parseTime=true
# max-idle-conns: 5
sqlite:
path: ./mayfly-go.sqlite
max-idle-conns: 5
使用docker部署
bash
docker pull ccr.ccs.tencentyun.com/mayfly/mayfly-go:v1.7.4
docker-compose部署
执行
bash
docker-compose up
使用
启动后系统会起来18888端口服务,直接登录18888端口即可。若有报错,比如mysql连不上等,需要排查问题。
配置端口转发
配置nginx端口转发(不需要)
服务启动后,只绑定了本地端口,所以网络上的其它及其是无法连上的(这里理解错误,其实是全网侦听的)。这时候需要配置端口转发(其实不需要)。这里以nginx配置为例:
bash
upstream mayfly-go {
server [2409:8a3c:40c0:5b08:a00:27ff:fee8:e484]:18888;
}
server {
keepalive_requests 120; #单连接请求上限次数。
listen 80; #监听端口
server_name xxx.net; #监听地址
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
proxy_set_header X-Forward-For $proxy_add_x_forwarded_for;
proxy_set_header Upgrade $http_upgrade; #需要配置支持websocket
proxy_set_header Connection 'upgrade'; #需要配置支持websocket
location / { #请求的url过滤,正则匹配,~为区分大小写,~*为不区分大小写。
proxy_pass http://mayfly-go; #请求转向mayfly-go 定义的服务器列表
}
}
配置vagrant端口转发
因为采用的是vagrant配置VirtualBox虚拟机,所以可以在vagrant的配置里,设置端口转发
bash
config.vm.network "forwarded_port", guest: 18888, host: 18888,
auto_correct: true
登录

用户名是admin
口令是admin123.
费了好大劲才登上来:

但是没找到啥能配置或管理的地方,也许是因为这台机器太新了,没啥可管理的。
总结:使用感受
mayfly-go的目的是减轻管理员的工作量,提高工作效率。整个文档相对来说,比较详细。但是一些配置细节需要有相关经验才行。
反正我是没找到那些常规配置的地方.....
调试
执行报错mysql连接失败
bash
024-03-05 12:40:31.330 [ERROR] [mayfly-go/pkg/starter.initMysql (gorm.go:43)] :
连接mysql失败! [dial tcp: lookup mysql on 127.0.0.53:53: server misbehaving]
panic: 连接mysql失败! [dial tcp: lookup mysql on 127.0.0.53:53: server misbehaving]
因为测试的机器没有开3306端口,而是采用进行通信的方法,所以先去掉config.yml里面的mysql配置,直接使用sqlite测试。
远程无法连接18888端口
发现服务只起了ipv6的18888端口,没有起ipv4的。但是奇怪的是本机是可以连上的,当然连上之后可以看到是跟本地的ipv4地址的18888端口通信的。真奇怪
原来起了ipv6的,就有ipv4的。跟下面问题一样
看到只有ipv6端口侦听
tcp6 0 0 :::18888 :::* LISTEN
原来有这个ipv6的,ipv4端口也侦听的
没有密码登不上去
后来在issue里面找到,用户名admin,密码admin123. 注意是9个字母,最后一个字母是"."
名词解释:Redis
Redis是完全开源的,遵守 BSD 协议,是一个高性能的 key-value 数据库。
连mysql报错[error] failed to initialize database, got error dial tcp: lookup mysql on 127.0.0.53:53: server misbehaving
error\] failed to initialize database, got error dial tcp: lookup mysql on 127.0.0.53:53: server misbehaving 2025-09-02 04:14:20.747 \[ERROR\] \[mayfly-go/pkg/starter.initMysql (gorm.go:43)\] : 连接mysql失败! \[dial tcp: lookup mysql on 127.0.0.53:53: server misbehaving
panic: 连接mysql失败! [dial tcp: lookup mysql on 127.0.0.53:53: server misbehaving]
写域名解析在/etc/hosts文件中:
bash
# add for mysql
127.0.0.1 mysql
搞定
报错permission denied while trying to connect to the Docker daemon socket
permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get "http://%!F(MISSING)var%!F(MISSING)run%!F(MISSING)docker.sock/v1.51/info": dial unix /var/run/docker.sock: connect: permission denied
这个错误表明当前用户没有权限访问Docker守护进程的Unix套接字文件(/var/run/docker.sock
)
估计是因为没开docker服务。