云服务器架设DNF服务端

简介

文档为服务端部署,部署文件使用的是爱老牛86版本。搭建完成后需搭配客户端使用,修改DNF.toml和game.ini。

1.云服务器直接部署

社区文档如下:
https://www.ilaoniu.cn/docs/12

1.1 环境准备

操作系统选择centos7,将DNFServer.v3.tar.gz和mysql-5.0.95-linux-x86_64-glibc23.tar.gz上传到/root下面

1.2 安装支持库

yum -y install glibc.i686 xulrunner.i686 libXtst.i686 psmisc gcc gcc-c++ make zlib-devel

1.3 安装数据库

groupadd mysql
useradd -r -g mysql mysql
cp /root/mysql-5.0.95-linux-x86_64-glibc23.tar.gz /usr/local/mysql-5.0.95-linux-x86_64-glibc23.tar.gz
cd /usr/local
tar zxvf mysql-5.0.95-linux-x86_64-glibc23.tar.gz
rm -f mysql-5.0.95-linux-x86_64-glibc23.tar.gz
mv mysql-5.0.95-linux-x86_64-glibc23 mysql
cd mysql
chown -R mysql .
chgrp -R mysql .
scripts/mysql_install_db --user=mysql --defaults-file=/etc/my.cnf --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
chkconfig mysqld on
rm -rf /usr/local/mysql/data

1.4 解压服务端程序

cd /root/
tar -zxvf ./DNFServer.v3.tar.gz -C /

1.5 配置文件权限

chmod -R 777 /home
chmod -R 777 /root
chmod -R 777 /usr/local/mysql
chown -R mysql.mysql /usr/local/mysql

1.6 启动mysql

systemctl restart mysqld

1.7 编译GeoIP

cd /home/GeoIP-1.4.8/
./configure
make && make check && make install

1.8 替换公网IP

cd /home/dxf/
sed -i "s/192.168.200.131/公网IP/g" `find . -type f -name "*.tbl"`
sed -i "s/192.168.200.131/公网IP/g" `find . -type f -name "*.cfg"`

1.9 启动脚本

cd /root
./run

跑出五国即可

2.docker镜像构建部署

2.1 docker安装

centos7.6安装docker:

sudo yum install -y yum-utils device-mapper-persistent-data lvm2
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
sudo yum install docker-ce docker-ce-cli containerd.io
sudo systemctl enable docker

ubuntu22.04安装docker:

sudo apt update
sudo apt install docker.io

2.2 添加镜像源

vi /etc/docker/daemon.json
{
"registry-mirrors": ["https://mirror.ccs.tencentyun.com"]
}
service docker restart

2.3 构建准备

将DNFServer.v3.tar.gz和mysql-5.0.95-linux-x86_64-glibc23.tar.gz上传到/root下面
创建Dockerfile

# 使用 CentOS 7 作为基础镜像
FROM centos:7

# 安装依赖库并清理缓存
RUN yum -y install glibc.i686 xulrunner.i686 libXtst.i686 psmisc gcc gcc-c++ make zlib-devel net-tools && \
    yum clean all

# 复制 MySQL 和 DNFServer 文件
COPY mysql-5.0.95-linux-x86_64-glibc23.tar.gz DNFServer.v3.tar.gz /root/

# 配置 MySQL
RUN groupadd mysql && \
    useradd -r -g mysql mysql && \
    tar zxvf /root/mysql-5.0.95-linux-x86_64-glibc23.tar.gz -C /usr/local/ && \
    rm -f /root/mysql-5.0.95-linux-x86_64-glibc23.tar.gz && \
    mv /usr/local/mysql-5.0.95-linux-x86_64-glibc23 /usr/local/mysql && \
    chown -R mysql:mysql /usr/local/mysql && \
    touch /etc/my.cnf && \
    /usr/local/mysql/scripts/mysql_install_db --user=mysql --defaults-file=/etc/my.cnf --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data && \
    cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld && \
    chkconfig mysqld on && \
    rm -rf /usr/local/mysql/data

# 配置 DNFServer
RUN tar -zxvf /root/DNFServer.v3.tar.gz -C / && \
    rm -f /root/DNFServer.v3.tar.gz && \
    chmod -R 777 /home && \
    chmod -R 777 /usr/local/mysql

# 编译 GeoIP
RUN cd /home/GeoIP-1.4.8/ && \
    ./configure && \
    make && make check && make install

# 将初始化脚本复制到容器中并赋予执行权限
COPY entrypoint.sh /entrypoint.sh
RUN chmod +x /entrypoint.sh

# 设置工作目录为 /root
WORKDIR /root

# 使用 ENTRYPOINT 执行初始化脚本
ENTRYPOINT ["/entrypoint.sh"]

# 保持容器运行
CMD ["sh", "-c", "tail -f /dev/null"]

创建entrypoint.sh

#!/bin/bash

# 打印传入的所有参数
echo "传入的参数: $@"

# 设置默认值,如果没有提供 IP 地址
IP_ADDRESS=${IP_ADDRESS:-"192.168.200.131"}

echo "使用的 IP 地址: ${IP_ADDRESS}"

# 执行所需的 sed 命令
cd /home/dxf/
sed -i "s/192.168.200.131/${IP_ADDRESS}/g" $(find . -type f -name "*.tbl")
sed -i "s/192.168.200.131/${IP_ADDRESS}/g" $(find . -type f -name "*.cfg")

# 启动 MySQL
/usr/local/mysql/bin/mysqld_safe --user=mysql &

# 执行传入的命令
exec "$@"

2.4 开始构建

docker build -t wangliuking/dnf-server:版本号 .

2.5 启动容器

cpu和内存可根据实际情况进行调整

docker run -d -e IP_ADDRESS="公网IP" --cpus=2 --memory=8g --memory-swap=-1 --shm-size=10g --name=dnf-server \
-p 40401:40401/tcp \
-p 20018:20018/tcp \
-p 20403:20403/tcp \
-p 7000:7000/tcp \
-p 7001:7001/tcp \
-p 10011:10011/tcp \
-p 31100:31100/tcp \
-p 30303:30303/tcp \
-p 7200:7200/tcp \
-p 30403:30403/tcp \
-p 3306:3306/tcp \
-p 20203:20203/tcp \
-p 20303:20303/tcp \
-p 2311-2313:2311-2313/udp \
-p 11011:11011/udp \
-p 20203:20203/udp \
-p 20303:20303/udp \
-p 20403:20403/udp \
-p 5005:5005/udp \
-p 30303:30303/udp \
-p 30403:30403/udp \
-p 30503:30503/udp \
-p 30701-30709:30701-30709/udp \
-p 30798:30798/udp \
-p 7000:7000/udp \
-p 7001:7001/udp \
-p 7200:7200/udp \
-p 40401:40401/udp \
wangliuking/dnf-server:版本号

2.6 启动容器脚本

docker exec -it 容器ID /bin/bash
./run

跑出五国即可

3.docker镜像仓库直接构建

根据版本号直接使用2.5启动容器命令进行启动,接着启动容器脚本
端口映射参考容器启动参数里面的信息


云服务器架设DNF服务端
http://example.com/2024/01/30/cloudgame-dnf/
作者
WLK
发布于
2024年1月30日
许可协议