MCSM搭建MC Forge服务器

经验分享
505 0

前几天在别人的服务器玩MC,本来挺开心的,但是连续两次意外导致我还是放弃了在别人服务器玩耍的意愿。

一次是我养的鸡突然被其他人使用命令传送到一起还被杀了,另外一次是我模组的装备快成型了,服务器突然崩了,然后模组就全部被删了。连续两次的不稳定运行导致我十分难受,但是刚好,一年前我搭建的服务器还在运行,于是我就动起了歪心思。

由于已经有将近一年时间没玩,并且MC也发布了新版,所以我打算将底层版本升级到MC1.20.1,并且把我认为好玩的模组放进去。

步骤

这次打算将服务器放在家里的路由器兼服务器上,顺便加了一根16G的内存条,用于保证MC和其他服务的正常运行。因为之前服务器是放在腾讯的服务器上的,所以这次也算是全新的环境安装了(备份迁移的步骤顺便也记录一下)。

一、备份旧数据

首先就是停服,然后备份/opt/mcsmanager/daemon/data/InstanceData下面的实例文件夹并下载到本地服务器上(不得不说,小水管的服务器下载是真的慢,可以考虑转存到对应地区的COS上,在下载,这样是慢速的,当然会有一定的付费),以40a1f43057914c1c8f069b17f356af24文件夹为例。

tar -czvf 40a1f43057914c1c8f069b17f356af24.tar.gz 40a1f43057914c1c8f069b17f356af24/
首先要确实是否使用的是MCSM默认的文件夹,如果之前开服的时候有改动,需要备份对应的文件夹。

二、MCSM环境创建

使用官方的一键脚本即可。

wget -qO- https://gitee.com/mcsmanager/script/raw/master/setup_cn.sh | bash

# 先启动面板守护进程。
# 这是用于进程控制,终端管理的服务进程。
systemctl start mcsm-daemon.service
# 再启动面板 Web 服务。
# 这是用来实现支持网页访问和用户管理的服务。
systemctl start mcsm-web.service 

# 重启面板命令
systemctl restart mcsm-daemon.service
systemctl restart mcsm-web.service

# 停止面板命令
systemctl stop mcsm-web.service
systemctl stop mcsm-daemon.service

三、JAVA环境安装

我这边直接采用的是asdf来管理各种环境的版本,如果没有安装可以先按照github的教程安装asdf

git clone https://github.com/asdf-vm/asdf.git ~/.asdf --branch v0.12.0

# 将环境变量添加到/etc/profile最后一行
. "$HOME/.asdf/completions/asdf.bash"

然后安装java,我这里选择的是oracle的版本。

asdf plugin-add java

asdf list all java

asdf install java oracle-18.0.2.1

asdf global java oracle-18.0.2.1

java --version

四、下载对应的Forge安装包和需要的mod

点击下载链接,下载想要的版本。

在MCSM中创建实例,启动命令填写/root/.asdf/installs/java/oracle-18.0.2.1/bin/java -server -Dfile.encoding=UTF-8 -Duser.language=zh -Duser.country=CN -jar ${ProgramName} --installServer.

这里一定要注意java的地址要选择实际的java文件的地址,如果只填写java或者whereis java中的地址,会出现java版本找不到的问题。

第一次启动会进行安装服务器,可能需要“较好的网络环境”,安装完之后会自动停止。然后在文件管理中编辑run.sh为对应的启动命令。

/root/.asdf/installs/java/oracle-18.0.2.1/bin/java @user_jvm_args.txt -server -Dfile.encoding=UTF-8 -Duser.language=zh -Duser.country=CN @libraries/net/minecraftforge/forge/1.20.1-47.1.0/unix_args.txt "$@"

并且把MCSM实例中的启动脚本更改为bash run.sh,再把对应的mod文件放到对应的文件夹,就可以启动实例了。这里因为我是服务器升级,地图文件还是想保留,所以还需要将对应的地图文件进行替换掉,这里就不详细赘述了。

最后说两句

一开始我以为最大的难点是地图兼容性,和forge安装的问题,没想到问题出现在了java找不到的问题上,由于我是用的是asdf来控制java版本,而mcsm选择使用了虚拟环境来运行MC服务器,这导致asdfglobal并没有生效,这里我还没研究清楚global的机制,所以只能去寻找java的实际地址,然后被whereis java的那两个地址欺骗了很久,最后,在看了实际的文件夹结果之后,我才找到了现在的实际地址。

相关链接

最后更新 2023-07-30
评论 ( 0 )
OωO
隐私评论