跳到主要内容

🐧 在 Linux 上部署

📦 环境配置

🛍️ 安装一个 AUR 工具 (如果没有)

sudo pacman -S git base-devel
git clone https://aur.archlinux.org/paru.git
cd paru
makepkg -si

🗃️ MongoDB 数据库

paru -S mongodb-bin
sudo systemctl enable --now mongodb

如果 systemctl status mongodb 的状态为 "active" 则表示安装成功

☕ OpenJDK 17

sudo pacman -S jdk17-openjdk
sudo archlinux-java set java-17-openjdk

如果 java -version 有输出类似 openjdk version "17.0.3" 2022-04-19 的内容则表示安装成功

⛓️ mitmproxy 代理

sudo pacman -S mitmproxy python

🚜 运行服务器

🎚️ 测试

cd /path/to/grasscutter # 进入 Grasscutter 目录
mitmdump -s proxy.py -k --set block_global=false & # 运行 mitmdump 代理
sudo java -jar grasscutter.jar # 运行服务器主文件

✒️ 编写脚本

如果测试起来没问题的话可以制作一个 Shell 脚本方便下次运行,内容如下

#!/bin/bash
cd /path/to/grasscutter
mitmdump -s proxy.py -k --set block_global=false &
sudo java -jar grasscutter.jar

🎞️ 保持后台

推荐使用 screen 实现保持后台

📥 安装

sudo pacman -S screen

🛠️ 使用

简单介绍一下 screen 的使用方法

创建会话
screen -S name

此时便进入了一个新的会话,与普通的终端无异,在运行需要保持的命令后,可使用 Ctrl + A, D 离开当前会话

查看现有会话
screen -ls

该命令会列出现有的所有会话

回到会话
screen -r name

此时便回到了之前创建的会话,可继续对其中运行的程序进行操作

使用 screen 创建的会话在 ssh 断连时也会保持运行

可选步骤:使用 systemd 使其开机自启

创建进程守护文件
cat << 'TEXT' > /etc/systemd/system/grasscutter.service
[Unit]
Description=Grasscutter Daemon
After=network.target

[Service]
Type=simple
User=root
Restart=on-failure
RestartSec=5s
WorkingDirectory=/path/to/grasscutter # 替换 /path/to/grasscutter 为正确路径
ExecStart=/usr/bin/screen -dm -S grasscutter bash -c 'cd /path/to/grasscutter;java -jar ./grasscutter.jar;exec bash' # 替换 /path/to/grasscutter 为正确路径
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target
TEXT
设置开机自启
sudo systemctl enable --now grasscutter.service

注意使用root用户管理screen进程。

info

By Chi_Tang

运行服务器部分是 @chitang233 基于 @YidaozhanYa 的文章进行修改

systemd部分由 @qwerzl 贡献

使用 CC BY-NC-SA 4.0 协议共享