## 梦工厂编译部署文档 ### 梦工厂外网测试服 1. DB 服务:119.3.105.109 账号:root 密码:l2qMQigN4xOA MongoDB 和 Rides 的地址 - MongoDB 账号:root 密码:iamciniao - Rides 密码:kujqweiasd 2. 程序运行服:119.3.89.14 账号:root 密码:l2qMQigN4xOA ### 编译项目代码 1. 拉取 git 仓库代码:git clone http://git.legu.cc/liwei_3d/go_dreamfactory.git 2. 进入 go_dreamfactory 目录 执行:go mod tidy (需要安装 golang 版本 go1.18.2 以上环境:https://www.jianshu.com/p/35a161738d83) 3. 进入 go_dreamfactory/bin 目录下,执行 bulid_linux.sh 脚本 编译执行文件 4. 拷贝 bin 目录作为发布文件 ### 安装部署依赖环境 1. 安装 MongoDB 教程 https://segmentfault.com/a/1190000039268500 * 安装版本 2. 安装 Redis 教程 - 单节点 https://segmentfault.com/a/1190000023178516 - 集群:https://blog.csdn.net/jiang1986829/article/details/108667854 3. 安装 Consul https://blog.csdn.net/jeikerxiao/article/details/78114413 4. 安装 NetCore SDK6 版本 https://learn.microsoft.com/en-us/dotnet/core/install/linux-centos ### 修改配置文件 1. 进入发布文件(bin 目录) 下 conf 目录 2. 修改配置文件中 MongoDB,Redis,Consul 相关配置 ``` rpcx: #rpcx 系统配置 Debug: true AutoConnect: true #自动连接到集群服务节点 RpcxStartType: 1 #0 服务端 1是客户端 ConsulServers: ["10.0.0.9:8500"] #Consul 服务地址 cache: #缓存系统 Redis_IsCluster: false #是否是集群 Redis_Addr: ["10.0.0.9:6986"] #Redis 服务地址 Redis_Password: "li13451234" #Redis 服务密码 Redis_DB: 6 #Redis 数据存储db db: #存储系统 MongodbUrl: "mongodb://10.0.0.9:27019" #Mongodb服务地址 MongodbDatabase: "dreamfactory" #梦工厂数据库名 ``` 3. 修改区服 id ``` tag : "dreamfactory_liwei" #服务集群标签 在梦工厂中作为区服id 同区服内的服务可以互相通信,不同区服的不能互相通信 ``` 4. 配置跨服服务器 此配置只在 gateway 服务器上 ``` gateway: Debug: true SpanServiceTag: "dreamfactory_span" #服务服务集群 ListenPort: 7891 ``` 5. 配置多个 worker 服务 - 配置多个 worker 只需要拷贝 worker_1.yaml 文件到 worker_2.yaml 文件 - 修改 worker_2.yaml 下配置文件中 ``` id: "worker_1" #修改worker_1 到worker_2, 服务的唯一id 在同一集群下唯一即可 ip: "127.0.0.1" #运行主机Ip 保证同集群下服务可以通过此ip互相访问 port: 9569 #rpc通信端口 不被占用即可 log: #日志系统 FileName: "./log/worker_1.log" #修改日志文件地址 以免和其他worker冲突 日志文件存放地址 ``` ### 部署梦工厂服务 1. 将修改完毕的发布文件(bin 目录)考本到目标主机服务器上,选择适合目录保存 2. 进入发布文件 执行 ./start.sh 脚本 正常执行 ``` [root@master bin]# ./start.sh starting mainte... start success starting worker_1... start success starting gateway_1... start success ``` 3. 程序启动后会自动生成 log 目录,进入 log 目录 查看各个服务文件启动日志是否正常 ,每个服务会对应一个日志文件 日志文件名在 服务配置中有配置,正常启动 ``` 2022/07/22 11:45:56.681 INFO rpcx/service.go:80 Sys log Init success ! 2022/07/22 11:45:56.682 INFO rpcx/service.go:86 Sys event Init success ! 2022/07/22 11:45:56.682 INFO rpcx/service.go:92 Sys codec Init success ! 2022/07/22 11:45:56.682 INFO rpcx/service.go:98 Sys rpcx Init success ! 2022/07/22 11:45:56.682 INFO services/servicebase.go:24 init sys.configure success! 2022/07/22 11:45:56.682 INFO cbase/servicebase.go:66 服务[gateway_1] 初始化完成! 2022/07/22 11:45:56.682 INFO cbase/servicebase.go:89 服务[gateway_1:1.0.0.0] 启动完成! 2022/07/22 11:45:56.682 INFO cbase/servicebase.go:109 注册模块【gateway】 ``` 4. 是同网页工具以及客户端 测试服务是否正常 1. 网页工具 http://ip:prot/#/protocol/index 修改页面中服务器连接地址 点击连接,测试 user.login 协议 ### 外网服务器地址 - ip:119.3.89.14 - user:root - password:l2qMQigN4xOA ### df01 区服 (暂时不动) - 目录:/home/go/bin - 关闭命令: - ./cmd stop -g ./conf/gm02.json - ./cmd stop -g ./conf/gm01.json - 启动命令: - ./cmd start -g ./conf/gm01.json - ./cmd start -g ./conf/gm02.json ### df02 区服 - 目录:/home/liwei/bin - 关闭命令: - ./cmd stop -g ./conf/gm02.json - ./cmd stop -g ./conf/gm01.json - 启动命令: - ./cmd start -g ./conf/gm01.json - ./cmd start -g ./conf/gm02.json PS: 解决redis 并发下断联重启问题 需要做以下设置 参考 https://www.cnblogs.com/to-be-rich/p/7818618.html 1.redis设置的tcp连接数受限于系统默认限制128个,因此必须要先调整内核的连接数 echo 511 > /proc/sys/net/core/somaxconn overcommit_memory参数设置为0!在内存不足的情况下,后台程序save可能失败 "vm.overcommit_memory=1" > /etc/sysctl.conf