开服
在ubuntu上启动一个所有人可进的游戏java版mc服务器
- 自行安装jdk
ubuntu安装java很简单:
1 | sudo apt-get install openjdk-14-jdk |
多个java同时存在,切换当前的java环境:
1 | jxl@jxl-Inspiron-5580:~/下载$ sudo update-alternatives --config java |
如果是windows,到各种镜像站找到jdk或openjdk的.exe安装包,一路确认;或者直接复制别人Program Files/java/下的对应版本的java文件夹到自己电脑这边。在脚本里直接指定java.exe所在的绝对路径就可以轻松区别java版本。
初次运行
-Xms后面是最小的内存,-Xmx 是最大的内存,这里大家可以根据自己的服务器配置而定。1
java -Xms1G -Xmx1G -jar server.jar nogui
上一次运行后会生成eula.txt,修改它,即同意条款
1
vim eula.txt
再次运行
1
java -jar -Xms512M -Xmx2048M server.jar nogui
上一次运行后会生成server.properties等文件
把server.properties中的正版验证online-mode修改为false,这样非正版玩家都可以进入了。加装forge(可选)
forge是加装在原版上的一个接口,用户连接原版服务器(或客户端)和mods。官网有两种forge提供:低版本的mc可以下载universal版本的forge,所有版本都有installer版的forge。理论上来说,在ubuntu上运行installer之后会生成universal版本的forge。如果有现成的universal版本,肯定先试一下。但是一般来说没有。
所以,在ubuntu上运行forge installer
将forge文件放入server.jar同目录。然后1
java -jar forge-1.12.2-14.23.4.2705-installer.jar -nogui -serverInstall
等待一段时间后将产生的forge-1.12.2-14.23.4.2705-universal.jar当作纯净版的server.jar一样重新启动配置一遍即可。
在本机上执行完installer将产生的所有文件整体xftp传到ubuntu
然后将forge-1.16.5-36.2.30.jar当成之前纯净版的server.jar即可。
假如你已经在windows、ubuntu中用诸如裸开、cloudron、docker成功跑起了服务器。这里整理一些维护常识。
防崩溃
编写简单循环的脚本(start.sh),使服务器崩溃后能自动重启
1
2
3
4
5
6
7ubuntu@VM-16-2-ubuntu:~/mcf16.5$ cat start.sh
#!/bin/sh
while true
do
#此处填写启动mc服务器的命令
java -server -XX:-UseVMInterruptibleIO -XX:NewRatio=3 -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:+CMSIncrementalPacing -XX:ParallelGCThreads=4 -XX:+AggressiveOpts -XX:+UseFastAccessorMethods -XX:+UseBiasedLocking -XX:+CMSParallelRemarkEnabled -XX:MaxGCPauseMillis=50 -XX:+UseAdaptiveGCBoundary -XX:-UseGCOverheadLimit -XX:SurvivorRatio=8 -XX:TargetSurvivorRatio=90 -XX:MaxTenuringThreshold=15 -XX:+DisableExplicitGC -Xnoclassgc -oss4M -ss4M -XX:CMSInitiatingOccupancyFraction=60 -XX:SoftRefLRUPolicyMSPerMB=2048 -Xms512M -Xmx2048M -jar forge-1.16.5-36.2.30.jar nogui
donewindows上循环脚本的写法(假如是在windows上开服的话)
1 | :loop |
防ssh中断后终端被杀
- 先用screen开启一个分屏
1
screen -S mcf
- 然后在该分屏启动服务器运行后可以直接在后台指令区和服务器进行交互。也可以给自己管理员权限方便在游戏中直接控制。
1
java -jar -Xms512M -Xmx2048M server.jar nogui
如果想返回ubuntu自己的指令行,就按ctrl+A+D回去。
想要重新进入这个screen进程回到mc运行的那个指令行,就打开ssh输入如果想要删除这个screen会话,就输入1
screen -r mcf
1
screen -S mcf -X quit
常用指令
在ubuntu终端(mc的服务器端)不需要斜杠。在客户端需要。
1 | /stop 停止游戏 |
服务器后台遇到的一个问题
ServerHangWatchdog detected that a single server tick took 60.00 seconds (should be max 0.05),导致服务器停止运行了
这是我落后的腾讯云跟不上mc服务器先进的看门狗计时自我要求了!
修改server.properties文件内的
1 | max-tick-time=60 |
60改成-1,-1表示:哪怕延迟再多,看门狗都不会切断服务器了。
优化
server.properties文件修改
entity-broadcast-range-percentage 实体游戏渲染距离(10~1000)
设置小一点
Description: Exception in server tick loop tick的最大加载毫秒数(超过这个时间将判定服务器崩溃)
设为-1。假如你设为某个不是-1的值,比方说256,那么服务器跟不上玩家的时间超出256跳之后就会崩溃。
max-world-size 世界大小
改小,反正跑不了那么多图
network-compression-threshold 数据包多大时开始压缩传输
这个值设置得小会让CPU负担大一点,设置得大会让网卡(跟服务器带宽有关)负担大一点。
所以这个值,看你的机器性能瓶颈在哪。查看你的CPU和带宽的使用情况,通过调节这个值让两边的负载尽量均衡,而不要让某一个累死另外一个轻松死。
view-distance视距
调小一点