我的世界服务器部署,配置Web监控并在Web页面实现一键启动。

服务端最低配置要求:2U4G 带宽5M

操作环境Centos7.6

以上配置是经过调校测试得出的,能够支撑服务器初期运行,预计可提供2-8名玩家同时在线。

玩家人数虽服务器的运行时间而逐渐变小,根据观察,游戏地图是根据种子文件即时运算生成的,所以游戏将会越来越大,而且由于物体变多,带宽占用也会越来越高。


部署我的世界服务端:

下载服务器包:https://mcversions.net/

下载站点2:https://papermc.io/downloads

建议在服务器创建目录/mcsr,将服务器包放入目录。

配置文件生成:server.properties

允许盗版需要修改:online-mode=false

配置文件说明参考:

https://aibofan.com/minecraft-server-side-directory-structure-configuration-file-description-and-common-instructions/

中文游戏手册中也有说明:

https://minecraft-zh.gamepedia.com/Minecraft_Wiki


使用如下命令可启动服务器:(此命令按照4G内存修改,不同的服务器性能需要进行相应的修改!)

java -Xms512M -Xmx3500M -XX:+UseG1GC -server -XX:+UseFastAccessorMethods -XX:+OptimizeStringConcat -XX:+AggressiveOpts -XX:MaxGCPauseMillis=10 -XX:+UseStringDeduplication -XX:+UseCompressedOops -jar server.jar -nogui

初次启动需要root权限,且需要同意一个协议,按提示操作即可。


性能较低的服务器会时不时发生崩溃,建议在同级目录编写脚本:

#!/bin/bash
while :
do
java -Xms512M -Xmx3500M -XX:+UseG1GC -server -XX:+UseFastAccessorMethods -XX:+OptimizeStringConcat -XX:+AggressiveOpts -XX:MaxGCPauseMillis=10 -XX:+UseStringDeduplication -XX:+UseCompressedOops -jar server.jar -nogui
sleep 10
done

启动方式:

cd /mcsr
nohup ./start.sh > ./log.txt &

日志将会输出至当前目录下的log.txt,滚动查看使用tail命令。


部署前台监控页面:

效果图:

image.png

安装Nginx用作前台显示。

Nginx安装参考:https://teddyou.com/?id=76 (做到编译安装完成即可)

或使用Apache的HTTP也行,但是本文不做演示。


进入html目录/usr/local/nginx/html/

编写监控输出脚本:

#!/bin/bash
cd /usr/local/nginx/html/
#运行状态判断
#if [ `ss -nutlp|grep :25565|wc -l` -eq 1 ] ;then
#echo '正常'
#else
#echo '异常'
#fi

#带宽统计
RX=$(expr `ifconfig eth0 |grep "RX packets"|awk '{print $5}'` - `cat /usr/local/nginx/html/rx.txt`)
TX=$(expr `ifconfig eth0 |grep "TX packets"|awk '{print $5}'` - `cat /usr/local/nginx/html/tx.txt`)
echo `ifconfig eth0 |grep "RX packets"|awk '{print $5}'` > /usr/local/nginx/html/rx.txt
echo `ifconfig eth0 |grep "TX packets"|awk '{print $5}'` > /usr/local/nginx/html/tx.txt

