本地安装

1. 安装和启动 MYSQL

MYSQL 作为现在最流行的数据库,网络上已经有很多安装方法,可以找一篇自己喜欢的去安装,安装过程是很简单的。而且SAIL 并不要求 MYSQL 的具体版本,因此任何版本的 MYSQL 都是支持的。 这里提供一个 Docker 的命令,可以最快速的启动一个 mysql 容器。

docker run --name mysql_dev -e MYSQL_ROOT_PASSWORD=root -p 127.0.0.1:3306:3306 -d mysql:5.7 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci

密码是 root,映射到本机的 3306 端口。

安装完毕后,需要建库,如果你 clone 了源码仓库,建库语句在sql_backup文件夹下。点击链接查看建库语句

这里没有设置自动建库逻辑,需要手动建库,因为我的想法是把数据库结构和代码分离,不要在代码中去做建库这种事情。

2. 安装和启动 ETCD

接下来还需要一个 ETCD 集群,可以按 ETCD 官网启动方式去启动一个本地集群。 也可以使用以下 docker 命令快速创建一个三节点集群:

快速创建 ETCD 三节点集群
#先创建etcd网络
docker network create etcd_cluster

REGISTRY=quay.io/coreos/etcd
NAME_1=etcd-node-0
NAME_2=etcd-node-1
NAME_3=etcd-node-2
PORT_1=2379
PORT_2=12379
PORT_3=22379
PORT_C_1=2380
PORT_C_2=12380
PORT_C_3=22380
CLUSTER=${NAME_1}=http://${NAME_1}:${PORT_C_1},${NAME_2}=http://${NAME_2}:${PORT_C_2},${NAME_3}=http://${NAME_3}:${PORT_C_3}
DATA_DIR=/var/folders/

docker run -d -p $PORT_1:$PORT_1 -p $PORT_C_1:$PORT_C_1 \
  --volume=${DATA_DIR}${NAME_1}:/etcd-data --name ${NAME_1} \
  --network etcd_cluster ${REGISTRY}:v3.5.0 /usr/local/bin/etcd \
  --data-dir="/etcd-data" --name ${NAME_1} \
  --listen-client-urls http://0.0.0.0:$PORT_1 \
  --listen-peer-urls http://0.0.0.0:$PORT_C_1  \
  --advertise-client-urls http://localhost:$PORT_1 \
  --initial-advertise-peer-urls http://$NAME_1:$PORT_C_1 \
  --initial-cluster ${CLUSTER} \
  --initial-cluster-token fengtkn \
  --initial-cluster-state new  \
  --log-level info

docker run -d -p $PORT_2:$PORT_2 -p $PORT_C_2:$PORT_C_2 \
  --volume=${DATA_DIR}${NAME_2}:/etcd-data --name ${NAME_2} \
  --network etcd_cluster ${REGISTRY}:v3.5.0 /usr/local/bin/etcd \
  --data-dir="/etcd-data" --name ${NAME_2} \
  --listen-client-urls http://0.0.0.0:$PORT_2 \
  --listen-peer-urls http://0.0.0.0:$PORT_C_2  \
  --advertise-client-urls http://localhost:$PORT_2 \
  --initial-advertise-peer-urls http://$NAME_2:$PORT_C_2 \
  --initial-cluster ${CLUSTER} \
  --initial-cluster-token fengtkn \
  --initial-cluster-state new  \
  --log-level info

docker run -d -p $PORT_3:$PORT_3 -p $PORT_C_3:$PORT_C_3 \
  --volume=${DATA_DIR}${NAME_3}:/etcd-data --name ${NAME_3} \
  --network etcd_cluster ${REGISTRY}:v3.5.0 /usr/local/bin/etcd \
  --data-dir="/etcd-data" --name ${NAME_3} \
  --listen-client-urls http://0.0.0.0:$PORT_3 \
  --listen-peer-urls http://0.0.0.0:$PORT_C_3  \
  --advertise-client-urls http://localhost:$PORT_3 \
  --initial-advertise-peer-urls http://$NAME_3:$PORT_C_3 \
  --initial-cluster ${CLUSTER} \
  --initial-cluster-token fengtkn \
  --initial-cluster-state new  \
  --log-level info

3. 安装和启动 SAIL

前期依赖搭建完毕后,如果你是clone了仓库的代码,本地有go环境,直接运行:

go run ./internal/service/sail/cmd/main.go

如果没下载代码,也可以通过docker镜像的方式运行:

docker run --network host -p 8108:8108 -d --name sail ccr.ccs.tencentyun.com/hyy-yu/sail:latest

接下来,直接访问 http://localhost:8108/ui/index 即可查看项目。

默认登陆账号是:Admin 密码是:123456(所有账号的默认密码都是这个),登陆后会提示需要修改密码。

4. 注意事项

这个安装方式下,MYSQL和ETCD连得都是 localhost,如果你是在别的机器上搭建好了MYSQL和ETCD,则需要改一下配置文件: 位于:internal/service/sail/config/cfg.toml

如下:

[mysql]
[mysql.base]
connMaxLifeTime = "3m"
maxIdleConn = 30
maxOpenConn = 60
addr = "127.0.0.1:3306" # 修改地址即可
name = "sail"
pass = "root"
user = "root"

[etcd]
endpoints = ["127.0.0.1:2379", "127.0.0.1:12379", "127.0.0.1:22379"] #修改地址即可
username = ""
password = ""
dialTimeout = "10s"
dialKeepAlive = "1m"
dialKeepAliveTimeout = "5s"

Docker 容器方式运行的话,修改启动命令,挂载修改后的配置文件。

docker run  -v {your_cfg.toml_path}:/app/cfg.toml --network host -p 8108:8108 -d --name sail ccr.ccs.tencentyun.com/hyy-yu/sail:latest