目录 一.准备环境 1.云服务器 2.登录服务器 3.安装需求 二.服务端运行 1.启动 2.服务端 3.自动脚本(记得改权限) 4.服务端优化方式 5.问题解决 一.准备环境 本文作者搭建环境:华为云HECS,linux,JAVA1
目录
本文作者搭建环境:华为云HECS,linux,JAVA18, Forge40.1.73
这篇教程不会深入讨论有关服务器的知识与技术,如有更高要求请参考其他大佬。
同时,服务器厂商有详细的说明文档。
这里使用Xshell和Xftp为例。XShell(www.xshell.com/zh/xshell)官网。下载安装后打开
点击新建
名称自取,主机为服务器公网IP地址,然后切换到“用户身份验证”,输入用户名及密码,用户名填"root"即可,其他不用修改(如果有ssl密钥则优先考虑使用,这里不做说明)。确定或连接即可。
这里使用常规的Screen方法即可。Screen是一款命令行终端切换软件,这里用于维持Minecraft Server的运行。
连接你的服务器之后应该出现如下画面
输入”yum install wget”会出现确认提示,按”y”键确认。有些服务器可能已经安装,则跳过
接下来输入
yum install screen
按”y”键确认。出现complete字样即可。
然后安装Java,输入
yum list java*
有些服务器可能不全,但是Minecraft1.18.2需要java17以上才能运行,这时候只能去官网下载oracle Java18(www.oracle.com/java/technologies/javase/jdk18-archive-downloads.html)
选择第三个Linux ×64压缩归档,用Xftp上传至服务器,可以先在本地解压后在上传, 这一步先不急,可以配置完再传。
或者在XShell上使用"tar -zxvf 文件名.tar.gz"解压。
Xftp设置方式与XShell差不多,而且可以相互呼出。
接下来,下载minecraft 1.18.2 server和Forge文件
Minecraft 1.18.2https://launcher.mojang.com/v1/objects/1c898afff0449eed08ad8036aaa4c652952035de/server.jar
ForgeHttp://files.minecraftforge.net/net/minecraftforge/forge/
Forge官网上如果卡在广告,那么在选择了合适的版本后,右键Installer复制连接在下载。
这里不讨论配置(比如server.properties),网上有太多文章了。
在本地新建文件夹用于存放MC服务器文件和Forge文件(在远程服务器上一样,个人习惯),然后运行server.jar,第一次安装过程应该必定失败,应为你要先同意eula,在server.jar同文件夹下会在第一次运行时生成eula.txt,用文本编辑器打开并修改为true.
PS:在一般情况下,你的电脑(或服务器)应该只安装了java18/java17。按win + r ,在输入cmd打开提示符窗口,输入"java -version"查看。如果没有显示你希望的版本,就需要在启动时选择运行Java的目录了。
在server.jar所在目录中右键(或自己cd进去。"cd d:"进入D盘;"cd mc/1.18.2"进入D:/mc/1.18.2;"cd ../"返回上一级),打开终端输入
java -jar server.jar
以运行(可以在此命令最后加 "空格nogui"以关闭图形界面),Forge安装完成时生成启动脚本,所以不需要自己写。
第二次运行一般就可以了,确认启动成功后在打开的CMD窗口输入"stop"来停止MC服务器,不要直接关闭,容易回档。运行Forge安装文件,在弹出的对话框中选择安装server版本。安装完成后即可安装mods。
本地连接(在本地电脑上运行的MC服务端)的话在MC客户端服务器地址输入:127.0.0.1:25565
将server.jar目录所有文件上传至服务器,将run.sh权限改成755,Xftp中右键菜单里有快捷工具。然后用XShell连接,依此输入:
cd server #假设文件在/root/server下screen -S server #创建名为server的screen sh ./run.sh
等待启动成功即可,客户端通过IP:25565连接。
关闭远程终端后再次连接时,Screen窗口默认不会直接显示,你需要输入
screen -r server
来恢复Minecraft控制台界面。
关闭服务端后想关闭此Screen可以在此Screen窗口中输入exit。
前面提到的yum命令搜不到合适的Java版本的同志,要把run.sh中的命令改成这样
/root/jdk-18.0.2.1/bin/java @user_JVM_args.txt @libraries/net/minecraftforge/forge/1.18.2-40.1.73/unix_args.txt "$@" nogui
也就是在前面加上Java的解压目录。
然后顺便解释一下,这个是Forge生成的的启动文件,@user_jvm_args.txt是我们加参数的地方,会生成在server.jar目录下,比如
-Xms1024M -Xmx2048M -XX:+UseG1GC -XX:-UseAdaptiveSizePolicy -XX:-OmitStackTraceInFastThrow -Dfml.ignoreInvalidMinecraftCertificates=True -Dfml.ignorePatchDiscrepancies=True -Dlog4j2.fORMatMsgNoLookups=true
-Xms1024M -Xmx2048M就是分配的Java虚拟机内存大小,我推荐最大最小内存一样,我这里是为了直观其实是服务器内存太小了,分配一样就会莫名其妙的崩溃
Tips:可以只添加 -Xms1024M -Xmx2048M 部分
通过crontab -e 命令来定时执行任务
自动备份 backup.sh (这里用到了zip压缩,部分服务器需要自行安装zip支持)
#定义日期datetime=`date+%Y%m%d%H%M`#确定screen ID#这段命令的意思是查找名称为"server"的screenscreen_id=`screen -ls | grep .server | awk '{print $1}' | cut -d "." -f 1`#在mc终端输入save-all保存screen -x -S ${screen_id} -p 0 -X stuff $"save-all"#这是回车screen -x -S ${screen_id} -p 0 -X stuff $'\n'sleep 5secho "Backing up Minecraft,please wait."#指向目录,复制服务端文件mkdir /root/backup/mc${datetime}/cp -r -f /root/server/* /root/backup/mc${datetime}/# Remove logsrm -rf /root/backup/mc${datetime}/logs#备份大小写入size.txtdu -sm /root/backup/mc${datetime}/ >> /root/size.txt#压缩文件zip -r -q /root/backup/mc${datetime}.zip /root/backup/mc${datetime}/#删除临时文件rm -rf /root/backup/mc${datetime}/#删除三天前的备份find /root/backup -mtime +2 -exec rm {} \;
自动启动 start.sh
#定义screen名称screen_name=$"server"screen -dmS $screen_name#启动指令,注意要新建一个auto_run.shcmd=$"sh /root/script/auto_run.sh" screen_id=`screen -ls | grep .server | awk '{print $1}' | cut -d "." -f 1` screen -x $screen_id -p 0 -X stuff "$cmd"screen -x $screen_id -p 0 -X stuff $'\n'
auto_run.sh
cd /root/serversh ./run.sh
自动关闭 shutdown.sh
datetime=`date +%Y%m%d%H%M` screen_id=`screen -ls | grep .server | awk '{print $1}' | cut -d "." -f 1`# 以下为自定义信息,可自行取舍。通过使用screen -x -S ${screen_id} -p 0 -X stuff $"xxx"可以自动化控制MC,即使用脚本发送MC指令。screen -x -S ${screen_id} -p 0 -X stuff $"say Server will shutdown in 10min."screen -x -S ${screen_id} -p 0 -X stuff $'\n'sleep 300sscreen -x -S ${screen_id} -p 0 -X stuff $"say Server will shutdown in 5min."screen -x -S ${screen_id} -p 0 -X stuff $'\n'sleep 240sscreen -x -S ${screen_id} -p 0 -X stuff $"say Server will shutdown in 1min,please saveand ready to exit."screen -x -S ${screen_id} -p 0 -X stuff $'\n'sleep 30sscreen -x -S ${screen_id} -p 0 -X stuff $"say Last 30 second,bye and see you nexttime!"screen -x -S ${screen_id} -p 0 -X stuff $'\n'sleep 20sscreen -x -S ${screen_id} -p 0 -X stuff $"say 10"screen -x -S ${screen_id} -p 0 -X stuff $'\n'sleep 1sscreen -x -S ${screen_id} -p 0 -X stuff $"say 9"screen -x -S ${screen_id} -p 0 -X stuff $'\n'sleep 1sscreen -x -S ${screen_id} -p 0 -X stuff $"say 8"screen -x -S ${screen_id} -p 0 -X stuff $'\n'sleep 1sscreen -x -S ${screen_id} -p 0 -X stuff $"say 7"screen -x -S ${screen_id} -p 0 -X stuff $'\n'sleep 1sscreen -x -S ${screen_id} -p 0 -X stuff $"say 6"screen -x -S ${screen_id} -p 0 -X stuff $'\n'sleep 1sscreen -x -S ${screen_id} -p 0 -X stuff $"say 5"screen -x -S ${screen_id} -p 0 -X stuff $'\n'sleep 1sscreen -x -S ${screen_id} -p 0 -X stuff $"say 4"screen -x -S ${screen_id} -p 0 -X stuff $'\n'sleep 1sscreen -x -S ${screen_id} -p 0 -X stuff $"say 3"screen -x -S ${screen_id} -p 0 -X stuff $'\n'sleep 1sscreen -x -S ${screen_id} -p 0 -X stuff $"say 2"screen -x -S ${screen_id} -p 0 -X stuff $'\n'sleep 1sscreen -x -S ${screen_id} -p 0 -X stuff $"say 1"screen -x -S ${screen_id} -p 0 -X stuff $'\n'sleep 1sscreen -x -S ${screen_id} -p 0 -X stuff $"say shutdown now"screen -x -S ${screen_id} -p 0 -X stuff $'\n'sleep 1s# 停止serverscreen -x -S ${screen_id} -p 0 -X stuff $"stop"screen -x -S ${screen_id} -p 0 -X stuff $'\n'# 备份echo "Backing up Minecraft,please wait."sleep 8smkdir /root/backup/mc${datetime}/cp -r -f /root/minecraft/server/* /root/backup/mc${datetime}# Remove logsrm -rf /root/backup/mc${datetime}/logsdu -sm /root/backup/mc${datetime}/ >> /root/size.txtzip -r -q /root/backup/mc${datetime}.zip /root/backup/mc${datetime}/rm -rf /root/backup/mc${datetime}/ # 关闭screenscreen -X -S ${screen_id} quit
自动删除日志 del.sh
#删除两天前的日志find /root/server/logs -mtime +1 -exec rm {} \;
用crontab -e定时,它使用Vim编辑
输入i或按Insert键切换至编辑模式,输入
30 06 * * * sh/root/script/start.sh
使得start.sh在6:30时运行。
crontab的其它细节可以查询linux定时任务。
编辑完成后,按Esc在按”:”冒号进入命令模式,输入wq以保存并退出,直接按q会提示未保存,按q!强制退出。
使用模组
Tips:有一些mod需要双端安装才能正常运作
使用参数
适用于Hotspot版Java 8 8u271、openj9、Zulu Jdk 17 (测试来自网友)
但是本文作者在测试时报错(Oracle JDK 18)
原文链接: 一个【效果明显】的Java 8优化JVM参数 - [MC]我的世界原版 (Minecraft) - MC百科|最大的Minecraft中文MOD百科 (mcmod.cn)
-d64 -XX:+AggressiveOpts -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:+CMSConcurrentMTEnabled -XX:ParallelGCThreads=8 -Dsun.rmi.dgc.server.gcInterval=3600000 -XX:+UnlockExperimentalVMOptions -XX:+ExplicitGCInvokesConcurrent -XX:MaxGCPauseMillis=50 -XX:+AlwaysPreTouch -XX:+UseStringDeduplication -Dfml.ignorePatchDiscrepancies=true -Dfml.ignoreInvalidMinecraftCertificates=true -XX:-OmitStackTraceInFastThrow -XX:+OptimizeStringConcat -XX:+UseAdaptiveGCBoundary -XX:NewRatio=3 -Dfml.readTimeout=90 -XX:+UseFastAccessorMethods
适用于Java8。
测试在Java18/Java17上使用时可以运行,但优化效果未知。
原文链接: Aikar: 调整JVM —— 非常有效的服务器启动参数 - 联机教程 - Minecraft(我的世界)中文论坛 - (mcbbs.net)
java -Xms6G -Xmx6G -XX:+UseG1GC -XX:+UnlockExperimentalVMOptions -XX:MaxGCPauseMillis=100 -XX:+DisableExplicitGC -XX:TargetSurvivorRatio=90 -XX:G1NewSizePercent=50 -XX:G1MaxNewSizePercent=80 -XX:G1MixedGCLiveThresholdPercent=35 -XX:+AlwaysPreTouch -XX:+ParallelRefProcEnabled -Dusing.aikars.flags=mcflags.emc.gs -jar paperclip.jar
Zip安装
登录root,在终端中输入
yum install zip
确认安装即可
推荐的模组
CurseForge加速
浏览器安装AdGuard之类的广告过滤器,在用户过滤器(即自定义过滤)中添加
apis.Google.com/js/platform.js$domain=minecraft.curseforge.com|www.curseforge.comfonts.googleapis.com/CSS?family=*$domain=minecraft.curseforge.com|www.curseforge.comtags.crwdcntrl.net/*.js$domain=minecraft.curseforge.com|www.curseforge.com
原文地址利用广告屏蔽插件 Adblock Plus 快速访问模组下载网站 CurseForge 网站 - Mod研讨 - Minecraft(我的世界)中文论坛 - (mcbbs.net)
以上,是我的开服经验分享。如有建议,还请各位在评论区补充。
来源地址:https://blog.csdn.net/weixin_71927437/article/details/128671556
--结束END--
本文标题: MC 1.18.2 FORGE 开服教程及自动备份
本文链接: https://lsjlt.com/news/400418.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
2024-10-22
2024-10-22
2024-10-22
2024-10-22
2024-10-22
2024-10-22
2024-10-22
2024-10-22
2024-10-22
2024-10-22
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0