CentOS安装Grasscutter使用指北

CentOS安装Grasscutter使用指北

一、简介

Grasscutter是基于Java的某动画游戏的第三方服务端。

——by Grasscutters官方

得益于Java在各个平台的广泛兼容性,我们也可以在CentOS中搭建一个成型的服务器,但无论官方还是民间,基本上没有CentOS的相关教程,且CentOS在搭建过程中会比较复杂,这也就是我写下这份文档的初心。

二、所需环境

系统:CentOS 8

其他环境:

JDK 17+;

Python 3.8+;

MongoDB;

Mitmproxy

三、部署环境

3.1 安装JDK17

首先检查系统内有无JDK

java -version

若无,正常安装

sudo yum -y install java-17-openjdk.x86_64

检查是否安装成功

java -version

3.2 安装Python3.9

CentOS默认装载Python3.6,版本过低,所以需要更新版本

sudo yum -y install python39.x86_64

检查是否安装成功

python3.9
exit()

接下来更新环境变量

cd /usr/bin
sudo ln -s /usr/bin/python3.9 /usr/bin/python
sudo ln -s /usr/bin/pip-3.9 /usr/bin/pip

检查是否修改成功

python
exit()
pip -V

3.3 安装MongoDB

MongoDB原生安装较为复杂且不便操作,这里使用docker进行安装

1.安装docker

curl -sSL https://get.daocloud.io/docker | sh

确认是否安装成功

docker -v

2.安装MongoDB

docker pull mongo:latest

3.启动MongoDB

sudo docker run -itd --name mongodb -v /home/mongodata:/data/db -p 27017:27017 mongo --auth

4.设置密码,建立安全措施

# 进入MongoDB命令行
docker exec -it mongodb mongo admin
# 创建一个名为 admin,密码为 123456 的用户。(真实搭建时请使用复杂的用户名和密码)
db.createUser({ user:'admin',pwd:'123456',roles:[ { role:'userAdminAnyDatabase', db: 'admin'},"readWriteAnyDatabase"]});
# 尝试使用上面创建的用户信息进行连接。
db.auth('admin', '123456')
# 退出命令行
exit

3.4 安装mitmproxy

1.安装

为安装方便,这里使用pip进行安装

pip install pipx
pipx ensurepath
pipx install mitmproxy

这之后需要重启一次终端。

2.保存证书

进入/home/用户名/.mitmproxy(root用户则为/root/.mitmproxy)目录,将里面的mitmproxy-ca-cert.p12文件保存至本机,备用,后续连接grasscutter的每一台主机均需要安装该证书。

四、安装Grasscutter

首先,cd一个比较适合保存文件的目录。

接下来,上传服务端zip(下文默认名称为grasscutter.zip)到CentOS服务器,

之后,输入以下指令

sudo yum install git wget zip
unzip grasscutter.zip
cd grasscutter

首次启动并关闭游戏服务器,生成配置文件

sudo java -jar grasscutter.jar
stop

编辑配置文件

vi config.json

按insert键进入输入模式,上下左右键移动光标,完成以下两件事:

1.将配置文件中所有127.0.0.1改成自己服务器的ip

2.将mongodb://localhost:27017替换为mongodb://数据库用户名:密码@localhost:27017

按Esc,输入:wq保存并退出(注意那个冒号)

编辑流量代理配置

vi proxy_config.bat

REMOTE_HOST后面的地址改为服务器ip,按键操作方法同上

五、启动服务端

启动游戏服务器

sudo java -jar grasscutter.jar

启动流量代理

mitmdump -s proxy.py --ssl-insecure --set block_global=false --listen-port 54321

开始play!

六、数据库自动备份

找一个合适的地方(这里用/home/1254qwer举例)新建文件backup.sh

cd /home/1254qwer
vi backup.sh
# vi用法参考上文,这里不赘述

文件内容如下

#!/bin/sh
MONGODB_CONTAINER_NAME=mongodb
DUMP="sudo docker exec -it ${MONGODB_CONTAINER_NAME} "
OUT_DIR=/data/db/backup
TAR_DIR=/data/db/backup
DATE=`date +%Y%m%d%H%M`
# 数据库账号,自行修改,此处仅举例
DB_USER=admin
# 数据库密码,自行修改,此处仅举例
DB_PASS=123456
DB_NAME_ARR=("grasscutter") 

for DBNAME in ${DB_NAME_ARR[@]}
do
    $DUMP rm -rf $OUT_DIR/*
    FILE_NAME="${DBNAME}_${DATE}"
    TARGET_DIR="$OUT_DIR/$FILE_NAME"
    $DUMP mkdir -p $TARGET_DIR
    TARGZ_FILE="${FILE_NAME}.zip"
    TARGET_FILE="$TAR_DIR/$TARGZ_FILE"
    $DUMP mongodump -h 127.0.0.1:27017 --authenticationDatabase admin -u "$DB_USER" -p "$DB_PASS" -d $DBNAME -o $TARGET_DIR
    flag=`echo $?`
    if [ $flag == "0" ];then
            echo "database $DBNAME success backup to $TARGET_DIR"
    else
            echo "database $DBNAME backup fail!"
    fi
    cd /home/mongodata/backup/zip
    zip -r $FILE_NAME.zip /home/mongodata/backup/$FILE_NAME/$DBNAME
done

添加每日自动执行和自启动

chmod +x backup.sh
crontab -e
# 接下来在这里加入下面一行,操作和vi一致
30 1 * * * root /home/1254qwer/backup.sh #表示每天凌晨1点30执行备份
# 上文保存后继续执行以下命令
/sbin/service crond reload #重新载入配置
chkconfig --level 35 crond on  #加入开机自动启动:
/sbin/service crond start   #启动服务
crontab -l #列出crontab文件

接下来可以在/home/mongodata/backup/zip中找到每日备份文件

你可能感兴趣的:(centos,mongodb,docker)