#写入index.hl
echo "<br><b>我的世界服务器状态</b>">/usr/local/nginx/html/index.html
echo "<br>刷新时间:`date`">>/usr/local/nginx/html/index.html
echo "<br>连接数:`netstat -anp | grep ESTABLISHED |grep 172.30.0.9:25565|wc -l`">>/usr/local/nginx/html/index.html
echo "<br>当前连接IP:`netstat -anp | grep ESTABLISHED |grep 172.30.0.9:25565|awk '{print $5}'|awk -F: '{print $1}'`">>/usr/local/nginx/html/index.html
echo "<br>CPU负载情况:`uptime|awk '{print $8,$9,$10,$11,$12}'`(大于1.6则可能出现问题)">>/usr/local/nginx/html/index.html
echo "<br>内存total:`free -m|grep Mem|awk '{print $2}'`">>/usr/local/nginx/html/index.html
echo "<br>内存used:`free -m|grep Mem|awk '{print $3}'`">>/usr/local/nginx/html/index.html
echo "<br>内存free:`free -m|grep Mem|awk '{print $4}'`">>/usr/local/nginx/html/index.html
echo "<br>内存buff/cache:`free -m|grep Mem|awk '{print $6}'`">>/usr/local/nginx/html/index.html
echo "<br>内存available:`free -m|grep Mem|awk '{print $7}'`">>/usr/local/nginx/html/index.html
#echo "<br>服务器程序状态:$(if [ `ss -nutlp|grep :25565|wc -l` -eq 1 ] ;then echo '正常'; else echo '异常';fi)">>/usr/local/nginx/html/index.html
#echo "<br>RX流量:`expr $RX / 1024 / 60`KB/S">>/usr/local/nginx/html/index.html
#echo "<br>TX流量:`expr $TX / 1024 / 60`KB/S">>/usr/local/nginx/html/index.html
echo "<br>此页面每分钟刷新一次<meta http-equiv="refresh" content="60">">>/usr/local/nginx/html/index.html
echo "<br><br><b><a href="http://139.186.4.14:8088/cgi-bin/kill_mc.sh">重启后台程序</a>(请不要反复重启,点击后请等待三分钟,页面提示错误为正常情况)</b>">>/usr/local/nginx/html/index.html
#echo "<br> ">>/usr/local/nginx/html/index.html
#scp /usr/local/nginx/html/index.html [email protected]:/usr/local/nginx/html/mc/zc.txt

此脚本主要是将内容输出给index.html,以方便查看。

启动Nginx

/usr/local/nginx/sbin/nginx

访问Web已经能看到相关内容的输出。


制作Web页面重启游戏程序链接:

需求场景:由于低性能服务器经常会出现问题,比如内存占满,CPU负载升高等情况,所以需要重启程序,以降低功耗;另一方面是由于运维人员少,无法及时处理等,所以需要一个傻瓜式重启方法。而这个需要CGI来实现前端到后台的交互。

参考文档:https://blog.csdn.net/weixin_30496751/article/details/99595366

安装httpd:

yum install -y httpd

修改配置:

vim /etc/httpd/conf/httpd.conf

添加内容:

LoadModule cgi_module /usr/lib64/httpd/modules/mod_cgi.so
LoadModule cgid_module /usr/lib64/httpd/modules/mod_cgid.so

修改内容:(注意路径)

<Directory "/var/www/cgi-bin">
    AllowOverride None
    Options ExecCGI
    Order deny,allow
    Allow from all
</Directory>

取消注释:

    AddType text/html .shtml
    AddOutputFilter INCLUDES .shtml
    AddHandler cgi-script .cgi .sh         //在其后添加.sh,使其支持此结尾的脚本

修改默认端口,防止与Nginx冲突:

Listen 8088

启动httpd

systemctl start httpd



在CGI目录下编写脚本:

[root@cq html]# cd /var/www/cgi-bin/
[root@cq cgi-bin]# ll
total 8
-rwxrwxrwx 1 root root 69 Sep  7 12:41 kill_mc.sh
[root@cq cgi-bin]# cat kill_mc.sh 
#!/bin/bash
kill -9 `ps -ef|grep java|grep -v grep|awk '{print $2}'`

注意要赋予777权限,或者修改用户以及用户组为apache并且添加x权限。因为是apache用户在执行操作。此脚本需要结合之前编写的循环启动脚本。

由于权限问题,之前循环启动脚本是root用户启动,导致apache用户无法启动,所以需要以apache身份启动mc程序:

[root@cq ~]# su apache
[apache@cq root]$ cd /mcsr/
[apache@cq mcsr]$ nohup ./start.sh > /log.txt &

若无法启动请注意当前目录的权限是否正确。

已有1位网友发表了看法:

1L访客 2022-09-14 15:32:20 回复
您好博主,我刚刚将我博客的链接从拼音改为了英文,所以文中的:
配置文件说明参考所附的链接:
https://aibofan.com/minecraft-fu-wu-duan-mu-lu-jie-gou-pei-zhi-wen-jian-shuo/
已经改为了:
https://aibofan.com/minecraft-server-side-directory-structure-configuration-file-description-and-common-instructions/
从博客的反向链接中发现了您在您的博客附上了我站点的地址,万分感谢您对我博客内容的引用。
不知申请一个友链是否可以,为表诚意小站已经将贵站链接添加至页面上了。

发表评论

必填

选填

选填

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。