Canary Server命令行:CLI管理工具使用

Canary Server命令行:CLI管理工具使用

【免费下载链接】canary Canary Server 13.x for OpenTibia community. 【免费下载链接】canary 项目地址: https://gitcode.com/GitHub_Trending/can/canary

概述

Canary Server作为OpenTibia社区的开源MMORPG服务器软件,提供了丰富的命令行管理工具,帮助服务器管理员高效地进行服务器部署、配置和维护。本文将详细介绍Canary Server的CLI工具使用方法和最佳实践。

核心启动脚本

start.sh - 标准启动脚本

start.sh是Canary Server的主要启动脚本,提供完整的服务器运行环境:

#!/bin/bash

BIN_PATH=${1:-"./canary"}
if [ -d "logs" ]
then
	echo -e "\e[01;32m Starting server \e[0m"
else
	mkdir -p logs
fi

if [ ! -f "config.lua" ]; then
	echo -e "\e[01;33m config.lua file not found, new file will be created \e[0m"
	cp config.lua.dist config.lua && ./docker/config.sh --env docker/.env
fi

ulimit -c unlimited
set -o pipefail

while true; do
	sleep 2
	"$BIN_PATH" 2>&1 | awk '{ print strftime("%F %T - "),
	$0; fflush(); }' | tee "logs/$(date +"%F %H-%M-%S.log")"
	# Verificar se a tecla 'q' foi pressionada
    read -t 1 -N 1 -r input
    if [[ "$input" == "q" ]]; then
        break
    fi
done

功能特性:

  • 自动创建日志目录
  • 配置文件自动生成
  • 实时日志记录和时间戳
  • 支持通过按'q'键优雅退出

start_gdb.sh - 调试模式启动

#!/bin/bash

if [ -d "logs" ]
then
	echo -e "\e[01;32m Starting server with gdb enabled \e[0m"
else
	mkdir -p logs
	sudo apt install -y gdb
fi

ulimit -c unlimited
set -o pipefail

while true; do gdb --batch -return-child-result --command=gdb_debug --args ./canary 2>&1 | awk '{ print strftime("%F %T - "), 
$0; fflush(); }' | tee "logs/$(date +"%F %H-%M-%S.log")"

if [ $? -eq 0 ]; then
		echo -e "\e[0;31m Exit code 0, wait 30 seconds... \e[0m"
		sleep 30
	else
		echo -e "\e[0;31m Restarting the server in 5 seconds "The log file is stored in the logs folder" \e[0m"
		echo -e "\e[01;31m If you want to shut down the server, press CTRL + C... \e[0m"
		sleep 30
	fi
done;

调试功能:

  • GDB集成调试支持
  • 核心转储文件生成
  • 自动重启机制
  • 详细的错误处理

编译管理工具

recompile.sh - 自动化编译脚本

#!/bin/bash

set -euo pipefail

# Variáveis
VCPKG_PATH=${1:-"$HOME"}
VCPKG_PATH=$VCPKG_PATH/vcpkg/scripts/buildsystems/vcpkg.cmake
BUILD_TYPE=${2:-"linux-release"}
ARCHITECTURE=$(uname -m)
ARCHITECTUREVALUE=0

# Function to print information messages
info() {
	echo -e "\033[1;34m[INFO]\033[0m $1"
}

# Function to check if a command is available
check_command() {
	if ! command -v "$1" >/dev/null; then
		echo "The command '$1' is not available. Please install it and try again."
		exit 1
	fi
}

编译流程:

mermaid

Docker容器管理

docker-compose.yml - 容器编排配置

Canary Server提供完整的Docker支持,便于快速部署:

version: '3.8'

services:
  canary:
    build:
      context: .
      dockerfile: Dockerfile.x86
    ports:
      - "7171:7171"
      - "7172:7172"
    volumes:
      - ./data:/app/data
      - ./config.lua:/app/config.lua
    environment:
      - TZ=UTC
    restart: unless-stopped

  database:
    image: mysql:8.0
    environment:
      MYSQL_ROOT_PASSWORD: canary
      MYSQL_DATABASE: canary
      MYSQL_USER: canary
      MYSQL_PASSWORD: canary
    volumes:
      - mysql_data:/var/lib/mysql
    restart: unless-stopped

volumes:
  mysql_data:

常用CLI命令参考

服务器管理命令

命令描述示例
./start.sh启动服务器./start.sh ./canary
./start_gdb.sh调试模式启动./start_gdb.sh
./recompile.sh重新编译./recompile.sh ~/vcpkg

数据库管理

-- 创建测试账户
INSERT INTO `accounts` (`name`, `password`, `type`) VALUES
('test', SHA1('test'), 5);

-- 创建测试角色
INSERT INTO `players` (`name`, `account_id`, `level`, `vocation`) VALUES
('Test Player', 1, 8, 1);

配置文件管理

Canary Server使用Lua配置文件,主要配置项:

-- 服务器基础配置
serverName = "Canary Test Server"
ip = "127.0.0.1"
port = 7171

-- 数据库配置
sqlType = "mysql"
sqlHost = "127.0.0.1"
sqlPort = 3306
sqlUser = "canary"
sqlPass = "canary"
sqlDatabase = "canary"

-- 游戏设置
rates = {
    experience = 5,
    skill = 3,
    loot = 2,
    magic = 1.5
}

监控和日志管理

实时日志查看

# 查看实时日志
tail -f logs/$(date +"%F")*.log

# 按时间筛选日志
grep "ERROR" logs/*.log | head -20

# 统计错误数量
grep -c "ERROR" logs/*.log

性能监控命令

# 监控服务器进程
top -p $(pgrep canary)

# 内存使用情况
ps -o pid,user,%mem,command ax | grep canary

# 网络连接监控
netstat -tulpn | grep 7171

故障排除指南

常见问题解决

问题解决方案
端口被占用sudo lsof -i :7171 然后 kill -9 <PID>
数据库连接失败检查MySQL服务状态和配置
内存不足调整 ulimit 设置或增加swap空间
编译错误确保所有依赖项已安装

调试技巧

# 启用详细日志
./canary --verbose

# 核心转储分析
gdb ./canary core

# 内存泄漏检测
valgrind --leak-check=full ./canary

最佳实践

生产环境部署

  1. 使用Systemd服务
[Unit]
Description=Canary Server
After=network.target

[Service]
Type=simple
User=canary
WorkingDirectory=/opt/canary
ExecStart=/opt/canary/start.sh
Restart=always

[Install]
WantedBy=multi-user.target
  1. 日志轮转配置
/opt/canary/logs/*.log {
    daily
    missingok
    rotate 30
    compress
    delaycompress
    notifempty
    create 644 canary canary
}
  1. 备份策略
#!/bin/bash
# 数据库备份
mysqldump -u canary -pcanary canary > backup_$(date +%F).sql

# 配置文件备份
tar -czf config_backup_$(date +%F).tar.gz config.lua data/

总结

Canary Server的CLI管理工具提供了完整的服务器生命周期管理能力,从编译构建到生产部署,再到日常运维监控。通过合理使用这些工具,管理员可以:

  • 🚀 快速部署和启动服务器
  • 🔧 轻松进行配置管理和版本控制
  • 📊 实时监控服务器性能和状态
  • 🐛 高效进行故障排查和调试
  • 🔄 实现自动化运维和备份

掌握这些CLI工具的使用,将显著提升Canary Server的管理效率和稳定性,为玩家提供更优质的游戏体验。

【免费下载链接】canary Canary Server 13.x for OpenTibia community. 【免费下载链接】canary 项目地址: https://gitcode.com/GitHub_Trending/can/canary

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值