我在Amazon Linux 2的EC2上尝试了使用MinecraftDiscordChatSync
请问是什么样的文章?
本文介绍了在AmazonLinux2上使用MinecraftDiscordChatSync的步骤。
MinecraftDiscordChatSyncとは
Minecraft上のチャットやイベントをDiscordチャンネル上で表示したり、逆にDiscord上のチャットをMinecraft上に表示できます。

因为我从未接触过Node.js等内容,所以在某些地方花了一些时间,为了共享经验,我将把这些地方记录在文章中。
环境
亚马逊 Linux 2
资源名称
t4g.small
操作流程
1. 安装Git
sudo yum install git
2. 在Minecraft安装目录下执行以下命令。
git clone https://github.com/Gakuto1112/MinecraftDiscordChatSync.git
按照公式步骤安装nvm。
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.3/install.sh | bash
. ~/.nvm/nvm.sh
需要将路径通过,所以请各位自行执行。
安装nvm。需要指定为16以保持兼容性。
nvm install 16
当执行npm install时,发生了…..
npm install
哇啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊!
npm notice
npm notice New major version of npm available! 8.19.4 -> 9.6.7
npm notice Changelog: https://github.com/npm/cli/releases/tag/v9.6.7
npm notice Run npm install -g npm@9.6.7 to update!
npm notice
npm ERR! code 1
npm ERR! path /home/ec2-user/minecraft/MinecraftDiscordChatSync/node_modules/iconv
npm ERR! command failed
npm ERR! command sh -c -- node-gyp rebuild
npm ERR! make: Entering directory `/home/ec2-user/minecraft/MinecraftDiscordChatSync/node_modules/iconv/build'
npm ERR! CC(target) Release/obj.target/iconv/binding.o
npm ERR! make: Leaving directory `/home/ec2-user/minecraft/MinecraftDiscordChatSync/node_modules/iconv/build'
npm ERR! gyp info it worked if it ends with ok
npm ERR! gyp info using node-gyp@9.1.0
npm ERR! gyp info using node@16.20.0 | linux | arm64
npm ERR! gyp info find Python using Python version 3.7.16 found at "/usr/bin/python3"
npm ERR! gyp http GET https://nodejs.org/download/release/v16.20.0/node-v16.20.0-headers.tar.gz
npm ERR! gyp http 200 https://nodejs.org/download/release/v16.20.0/node-v16.20.0-headers.tar.gz
npm ERR! gyp http GET https://nodejs.org/download/release/v16.20.0/SHASUMS256.txt
npm ERR! gyp http 200 https://nodejs.org/download/release/v16.20.0/SHASUMS256.txt
npm ERR! gyp info spawn /usr/bin/python3
npm ERR! gyp info spawn args [
npm ERR! gyp info spawn args '/home/ec2-user/.nvm/versions/node/v16.20.0/lib/node_modules/npm/node_modules/node-gyp/gyp/gyp_main.py',
npm ERR! gyp info spawn args 'binding.gyp',
npm ERR! gyp info spawn args '-f',
npm ERR! gyp info spawn args 'make',
npm ERR! gyp info spawn args '-I',
npm ERR! gyp info spawn args '/home/ec2-user/minecraft/MinecraftDiscordChatSync/node_modules/iconv/build/config.gypi',
npm ERR! gyp info spawn args '-I',
npm ERR! gyp info spawn args '/home/ec2-user/.nvm/versions/node/v16.20.0/lib/node_modules/npm/node_modules/node-gyp/addon.gypi',
npm ERR! gyp info spawn args '-I',
npm ERR! gyp info spawn args '/home/ec2-user/.cache/node-gyp/16.20.0/include/node/common.gypi',
npm ERR! gyp info spawn args '-Dlibrary=shared_library',
npm ERR! gyp info spawn args '-Dvisibility=default',
npm ERR! gyp info spawn args '-Dnode_root_dir=/home/ec2-user/.cache/node-gyp/16.20.0',
npm ERR! gyp info spawn args '-Dnode_gyp_dir=/home/ec2-user/.nvm/versions/node/v16.20.0/lib/node_modules/npm/node_modules/node-gyp',
npm ERR! gyp info spawn args '-Dnode_lib_file=/home/ec2-user/.cache/node-gyp/16.20.0/<(target_arch)/node.lib',
npm ERR! gyp info spawn args '-Dmodule_root_dir=/home/ec2-user/minecraft/MinecraftDiscordChatSync/node_modules/iconv',
npm ERR! gyp info spawn args '-Dnode_engine=v8',
npm ERR! gyp info spawn args '--depth=.',
npm ERR! gyp info spawn args '--no-parallel',
npm ERR! gyp info spawn args '--generator-output',
npm ERR! gyp info spawn args 'build',
npm ERR! gyp info spawn args '-Goutput_dir=.'
npm ERR! gyp info spawn args ]
npm ERR! gyp info spawn make
npm ERR! gyp info spawn args [ 'BUILDTYPE=Release', '-C', 'build' ]
npm ERR! make: cc: Command not found
npm ERR! make: *** [Release/obj.target/iconv/binding.o] Error 127
npm ERR! gyp ERR! build error
npm ERR! gyp ERR! stack Error: `make` failed with exit code: 2
npm ERR! gyp ERR! stack at ChildProcess.onExit (/home/ec2-user/.nvm/versions/node/v16.20.0/lib/node_modules/npm/node_modules/node-gyp/lib/build.js:201:23)
npm ERR! gyp ERR! stack at ChildProcess.emit (node:events:513:28)
npm ERR! gyp ERR! stack at Process.ChildProcess._handle.onexit (node:internal/child_process:293:12)
npm ERR! gyp ERR! System Linux 5.10.179-166.674.amzn2.aarch64
npm ERR! gyp ERR! command "/home/ec2-user/.nvm/versions/node/v16.20.0/bin/node" "/home/ec2-user/.nvm/versions/node/v16.20.0/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild"
npm ERR! gyp ERR! cwd /home/ec2-user/minecraft/MinecraftDiscordChatSync/node_modules/iconv
npm ERR! gyp ERR! node -v v16.20.0
npm ERR! gyp ERR! node-gyp -v v9.1.0
npm ERR! gyp ERR! not ok
npm ERR! A complete log of this run can be found in:
npm ERR! /home/ec2-user/.npm/_logs/2023-05-25T13_34_24_785Z-debug-0.log
6. 原因似乎是因为缺少C++编译器,所以需要安装。
sudo yum install gcc-c++
7. 如果不安装 ts-node,就会被责备。顺便提一下,如果不加上全局选项也会失败。为什么我不清楚。
npm install -g ts-node
8. 第二次见面,真诚地来了回应……
npm install
好吧!剩下的就按照步骤进行设定。
ts-node MinecraftDiscordChatSync.ts
プラグインを読み込んでいます...
読み込まれたプラグイン
- [正常] -> Advancements.ts
- [正常] -> Death.ts
- [正常] -> DiscordMessage.ts
- [正常] -> PlayerJoin.ts
- [正常] -> PlayerLeave.ts
- [正常] -> PlayerMessage.ts
- [正常] -> RconStart.ts
- [正常] -> ServerStart.ts
- [正常] -> ServerStop.ts
全てのプラグインが正常に読み込まれました。
設定ファイル検証をしています...
設定ファイル「Settings.json」が存在しません。
「Settings.json」を生成しました。ファイルを開いて必要な情報を入力して下さい。
总结
使用AmazonLinux2安装MinecraftDiscordChatSync的方法如上所述。
如果了解Node.js的人应该不会遇到问题,但对于完全不了解的人可能会有些困惑吧…
给你多一点
自动启动外壳
创建一个执行Shell,假设执行用户是ec2-user。
sudo vi /home/ec2-user/discord_script.sh
该内容只是作为备用留在外壳中。
#!/bin/bash
start() {
if [ -f ~/.bash_profile ]; then
. ~/.bash_profile
fi
cd /home/ec2-user/minecraft/MinecraftDiscordChatSync
screen -AmdS discord ts-node MinecraftDiscordChatSync.ts -r
}
case "$1" in
start)
start
;;
stop)
stop
;;
*)
echo $"Usage: $0 {start|stop}"
esac
在这里如果不加载bash_profile,就不能执行shell,但是如果要详细说明的话会变得很长,所以…阅读这部分…
重点是在通过命令行执行和通过cron/systemctl执行时,有各种不同的设置…
もう一つ、サービスユニットを設定します。
sudo vi /etc/systemd/system/discord.service
这是内容!
[Unit]
Description=Discord
After=network.target local-fs.target
[Service]
Type=oneshot
RemainAfterExit=yes
User=ec2-user
WorkingDirectory=/home/ec2-user/
ExecStart=/home/ec2-user/discord_script.sh start
[Install]
WantedBy=multi-user.target
执行systemctl的启用操作后,自动启动设置将完成。
sudo systemctl enable discord.service
sudo systemctl daemon-reload
如果下次启动时能自动打开,那会大大减少操作次数。如果还能自动打开Minecraft,那运营成本就会大幅降低!