From 3fc468a8762b0ab366aa2b80e088157efe25af1a Mon Sep 17 00:00:00 2001 From: XanderYe Date: Thu, 13 Jan 2022 09:09:03 +0800 Subject: [PATCH] =?UTF-8?q?dnfserver=E5=A2=9E=E5=8A=A0mysql=E5=AE=A2?= =?UTF-8?q?=E6=88=B7=E7=AB=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 534 +++++++++++++++++----------------- dnf-server/Dockerfile | 66 ++--- dnf-server/README.md | 76 ++--- dnf-server/docker-compose.yml | 138 ++++----- dnf-server/init/df_game_r.lua | 12 +- docker-compose.yml | 188 ++++++------ mysql56/README.md | 80 ++--- 7 files changed, 547 insertions(+), 547 deletions(-) diff --git a/README.md b/README.md index 6349611..0bb859a 100644 --- a/README.md +++ b/README.md @@ -1,267 +1,267 @@ -# 地下城与勇士容器站库分离 - -## 说明 - -基于[1995chen/dnf](https://github.com/1995chen/dnf) - -感谢 xyz1001大佬提供`libhook.so`优化CPU占用 [源码](https://godbolt.org/z/EKsYGh5dv)
-集成了DP2插件 - -## 部署流程 - -### Centos6/7安装Docker - -先升级yum源 - -```shell -yum update -y -``` - -下载docker安装脚本 - -```shell -curl -fsSL https://get.docker.com -o get-docker.sh -``` - -运行安装docker的脚本 - -```shell -sudo sh get-docker.sh -``` - -启动docker - -```shell -systemctl enable docker -systemctl restart docker -``` - -关闭防火墙 - -```shell -systemctl disable firewalld -systemctl stop firewalld -``` - -关闭selinux - -```shell -sudo sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config -``` - -创建swap(如果内存足够可以直接忽略) - -```shell -/bin/dd if=/dev/zero of=/var/swap.1 bs=1M count=8000 -mkswap /var/swap.1 -swapon /var/swap.1 -sed -i '$a /var/swap.1 swap swap default 0 0' /etc/fstab -``` - -查看操作系统是否打开swap的使用(如果内存足够可以直接忽略) -sudo vim /etc/sysctl.conf -将vm.swappiness的值修改为100(优先使用swap),没有该配置就加上 -```shell -vm.swappiness = 100 -``` -https://www.cnblogs.com/EasonJim/p/7777904.html - -### 拉取镜像 - -```shell -dnf数据库mysql镜像 -docker pull xanderye/dnf-mysql:5.6 -dnf服务server镜像 -docker pull xanderye/dnf-server:centos7 -``` - -### 简单启动 - -```shell -# 创建一个dnf独立网桥,连通mysql和server两个容器 -docker network create dnf --subnet 172.20.0.0/16 - -# 使用mysql5.6(数据不通用) -# ALLOW_IP为game账户ip白名单(dnf服务的ip) -# GAME_PASSWORD为game账户密码(密码必须8位 否则无法连接) -# MYSQL_ROOT_PASSWORD为mysql root密码,仅初始化有效 -docker run -itd \ --p 3306:3306 \ --v /dnf/dnfmysql/mysql:/var/lib/mysql \ --e TZ=Asia/Shanghai \ --e ALLOW_IP=172.20.0.% \ --e GAME_PASSWORD=uu5\!^%jg \ -# root账户密码 --e MYSQL_ROOT_PASSWORD=88888888 \ ---name dnfmysql \ ---network=dnf \ -xanderye/dnf-mysql:5.6 - -# 查看日志 (首次启动需要等待几十秒,出现一大堆数据库配置列表才是启动完成) -docker logs dnfmysql - - -# 启动dnf服务 -# AUTO_MYSQL_IP为自动获取内网下mysql容器的ip -# MYSQL_NAME为内网下mysql容器名称(主机名) -# MYSQL_IP为mysql的IP地址(公网使用,使用时需要关闭AUTO_MYSQL_IP) -# MYSQL_PORT为mysql的端口(公网使用,使用时需要关闭AUTO_MYSQL_IP) -# GAME_PASSWORD为game账户密码(密码必须8位 否则无法连接) -# AUTO_PUBLIC_IP为自动获取公网ip(小概率会失败,观察日志 get public ip 输出) -# PUBLIC_IP为公网IP地址,如果在局域网部署则用局域网IP地址,按实际需要替换 -# GM_ACCOUNT为登录器用户名,建议替换 -# GM_PASSWORD为登录器密码,建议替换 -docker run -d \ --e TZ=Asia/Shanghai \ --e AUTO_MYSQL_IP=true \ --e MYSQL_NAME=dnfmysql \ --e MYSQL_IP=192.168.1.2 \ --e MYSQL_PORT=3306 \ --e GAME_PASSWORD=uu5\!^%jg \ --e AUTO_PUBLIC_IP=false \ --e PUBLIC_IP=192.168.1.2 \ --e GM_ACCOUNT=gm_user \ --e GM_PASSWORD=123456 \ --v /dnf/dnfserver/log:/home/neople/game/log \ --v /dnf/dnfserver/data:/data \ --p 7600:7600/tcp \ --p 881:881/tcp \ --p 20303:20303/tcp -p 20303:20303/udp \ --p 20403:20403/tcp -p 20403:20403/udp \ --p 40403:40403/tcp -p 40403:40403/udp \ --p 7000:7000/tcp -p 7000:7000/udp \ --p 7001:7001/tcp -p 7001:7001/udp \ --p 7200:7200/tcp -p 7200:7200/udp \ --p 10011:10011/tcp -p 31100:31100/tcp \ --p 30303:30303/tcp -p 30303:30303/udp \ --p 30403:30403/tcp -p 30403:30403/udp \ --p 10052:10052/tcp \ --p 20011:20011/tcp \ --p 20203:20203/tcp \ --p 20203:20203/udp \ --p 30703:30703/udp \ --p 11011:11011/udp \ --p 2311-2313:2311-2313/udp \ --p 30503:30503/udp \ --p 11052:11052/udp \ ---cpus=1 --memory=1g --memory-swap=-1 --shm-size=8g \ ---name dnfserver \ ---network=dnf \ -xanderye/dnf-server:centos7 -``` - -### docker-compose启动 - -yml文件参考:[docker-compose.yml](docker-compose.yml) - -### 如何确认已经成功启动 - -1.查看日志 log -├── siroco11 -│ ├── Log20211203-09.history -│ ├── Log20211203.cri -│ ├── Log20211203.debug -│ ├── Log20211203.error -│ ├── Log20211203.init -│ ├── Log20211203.log -│ ├── Log20211203.money -│ └── Log20211203.snap -└── siroco52 -├── Log20211203-09.history -├── Log20211203.cri -├── Log20211203.debug -├── Log20211203.error -├── Log20211203.init -├── Log20211203.log -├── Log20211203.money -└── Log20211203.snap -查看Logxxxx.init文件,五国的初始化日志都在这里 -成功出现五国后,日志文件大概如下,五国初始化时间大概1分钟左右,请耐心等待 -[root@centos-02 siroco11]# tail -f Log20211203.init -[09:40:23] - RestrictBegin : 1 -[09:40:23] - DropRate : 0 -[09:40:23] Security Restrict End -[09:40:23] GeoIP Allow Country Code : CN -[09:40:23] GeoIP Allow Country Code : HK -[09:40:23] GeoIP Allow Country Code : KR -[09:40:23] GeoIP Allow Country Code : MO -[09:40:23] GeoIP Allow Country Code : TW -[09:40:32] [!] Connect To Guild Server ... -[09:40:32] [!] Connect To Monitor Server ... -2.查看进程 -在确保日志都正常的情况下,需要查看进程进一步确定程序正常启动 -[root@centos-02 siroco11]# ps -ef |grep df_game -root 16500 16039 9 20:39 ? 00:01:20 ./df_game_r siroco11 start -root 16502 16039 9 20:39 ? 00:01:22 ./df_game_r siroco52 start -root 22514 13398 0 20:53 pts/0 00:00:00 grep --color=auto df_game -如上结果df_game_r进程是存在的,代表成功.如果不成功可以重启服务 - -### 重启服务 - -该服务占有内存较大,极有可能被系统杀死,当进程被杀死时则需要重启服务 -重启服务命令 - -```shell -docker restart dnfserver -``` - -### 默认的网关信息 - -网关端口: 881 -通讯密钥: 763WXRBW3PFTC3IXPFWH -登录器版本: 20180307 -登录器端口: 7600 -GM账户: gm_user -GM密码: 123456 - -### 可选的环境变量 -当容器用最新的环境变量启动时,以下所有的环境变量,包括数据库root密码都会立即生效 -需要更新配置时只需要先停止服务 -```shell -docker stop dnfserver -docker rm dnfserver -``` -然后用最新的环境变量设置启动服务即可 -```shell -# 数据库IP地址 -MYSQL_IP -# 自动获取公网IP地址 -AUTO_PUBLIC_IP -# 公网或局域网IP地址 -PUBLIC_IP -# GM管理员账号 -GM_ACCOUNT -# GM管理员密码 -GM_PASSWORD -# GM连接KEY(自定以密钥请使用网关生成的密钥,因为密钥有格式限制,不符合格式的密钥会导致登录器一致卡在网关连接那里) -GM_CONNECT_KEY -# GM登录器版本 -GM_LANDER_VERSION -``` -Windows高版本用户无法进入频道,需要添加hosts -PUBLIC_IP(你的服务器IP) start.dnf.tw - -## 资源下载 - -### 客户端下载 -链接: https://pan.baidu.com/s/10RgXFtpEhvRUm-hA98Am4A 提取码: fybn -### 统一网关下载 -链接: https://pan.baidu.com/s/1w6_oGsOtNli11fNjug9f4Q 提取码: 5efm -### Dof7补丁下载 -链接: https://pan.baidu.com/s/1rxlGfkfHTeGwzMKUNAbSlQ 提取码: ier2 - - -## 问题排查文档 - -[【腾讯文档】docker部署DNF问题排查文档](https://docs.qq.com/doc/DUm5RbnVLU25OVkpa) - -## 沟通交流 - -QQ 群:852685848 -欢迎各路大神加入,一起完善项目,成就当年梦,800万勇士冲! - -## 申明 - - 虽然支持外网,但是千万别拿来开服。只能拿来学习使用!!! - 虽然支持外网,但是千万别拿来开服。只能拿来学习使用!!! - 虽然支持外网,但是千万别拿来开服。只能拿来学习使用!!! +# 地下城与勇士容器站库分离 + +## 说明 + +基于[1995chen/dnf](https://github.com/1995chen/dnf) + +感谢 xyz1001大佬提供`libhook.so`优化CPU占用 [源码](https://godbolt.org/z/EKsYGh5dv)
+集成了DP2插件 + +## 部署流程 + +### Centos6/7安装Docker + +先升级yum源 + +```shell +yum update -y +``` + +下载docker安装脚本 + +```shell +curl -fsSL https://get.docker.com -o get-docker.sh +``` + +运行安装docker的脚本 + +```shell +sudo sh get-docker.sh +``` + +启动docker + +```shell +systemctl enable docker +systemctl restart docker +``` + +关闭防火墙 + +```shell +systemctl disable firewalld +systemctl stop firewalld +``` + +关闭selinux + +```shell +sudo sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config +``` + +创建swap(如果内存足够可以直接忽略) + +```shell +/bin/dd if=/dev/zero of=/var/swap.1 bs=1M count=8000 +mkswap /var/swap.1 +swapon /var/swap.1 +sed -i '$a /var/swap.1 swap swap default 0 0' /etc/fstab +``` + +查看操作系统是否打开swap的使用(如果内存足够可以直接忽略) +sudo vim /etc/sysctl.conf +将vm.swappiness的值修改为100(优先使用swap),没有该配置就加上 +```shell +vm.swappiness = 100 +``` +https://www.cnblogs.com/EasonJim/p/7777904.html + +### 拉取镜像 + +```shell +dnf数据库mysql镜像 +docker pull xanderye/dnf-mysql:5.6 +dnf服务server镜像 +docker pull xanderye/dnf-server:centos7 +``` + +### 简单启动 + +```shell +# 创建一个dnf独立网桥,连通mysql和server两个容器 +docker network create dnf --subnet 172.20.0.0/16 + +# 使用mysql5.6(数据不通用) +# ALLOW_IP为game账户ip白名单(dnf服务的ip) +# GAME_PASSWORD为game账户密码(密码必须8位 否则无法连接) +# MYSQL_ROOT_PASSWORD为mysql root密码,仅初始化有效 +docker run -itd \ +-p 3306:3306 \ +-v /dnf/dnfmysql/mysql:/var/lib/mysql \ +-e TZ=Asia/Shanghai \ +-e ALLOW_IP=172.20.0.% \ +-e GAME_PASSWORD=uu5\!^%jg \ +# root账户密码 +-e MYSQL_ROOT_PASSWORD=88888888 \ +--name dnfmysql \ +--network=dnf \ +xanderye/dnf-mysql:5.6 + +# 查看日志 (首次启动需要等待几十秒,出现一大堆数据库配置列表才是启动完成) +docker logs dnfmysql + + +# 启动dnf服务 +# AUTO_MYSQL_IP为自动获取内网下mysql容器的ip +# MYSQL_NAME为内网下mysql容器名称(主机名) +# MYSQL_IP为mysql的IP地址(公网使用,使用时需要关闭AUTO_MYSQL_IP) +# MYSQL_PORT为mysql的端口(公网使用,使用时需要关闭AUTO_MYSQL_IP) +# GAME_PASSWORD为game账户密码(密码必须8位 否则无法连接) +# AUTO_PUBLIC_IP为自动获取公网ip(小概率会失败,观察日志 get public ip 输出) +# PUBLIC_IP为公网IP地址,如果在局域网部署则用局域网IP地址,按实际需要替换 +# GM_ACCOUNT为登录器用户名,建议替换 +# GM_PASSWORD为登录器密码,建议替换 +docker run -d \ +-e TZ=Asia/Shanghai \ +-e AUTO_MYSQL_IP=true \ +-e MYSQL_NAME=dnfmysql \ +-e MYSQL_IP=192.168.1.2 \ +-e MYSQL_PORT=3306 \ +-e GAME_PASSWORD=uu5\!^%jg \ +-e AUTO_PUBLIC_IP=false \ +-e PUBLIC_IP=192.168.1.2 \ +-e GM_ACCOUNT=gm_user \ +-e GM_PASSWORD=123456 \ +-v /dnf/dnfserver/log:/home/neople/game/log \ +-v /dnf/dnfserver/data:/data \ +-p 7600:7600/tcp \ +-p 881:881/tcp \ +-p 20303:20303/tcp -p 20303:20303/udp \ +-p 20403:20403/tcp -p 20403:20403/udp \ +-p 40403:40403/tcp -p 40403:40403/udp \ +-p 7000:7000/tcp -p 7000:7000/udp \ +-p 7001:7001/tcp -p 7001:7001/udp \ +-p 7200:7200/tcp -p 7200:7200/udp \ +-p 10011:10011/tcp -p 31100:31100/tcp \ +-p 30303:30303/tcp -p 30303:30303/udp \ +-p 30403:30403/tcp -p 30403:30403/udp \ +-p 10052:10052/tcp \ +-p 20011:20011/tcp \ +-p 20203:20203/tcp \ +-p 20203:20203/udp \ +-p 30703:30703/udp \ +-p 11011:11011/udp \ +-p 2311-2313:2311-2313/udp \ +-p 30503:30503/udp \ +-p 11052:11052/udp \ +--cpus=1 --memory=1g --memory-swap=-1 --shm-size=8g \ +--name dnfserver \ +--network=dnf \ +xanderye/dnf-server:centos7 +``` + +### docker-compose启动 + +yml文件参考:[docker-compose.yml](docker-compose.yml) + +### 如何确认已经成功启动 + +1.查看日志 log +├── siroco11 +│ ├── Log20211203-09.history +│ ├── Log20211203.cri +│ ├── Log20211203.debug +│ ├── Log20211203.error +│ ├── Log20211203.init +│ ├── Log20211203.log +│ ├── Log20211203.money +│ └── Log20211203.snap +└── siroco52 +├── Log20211203-09.history +├── Log20211203.cri +├── Log20211203.debug +├── Log20211203.error +├── Log20211203.init +├── Log20211203.log +├── Log20211203.money +└── Log20211203.snap +查看Logxxxx.init文件,五国的初始化日志都在这里 +成功出现五国后,日志文件大概如下,五国初始化时间大概1分钟左右,请耐心等待 +[root@centos-02 siroco11]# tail -f Log20211203.init +[09:40:23] - RestrictBegin : 1 +[09:40:23] - DropRate : 0 +[09:40:23] Security Restrict End +[09:40:23] GeoIP Allow Country Code : CN +[09:40:23] GeoIP Allow Country Code : HK +[09:40:23] GeoIP Allow Country Code : KR +[09:40:23] GeoIP Allow Country Code : MO +[09:40:23] GeoIP Allow Country Code : TW +[09:40:32] [!] Connect To Guild Server ... +[09:40:32] [!] Connect To Monitor Server ... +2.查看进程 +在确保日志都正常的情况下,需要查看进程进一步确定程序正常启动 +[root@centos-02 siroco11]# ps -ef |grep df_game +root 16500 16039 9 20:39 ? 00:01:20 ./df_game_r siroco11 start +root 16502 16039 9 20:39 ? 00:01:22 ./df_game_r siroco52 start +root 22514 13398 0 20:53 pts/0 00:00:00 grep --color=auto df_game +如上结果df_game_r进程是存在的,代表成功.如果不成功可以重启服务 + +### 重启服务 + +该服务占有内存较大,极有可能被系统杀死,当进程被杀死时则需要重启服务 +重启服务命令 + +```shell +docker restart dnfserver +``` + +### 默认的网关信息 + +网关端口: 881 +通讯密钥: 763WXRBW3PFTC3IXPFWH +登录器版本: 20180307 +登录器端口: 7600 +GM账户: gm_user +GM密码: 123456 + +### 可选的环境变量 +当容器用最新的环境变量启动时,以下所有的环境变量,包括数据库root密码都会立即生效 +需要更新配置时只需要先停止服务 +```shell +docker stop dnfserver +docker rm dnfserver +``` +然后用最新的环境变量设置启动服务即可 +```shell +# 数据库IP地址 +MYSQL_IP +# 自动获取公网IP地址 +AUTO_PUBLIC_IP +# 公网或局域网IP地址 +PUBLIC_IP +# GM管理员账号 +GM_ACCOUNT +# GM管理员密码 +GM_PASSWORD +# GM连接KEY(自定以密钥请使用网关生成的密钥,因为密钥有格式限制,不符合格式的密钥会导致登录器一致卡在网关连接那里) +GM_CONNECT_KEY +# GM登录器版本 +GM_LANDER_VERSION +``` +Windows高版本用户无法进入频道,需要添加hosts +PUBLIC_IP(你的服务器IP) start.dnf.tw + +## 资源下载 + +### 客户端下载 +链接: https://pan.baidu.com/s/10RgXFtpEhvRUm-hA98Am4A 提取码: fybn +### 统一网关下载 +链接: https://pan.baidu.com/s/1w6_oGsOtNli11fNjug9f4Q 提取码: 5efm +### Dof7补丁下载 +链接: https://pan.baidu.com/s/1rxlGfkfHTeGwzMKUNAbSlQ 提取码: ier2 + + +## 问题排查文档 + +[【腾讯文档】docker部署DNF问题排查文档](https://docs.qq.com/doc/DUm5RbnVLU25OVkpa) + +## 沟通交流 + +QQ 群:852685848 +欢迎各路大神加入,一起完善项目,成就当年梦,800万勇士冲! + +## 申明 + + 虽然支持外网,但是千万别拿来开服。只能拿来学习使用!!! + 虽然支持外网,但是千万别拿来开服。只能拿来学习使用!!! + 虽然支持外网,但是千万别拿来开服。只能拿来学习使用!!! diff --git a/dnf-server/Dockerfile b/dnf-server/Dockerfile index d0098e0..c63a6fa 100644 --- a/dnf-server/Dockerfile +++ b/dnf-server/Dockerfile @@ -1,33 +1,33 @@ -# Base Image -FROM xanderye/dnf-base:centos7-minimal - -MAINTAINER XanderYe - -# 定义默认环境变量 -ENV AUTO_MYSQL_IP=true -ENV MYSQL_NAME=dnfmysql -ENV MYSQL_IP=192.168.1.2 -ENV MYSQL_PORT=3306 -ENV GAME_PASSWORD=uu5!^%jg -ENV AUTO_PUBLIC_IP=false -ENV PUBLIC_IP=127.0.0.1 -ENV DP2=false -ENV GM_ACCOUNT=gm_user -ENV GM_PASSWORD=123456 -ENV GM_CONNECT_KEY=763WXRBW3PFTC3IXPFWH -ENV GM_LANDER_VERSION=20180307 - -# 将模板添加到模版目录下[后续容器启动需要先将环境变量替换,再将文件移动到正确位置] -ADD neople /home/template/neople -ADD root /home/template/root -ADD init /home/template/init -ADD dp2.tar.gz / -ADD TeaEncrypt / -# 启动脚本 -ADD docker-entrypoint.sh / - -RUN chmod -R 777 /tmp && mkdir /data && chmod +x /TeaEncrypt - -# 切换工作目录 -WORKDIR /root -CMD ["/bin/bash", "/docker-entrypoint.sh"] +# Base Image +FROM xanderye/dnf-base:centos7-minimal + +MAINTAINER XanderYe + +# 定义默认环境变量 +ENV AUTO_MYSQL_IP=true +ENV MYSQL_NAME=dnfmysql +ENV MYSQL_IP=192.168.1.2 +ENV MYSQL_PORT=3306 +ENV GAME_PASSWORD=uu5!^%jg +ENV AUTO_PUBLIC_IP=false +ENV PUBLIC_IP=127.0.0.1 +ENV DP2=false +ENV GM_ACCOUNT=gm_user +ENV GM_PASSWORD=123456 +ENV GM_CONNECT_KEY=763WXRBW3PFTC3IXPFWH +ENV GM_LANDER_VERSION=20180307 + +# 将模板添加到模版目录下[后续容器启动需要先将环境变量替换,再将文件移动到正确位置] +ADD neople /home/template/neople +ADD root /home/template/root +ADD init /home/template/init +ADD dp2.tar.gz / +ADD TeaEncrypt / +# 启动脚本 +ADD docker-entrypoint.sh / + +RUN chmod -R 777 /tmp && mkdir /data && chmod +x /TeaEncrypt + +# 切换工作目录 +WORKDIR /root +CMD ["/bin/bash", "/docker-entrypoint.sh"] diff --git a/dnf-server/README.md b/dnf-server/README.md index 7185429..73dd77c 100644 --- a/dnf-server/README.md +++ b/dnf-server/README.md @@ -1,39 +1,39 @@ -# dnf服务端 - -## 说明 - -1. 使用`libhook.so`优化了CPU占用,1-2分钟出五国,占用10%以内 -2. 集成了DP2插件,默认不开启,使用环境变量DP2开启。采用了加载器2方式(替换libGeoIP.so.1) -3. game密码限制必须8位,否则无法连接 -4. 由于无法更改dnf连接mysql的端口配置,使用了rinetd映射mysql的ip和端口,配置文件在 `/etc/rinetd.conf` -5. 修改环境变量重启即刻生效 - -## 启动 - -详见[docker-compose.yml](docker-compose.yml) - -## 环境变量 - -AUTO_MYSQL_IP: 和dnfmysql使用统一自定义网桥使用,支持自动获取mysql的ip - -MYSQL_NAME: dnfmysql容器名,用户自动获取mysql的ip - -MYSQL_IP: mysql的ip - -MYSQL_PORT: mysql的端口 - -GAME_PASSWORD: game账户密码,必须8位 - -AUTO_PUBLIC_IP: 自动获取公网ip - -PUBLIC_IP: 你的ip地址 - -DP2: dp2插件 - -GM_ACCOUNT: GM账户名 - -GM_PASSWORD: GM密码 - -GM_CONNECT_KEY: 网关KEY - +# dnf服务端 + +## 说明 + +1. 使用`libhook.so`优化了CPU占用,1-2分钟出五国,占用10%以内 +2. 集成了DP2插件,默认不开启,使用环境变量DP2开启。采用了加载器2方式(替换libGeoIP.so.1) +3. game密码限制必须8位,否则无法连接 +4. 由于无法更改dnf连接mysql的端口配置,使用了rinetd映射mysql的ip和端口,配置文件在 `/etc/rinetd.conf` +5. 修改环境变量重启即刻生效 + +## 启动 + +详见[docker-compose.yml](docker-compose.yml) + +## 环境变量 + +AUTO_MYSQL_IP: 和dnfmysql使用统一自定义网桥使用,支持自动获取mysql的ip + +MYSQL_NAME: dnfmysql容器名,用户自动获取mysql的ip + +MYSQL_IP: mysql的ip + +MYSQL_PORT: mysql的端口 + +GAME_PASSWORD: game账户密码,必须8位 + +AUTO_PUBLIC_IP: 自动获取公网ip + +PUBLIC_IP: 你的ip地址 + +DP2: dp2插件 + +GM_ACCOUNT: GM账户名 + +GM_PASSWORD: GM密码 + +GM_CONNECT_KEY: 网关KEY + GM_LANDER_VERSION: 网关版本 \ No newline at end of file diff --git a/dnf-server/docker-compose.yml b/dnf-server/docker-compose.yml index d1747cb..923b00c 100644 --- a/dnf-server/docker-compose.yml +++ b/dnf-server/docker-compose.yml @@ -1,70 +1,70 @@ -version: "2.3" - -services: - dnfserver: - image: xanderye/dnf-server:centos7 - environment: - - TZ=Asia/Shanghai - # 关闭自动获取 - - AUTO_MYSQL_IP=false - # mysql容器名称(主机名) - - MYSQL_NAME=dnfmysql - # mysql的IP地址 - - MYSQL_IP=192.168.1.2 - # mysql的IP端口 - - MYSQL_PORT=3306 - # game账户密码 - - GAME_PASSWORD=uu5!^%jg - # 自动获取公网ip - - AUTO_PUBLIC_IP=false - # 这里填写你的IP地址 - - PUBLIC_IP=127.0.0.1 - # DP2插件 - - DP2=false - - GM_ACCOUNT=gm_user - - GM_PASSWORD=123456 - - GM_CONNECT_KEY=763WXRBW3PFTC3IXPFWH - - GM_LANDER_VERSION=20180307 - shm_size: 8g - memswap_limit: -1 - mem_limit: 1g - # windows下生效 - cpu_count: 1 - # 占用1个cpu - cpus: 1.0 - network_mode: bridge - restart: unless-stopped - ports: - - 7600:7600/tcp # DnfGateServe 网关 - - 881:881/tcp # DnfGateServe 网关 - - 20303:20303/tcp # df_dbmw_r - - 20303:20303/udp # df_dbmw_r - - 20403:20403/tcp # df_dbmw_r - - 20403:20403/udp # df_dbmw_r - - 40403:40403/tcp # df_manager_r - - 40403:40403/udp # df_manager_r - - 7000:7000/tcp # df_bridge_r - - 7000:7000/udp # df_bridge_r - - 7001:7001/tcp # df_channel_r - - 7001:7001/udp # df_channel_r - - 7200:7200/tcp # df_relay_r - - 7200:7200/udp # df_relay_r - - 10011:10011/tcp # df_game_r - - 31100:31100/tcp # df_community - - 30303:30303/tcp # df_monitor_r - - 30303:30303/udp # df_monitor_r - - 30403:30403/tcp # df_guild_r - - 30403:30403/udp # df_guild_r - - 10052:10052/tcp # df_game_r - - 20011:20011/tcp # df_game_r - - 20203:20203/tcp # df_dbmw_r - - 20203:20203/udp # df_dbmw_r - - 30703:30703/udp # df_coserver_r - - 11011:11011/udp # df_game_r - - 2311-2313:2311-2313/udp # df_stun_r - - 30503:30503/udp # df_statics_r - - 11052:11052/udp # df_game_r - volumes: - - ./data:/data - - ./log:/home/neople/game/log +version: "2.3" + +services: + dnfserver: + image: xanderye/dnf-server:centos7 + environment: + - TZ=Asia/Shanghai + # 关闭自动获取 + - AUTO_MYSQL_IP=false + # mysql容器名称(主机名) + - MYSQL_NAME=dnfmysql + # mysql的IP地址 + - MYSQL_IP=192.168.1.2 + # mysql的IP端口 + - MYSQL_PORT=3306 + # game账户密码 + - GAME_PASSWORD=uu5!^%jg + # 自动获取公网ip + - AUTO_PUBLIC_IP=false + # 这里填写你的IP地址 + - PUBLIC_IP=127.0.0.1 + # DP2插件 + - DP2=false + - GM_ACCOUNT=gm_user + - GM_PASSWORD=123456 + - GM_CONNECT_KEY=763WXRBW3PFTC3IXPFWH + - GM_LANDER_VERSION=20180307 + shm_size: 8g + memswap_limit: -1 + mem_limit: 1g + # windows下生效 + cpu_count: 1 + # 占用1个cpu + cpus: 1.0 + network_mode: bridge + restart: unless-stopped + ports: + - 7600:7600/tcp # DnfGateServe 网关 + - 881:881/tcp # DnfGateServe 网关 + - 20303:20303/tcp # df_dbmw_r + - 20303:20303/udp # df_dbmw_r + - 20403:20403/tcp # df_dbmw_r + - 20403:20403/udp # df_dbmw_r + - 40403:40403/tcp # df_manager_r + - 40403:40403/udp # df_manager_r + - 7000:7000/tcp # df_bridge_r + - 7000:7000/udp # df_bridge_r + - 7001:7001/tcp # df_channel_r + - 7001:7001/udp # df_channel_r + - 7200:7200/tcp # df_relay_r + - 7200:7200/udp # df_relay_r + - 10011:10011/tcp # df_game_r + - 31100:31100/tcp # df_community + - 30303:30303/tcp # df_monitor_r + - 30303:30303/udp # df_monitor_r + - 30403:30403/tcp # df_guild_r + - 30403:30403/udp # df_guild_r + - 10052:10052/tcp # df_game_r + - 20011:20011/tcp # df_game_r + - 20203:20203/tcp # df_dbmw_r + - 20203:20203/udp # df_dbmw_r + - 30703:30703/udp # df_coserver_r + - 11011:11011/udp # df_game_r + - 2311-2313:2311-2313/udp # df_stun_r + - 30503:30503/udp # df_statics_r + - 11052:11052/udp # df_game_r + volumes: + - ./data:/data + - ./log:/home/neople/game/log container_name: dnfserver \ No newline at end of file diff --git a/dnf-server/init/df_game_r.lua b/dnf-server/init/df_game_r.lua index a3358a0..ce749d5 100644 --- a/dnf-server/init/df_game_r.lua +++ b/dnf-server/init/df_game_r.lua @@ -1,6 +1,6 @@ -local dp = _DP -local dpx = _DPX -local log = dp.log - -log.info("hello world!") --- talk is cheap, show me the code ! +local dp = _DP +local dpx = _DPX +local log = dp.log + +log.info("hello world!") +-- talk is cheap, show me the code ! diff --git a/docker-compose.yml b/docker-compose.yml index 28f8215..0105227 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,94 +1,94 @@ -version: "2.3" - -networks: - dnf: - ipam: - config: - - subnet: 172.20.0.0/16 - -services: - dnfmysql: - image: xanderye/dnf-mysql:5.6 - ports: - - 3000:3306 - environment: - - TZ=Asia/Shanghai - # game账户ip白名单 - - ALLOW_IP=172.20.0.% - # game账户密码 - - GAME_PASSWORD=uu5!^%jg - - MYSQL_ROOT_PASSWORD=88888888 - networks: - - dnf - restart: unless-stopped - volumes: - - ./dnfmysql/mysql:/var/lib/mysql - container_name: dnfmysql - dnfserver: - image: xanderye/dnf-server:centos7 - depends_on: - - dnfmysql - environment: - - TZ=Asia/Shanghai - # 自动获取mysql容器的ip - - AUTO_MYSQL_IP=true - # mysql容器名称(主机名) - - MYSQL_NAME=dnfmysql - # mysql的IP地址(使用时需要关闭AUTO_MYSQL_IP) - - MYSQL_IP=192.168.1.2 - # mysql的IP端口(使用时需要关闭AUTO_MYSQL_IP) - - MYSQL_PORT=3306 - # game账户密码 - - GAME_PASSWORD=uu5!^%jg - # 自动获取公网ip - - AUTO_PUBLIC_IP=false - # 这里填写你的IP地址 - - PUBLIC_IP=127.0.0.1 - - GM_ACCOUNT=gm_user - - GM_PASSWORD=123456 - - GM_CONNECT_KEY=763WXRBW3PFTC3IXPFWH - - GM_LANDER_VERSION=20180307 - shm_size: 8g - memswap_limit: -1 - mem_limit: 1g - # windows下生效 - cpu_count: 1 - # 占用1个cpu - cpus: 1.0 - networks: - - dnf - restart: unless-stopped - ports: - - 7600:7600/tcp # DnfGateServe 网关 - - 881:881/tcp # DnfGateServe 网关 - - 20303:20303/tcp # df_dbmw_r - - 20303:20303/udp # df_dbmw_r - - 20403:20403/tcp # df_dbmw_r - - 20403:20403/udp # df_dbmw_r - - 40403:40403/tcp # df_manager_r - - 40403:40403/udp # df_manager_r - - 7000:7000/tcp # df_bridge_r - - 7000:7000/udp # df_bridge_r - - 7001:7001/tcp # df_channel_r - - 7001:7001/udp # df_channel_r - - 7200:7200/tcp # df_relay_r - - 7200:7200/udp # df_relay_r - - 10011:10011/tcp # df_game_r - - 31100:31100/tcp # df_community - - 30303:30303/tcp # df_monitor_r - - 30303:30303/udp # df_monitor_r - - 30403:30403/tcp # df_guild_r - - 30403:30403/udp # df_guild_r - - 10052:10052/tcp # df_game_r - - 20011:20011/tcp # df_game_r - - 20203:20203/tcp # df_dbmw_r - - 20203:20203/udp # df_dbmw_r - - 30703:30703/udp # df_coserver_r - - 11011:11011/udp # df_game_r - - 2311-2313:2311-2313/udp # df_stun_r - - 30503:30503/udp # df_statics_r - - 11052:11052/udp # df_game_r - volumes: - - ./dnfserver/data:/data - - ./dnfserver/log:/home/neople/game/log - container_name: dnfserver +version: "2.3" + +networks: + dnf: + ipam: + config: + - subnet: 172.20.0.0/16 + +services: + dnfmysql: + image: xanderye/dnf-mysql:5.6 + ports: + - 3000:3306 + environment: + - TZ=Asia/Shanghai + # game账户ip白名单 + - ALLOW_IP=172.20.0.% + # game账户密码 + - GAME_PASSWORD=uu5!^%jg + - MYSQL_ROOT_PASSWORD=88888888 + networks: + - dnf + restart: unless-stopped + volumes: + - ./dnfmysql/mysql:/var/lib/mysql + container_name: dnfmysql + dnfserver: + image: xanderye/dnf-server:centos7 + depends_on: + - dnfmysql + environment: + - TZ=Asia/Shanghai + # 自动获取mysql容器的ip + - AUTO_MYSQL_IP=true + # mysql容器名称(主机名) + - MYSQL_NAME=dnfmysql + # mysql的IP地址(使用时需要关闭AUTO_MYSQL_IP) + - MYSQL_IP=192.168.1.2 + # mysql的IP端口(使用时需要关闭AUTO_MYSQL_IP) + - MYSQL_PORT=3306 + # game账户密码 + - GAME_PASSWORD=uu5!^%jg + # 自动获取公网ip + - AUTO_PUBLIC_IP=false + # 这里填写你的IP地址 + - PUBLIC_IP=127.0.0.1 + - GM_ACCOUNT=gm_user + - GM_PASSWORD=123456 + - GM_CONNECT_KEY=763WXRBW3PFTC3IXPFWH + - GM_LANDER_VERSION=20180307 + shm_size: 8g + memswap_limit: -1 + mem_limit: 1g + # windows下生效 + cpu_count: 1 + # 占用1个cpu + cpus: 1.0 + networks: + - dnf + restart: unless-stopped + ports: + - 7600:7600/tcp # DnfGateServe 网关 + - 881:881/tcp # DnfGateServe 网关 + - 20303:20303/tcp # df_dbmw_r + - 20303:20303/udp # df_dbmw_r + - 20403:20403/tcp # df_dbmw_r + - 20403:20403/udp # df_dbmw_r + - 40403:40403/tcp # df_manager_r + - 40403:40403/udp # df_manager_r + - 7000:7000/tcp # df_bridge_r + - 7000:7000/udp # df_bridge_r + - 7001:7001/tcp # df_channel_r + - 7001:7001/udp # df_channel_r + - 7200:7200/tcp # df_relay_r + - 7200:7200/udp # df_relay_r + - 10011:10011/tcp # df_game_r + - 31100:31100/tcp # df_community + - 30303:30303/tcp # df_monitor_r + - 30303:30303/udp # df_monitor_r + - 30403:30403/tcp # df_guild_r + - 30403:30403/udp # df_guild_r + - 10052:10052/tcp # df_game_r + - 20011:20011/tcp # df_game_r + - 20203:20203/tcp # df_dbmw_r + - 20203:20203/udp # df_dbmw_r + - 30703:30703/udp # df_coserver_r + - 11011:11011/udp # df_game_r + - 2311-2313:2311-2313/udp # df_stun_r + - 30503:30503/udp # df_statics_r + - 11052:11052/udp # df_game_r + volumes: + - ./dnfserver/data:/data + - ./dnfserver/log:/home/neople/game/log + container_name: dnfserver diff --git a/mysql56/README.md b/mysql56/README.md index fe6e77a..c4753ee 100644 --- a/mysql56/README.md +++ b/mysql56/README.md @@ -1,40 +1,40 @@ -# 基于官方mysql5.6的dnf数据库 - -## 说明 - -1. 与其他版本数据库互不兼容 -2. game密码限制必须8位,否则无法连接 -3. 首次运行会导入数据,大概需要几十秒,请耐心等待,使用`docker logs dnfmysql`查看日志出现出现一大堆数据库配置列表才是启动完成 -4. 只在首次启动执行初始化脚本,后续修改密码需要手动执行sql - -## 启动 - -详见[docker-compose.yml](docker-compose.yml) - -## 环境变量 - -ALLOW_IP: game账户白名单ip,建议使用docker内网网段如`172.20.0.%`;修改game密码后可开放`%` - -GAME_PASSWORD: game账户密码,必须8位 - -MYSQL_ROOT_PASSWORD: mysql root密码 - -## 修改root密码 - -连接数据库,执行sql -```sql -grant all privileges on *.* to 'root'@'%' identified by '新密码'; -flush privileges; -``` - -## 修改game密码 -1. 计算TEA密文 -`docker exec -it dnfmysql /TeaEncrypt 新密码`
-如果密码中带!,要转义 例如 `docker exec -it dnfmysql /TeaEncrypt uu5\!^%jg` -2. 连接数据库,执行sql -```sql -update user set Password = PASSWORD('新密码') where user = 'game'; -flush privileges; -# 更新48位密文 -update d_taiwan.db_connect set db_passwd='密文'; -``` +# 基于官方mysql5.6的dnf数据库 + +## 说明 + +1. 与其他版本数据库互不兼容 +2. game密码限制必须8位,否则无法连接 +3. 首次运行会导入数据,大概需要几十秒,请耐心等待,使用`docker logs dnfmysql`查看日志出现出现一大堆数据库配置列表才是启动完成 +4. 只在首次启动执行初始化脚本,后续修改密码需要手动执行sql + +## 启动 + +详见[docker-compose.yml](docker-compose.yml) + +## 环境变量 + +ALLOW_IP: game账户白名单ip,建议使用docker内网网段如`172.20.0.%`;修改game密码后可开放`%` + +GAME_PASSWORD: game账户密码,必须8位 + +MYSQL_ROOT_PASSWORD: mysql root密码 + +## 修改root密码 + +连接数据库,执行sql +```sql +grant all privileges on *.* to 'root'@'%' identified by '新密码'; +flush privileges; +``` + +## 修改game密码 +1. 计算TEA密文 +`docker exec -it dnfmysql /TeaEncrypt 新密码`
+如果密码中带!,要转义 例如 `docker exec -it dnfmysql /TeaEncrypt uu5\!^%jg` +2. 连接数据库,执行sql +```sql +update user set Password = PASSWORD('新密码') where user = 'game'; +flush privileges; +# 更新48位密文 +update d_taiwan.db_connect set db_passwd='密文'; +```