MCSManager
MCSManager 面板(简称:MCSM 面板)是一款全中文,开源,分布式,开箱即用,支持 Minecraft 游戏服务端和所有控制台程序的管理面板。
Linux 安装
一行命令快速安装(适用于AMD64架构 Ubuntu/Centos/Debian/Archlinux)
wget -qO- https://gitee.com/mcsmanager/script/raw/master/setup_cn.sh | bash
- 该脚本专为 AMD64 架构的 Ubuntu/Centos/Debian/Archlinux 设计。
- 用于在安装后启动服务。
systemctl start mcsm-{web,daemon}
- 面板组件和运行时的目录:
/opt/mcsmanager/
启动面板
使用一键安装脚本后,才可以使用下列命令,如果是手动安装,则需要使用screen命令,在后面会进行说明。
# 先启动面板守护进程。
# 这是用于进程控制,终端管理的服务进程。
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
面板 Web 服务是提供用户管理与网页访问功能的服务,守护进程是提供进程管理和容器管理的服务,两者缺一不可。如果某个功能不正常,可以只重启这一部分的服务来热修复问题。
手动安装面板并运行
# 切换到安装目录,没有此目录请执行 mkdir /opt/
cd /opt/
# 下载运行环境
wget https://nodejs.org/dist/v14.17.6/node-v14.17.6-linux-x64.tar.gz
# 解压文件
tar -zxvf node-v14.17.6-linux-x64.tar.gz
# 链接程序到环境变量中
ln -s /opt/node-v14.17.6-linux-x64/bin/node /usr/bin/node
ln -s /opt/node-v14.17.6-linux-x64/bin/npm /usr/bin/npm
#创建安装文件夹
mkdir /opt/mcsmanager/
cd /opt/mcsmanager/
# 下载McsManager
wget https://github.com/MCSManager/MCSManager/releases/latest/download/mcsmanager_linux_release.tar.gz
tar -zxf mcsmanager_linux_release.tar.gz
./install-dependency.sh
# 打开两个终端或者两个screen
# 首先在一个screen中开启 daemon
./start-daemon.sh
# 在第二个screen中代开web服务
./start-web.sh
#通过http://localhost:23333/就可以访问web服务
#通常,web应用程序会自动扫描并连接到本地守护进程。
安装JAVA
# 如何获取JDK安装包?
进入JAVA官网,注册登录后下载
https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html
选择你需要的版本 在这里我们选择 Linux x64 Compressed Archive ,请根据自己的架构选择版本
本文档创建时的版本: jdk-8u251-linux-x64.tar.gz
请下载后自行上传到 root 目录或者 用户目录
请注意!!!请根据自己下载的版本修改下面相关命令中的版本
比如 8u251 这一段 请修改为自己上传的版本的数字
修改的内容包括 解压文件 设置环境变量 软链接程序到环境变量中 这几项
# 切换到用户目录
cd ~
# 创建安装目录
mkdir /usr/local/java/
# 解压当前目录下的JDK压缩文件
tar -zxvf jdk-8u251-linux-x64.tar.gz -C /usr/local/java/
# 设置环境变量(安装 VIM 输入 yum -y install vim)
vim /etc/profile
# 在末尾添加对应变量
滚动光标到末尾 按下 键盘上的 INS 键,切换至插入模式
输入这几串内容后 按下 Shift + ; 输入 wq 并回车保存
export JAVA_HOME=/usr/local/java/jdk1.8.0_251
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
# 应用修改后的环境变量
source /etc/profile
# 软链接程序到环境变量中
ln -s /usr/local/java/jdk1.8.0_251/bin/java /usr/bin/java
# 测试是否安装正常,显示 java version "1.8.0_251" 则为正常
java -version
使用 Screen 保持后台运行
先Ctrl+C
关闭面板,我们使用 screen 软件来让面板保持后台运行。
yum install screen # (Centos)
apt install screen # (Ubuntu)
# 创建一个名为 daemon 的窗口
screen -S daemon
./start-daemon.sh
# 创建一个名为 mcsm 的窗口
#首先在一个screen中开启 daemon
screen -S mcsm
# 在第二个screen中打开web服务
./start-web.sh
直接断开终端连接即可,面板将保持后台运行。
若要重新控制,请输入命令即可:
screen -r mcsm
screen -r daemon
请注意,上述步骤不会将面板组件注册到系统服务。您必须使用“屏幕”来管理它或手动注册系统服务。
Docker部署
创建一个文件夹/opt/docker-mcsm
用于保存docker部署的配置文件
面板分为网页前端(Web)和守护进程后端(Daemon),所以需要先备好两个 Dockerfile 文件。
WEB
FROM node:14-slim
ARG INSTALL_PATH=/opt/docker-mcsm
ARG TZ=Asia/Shanghai
ENV TZ=${TZ}
RUN sed -i -E 's/http:\/\/deb.debian.org/http:\/\/mirrors.ustc.edu.cn/g' /etc/apt/sources.list
RUN apt update && apt install -y git
RUN git clone --single-branch -b master --depth 1 https://gitee.com/MCSManager/MCSManager-Web-Production $INSTALL_PATH/releases/web
RUN cd $INSTALL_PATH/releases/web && npm i --production --registry=https://registry.npmmirror.com
WORKDIR $INSTALL_PATH/releases/web
CMD node app.js
复制并保存文件名为 dockerfile-web
的文件
Daemon
FROM node:14-slim
ARG INSTALL_PATH=/opt/docker-mcsm
ARG TZ=Asia/Shanghai
ENV TZ=${TZ}
RUN sed -i -E 's/http:\/\/deb.debian.org/http:\/\/mirrors.ustc.edu.cn/g' /etc/apt/sources.list
RUN apt update && apt install -y git
RUN git clone --single-branch -b master --depth 1 https://gitee.com/MCSManager/MCSManager-Daemon-Production $INSTALL_PATH/releases/daemon
RUN cd $INSTALL_PATH/releases/daemon && npm i --production --registry=https://registry.npmmirror.com
WORKDIR $INSTALL_PATH/releases/daemon
CMD node app.js
复制并保存文件名为 dockerfile-daemon
的文件
docker-compose
version: "3"
services:
mcsm-web:
container_name: mcsm-web
build:
context: .
dockerfile: dockerfile-web
args:
INSTALL_PATH: ${INSTALL_PATH-/opt/docker-mcsm}
TZ: ${TZ-Asia/Shanghai}
network_mode: "host"
restart: always
environment:
- PUID=0
- PGID=0
- UMASK=022
volumes:
- ${INSTALL_PATH-/opt/docker-mcsm}/releases/web/data:${INSTALL_PATH-/opt/docker-mcsm}/releases/web/data
- ${INSTALL_PATH-/opt/docker-mcsm}/releases/web/logs:${INSTALL_PATH-/opt/docker-mcsm}/releases/web/logs
- ${INSTALL_PATH-/opt/docker-mcsm}/releases/daemon/data/Config:${INSTALL_PATH-/opt/docker-mcsm}/releases/daemon/data/Config:ro
mcsm-daemon:
container_name: mcsm-daemon
build:
context: .
dockerfile: dockerfile-daemon
args:
INSTALL_PATH: ${INSTALL_PATH-/opt/docker-mcsm}
TZ: ${TZ-Asia/Shanghai}
network_mode: "host"
restart: always
environment:
- PUID=0
- PGID=0
- UMASK=022
volumes:
- ${INSTALL_PATH-/opt/docker-mcsm}/releases/daemon/data:${INSTALL_PATH-/opt/docker-mcsm}/releases/daemon/data
- ${INSTALL_PATH-/opt/docker-mcsm}/releases/daemon/logs:${INSTALL_PATH-/opt/docker-mcsm}/releases/daemon/logs
- /var/run/docker.sock:/var/run/docker.sock:ro
复制并保存文件名为 docker-compose.yml
的文件
.env
INSTALL_PATH=/opt/docker-mcsm
TZ=Asia/Shanghai
安装
将四个文件放在之前创建的文件夹中,进入文件目录,运行以下命令进行部署
docker-compose up -d # 运行 web 和 daemon
docker-compose up -d mcsm-web # 仅运行 web
docker-compose up -d mcsm-daemon # 仅运行 daemon
- 发布版中不携带 java,如需运行 java 程序请在
面板->环境镜像->环境镜像管理->新建镜像
中自行构建- 实例设置中的
进程启动方式
选择虚拟化容器
- 实例设置中的
- 关闭服务器请进入到 docker-compose.yml 文件目录运行
docker-compose stop
- 运行
docker-compose down
来移除容器
- 运行
更新容器
docker-compose exec mcsm-web bash -c "git pull && npm i --production --registry=https://registry.npmmirror.com" # 更新 web
docker-compose exec mcsm-daemon bash -c "git pull && npm i --production --registry=https://registry.npmmirror.com" # 更新 daemon
docker-compose restart
端口开放
面板需要 23333(主功能) 端口与 20010 - 20200(FTP功能)端口区间。
如果你使用阿里云,腾讯云或者服务商,请进入控制台到防火墙安全组策略,放行以上端口。
如果依然无法访问,请关闭系统自带防火墙:
# 关闭防火墙,依次执行
systemctl stop firewalld.service
service iptables stop
其他太过复杂操作本教程不提供,请读者有想法的自己搜索。
现在,访问 http://你的ip:23333/ 即可进入面板。
- 默认账号:#master
- 默认密码: 123456
- 请及时修改密码。
游戏实例
游戏服务端(MC服务器)或脚本(Shell)都视作为一个 应用实例
由面板统一管理,如下图所示。
McsManager
的 应用实例
支持多种类型的程序如JAVA、基岩版等,所以这里可以指定这个实例是什么类型,不同的选项会导致一些行为不一样,比如配置文件解析,命令执行方式等等。
守护进程
如果你在 Linux 下启动面板时,会启动两个服务
,其中 daemon
就代表守护进程,它是一个类似于 被控端
的程序,由自带网页的控制中心来控制它们,从而实现多个物理主机互相连接。
所以守护进程就是类似于一个 被控端
的角色,你的 MC 服务器是在这个 被控端
上运行,而网页就是 控制中心
的角色。
下图表示了从网页上连接各个地方的 守护进程
。