Ubuntu 编译 AzerothCore (魔兽私服)

作者1122个月前 (11-04)Linux399

注: Ubuntu 版本必须 >= 22.04 旧版本系统会遇到大量软件版本过旧的问题,需要自己手动升级,不建议使用。

apt-get update && apt-get install git cmake make gcc g++ clang libmysqlclient-dev libssl-dev libbz2-dev libreadline-dev libncurses-dev mysql-server libboost-all-dev nano rename screen

升级系统(这里由于规则内源码仓库失效用那个一连串命令就会卡住,后续不再安装)

sudo apt-get update

2安装 git:

sudo apt-get install git

安装 cmake:

sudo apt-get install cmake

安装 make:

sudo apt-get install make

安装 gcc:

sudo apt-get install gcc

安装 g++:

sudo apt-get install g++

安装 clang:

sudo apt-get install clang

安装 libmysqlclient-dev:

sudo apt-get install libmysqlclient-dev

安装 libssl-dev:

sudo apt-get install libssl-dev

安装 libbz2-dev:

sudo apt-get install libbz2-dev

安装 libreadline-dev:

sudo apt-get install libncurses-dev

安装 mysql-server:

sudo apt-get install mysql-server

安装 libboost-all-dev:

sudo apt-get install libboost-all-dev

安装 libboost-all-dev: sudo apt-get install libreadline-dev

编译

mkdir ~/dev
cd ~/dev
git clone https://github.com/azerothcore/azerothcore-wotlk.gitcd azerothcore-wotlk
mkdir buildcd build
cmake ../ -DCMAKE_INSTALL_PREFIX=$HOME/azeroth-server/ -DCMAKE_C_COMPILER=/usr/bin/clang -DCMAKE_CXX_COMPILER=/usr/bin/clang++ -DWITH_WARNINGS=1 -DTOOLS_BUILD=all -DSCRIPTS=static -DMODULES=static
make -j $(nproc --all) # 编译make install # 安装
  1. 下载 data.zip,如果之前已经下过了,就不用再下了,可以通过宝塔上传到Ubuntu里

  2. 把 data.zip 解压到 ~/azeroth-server/data 目录下

  3. 把 ~/azeroth-server/etc/worldserver.conf.dist 复制一份到 ~/azeroth-server/etc/worldserver.conf,然后编辑 ~/azeroth-server/etc/worldserver.conf,把 DataDir = "." 改成 DataDir = "/home/你的用户名/azeroth-server/data"

  4. 把 ~/azeroth-server/etc/authserver.conf.dist 复制一份到 ~/azeroth-server/etc/authserver.conf

  1. 执行 sudo mysql 进入数据库的终端

  2. 执行以下SQL语句,创建acore用户,创建acore_world、acore_characters、acore_auth三个数据库,并授权acore用户拥有这三个数据库的所有权限

DROP USER IF EXISTS 'acore'@'%';
CREATE USER 'acore'@'%' IDENTIFIED BY 'acore' WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0;

GRANT ALL PRIVILEGES ON * . * TO 'acore'@'%' WITH GRANT OPTION;

DROP DATABASE IF EXISTS `acore_world`;
CREATE DATABASE `acore_world` DEFAULT CHARACTER SET UTF8MB4 COLLATE utf8mb4_general_ci;

DROP DATABASE IF EXISTS `acore_characters`;
CREATE DATABASE `acore_characters` DEFAULT CHARACTER SET UTF8MB4 COLLATE utf8mb4_general_ci;

DROP DATABASE IF EXISTS `acore_auth`;
CREATE DATABASE `acore_auth` DEFAULT CHARACTER SET UTF8MB4 COLLATE utf8mb4_general_ci;

GRANT ALL PRIVILEGES ON `acore_world` . * TO 'acore'@'%' WITH GRANT OPTION;
GRANT ALL PRIVILEGES ON `acore_characters` . * TO 'acore'@'%' WITH GRANT OPTION;
GRANT ALL PRIVILEGES ON `acore_auth` . * TO 'acore'@'%' WITH GRANT OPTION;

注:如果执行过 sudo mysql_secure_installation,并且安装了 validate_password 插件,那么创建用户时需要设置一个复杂的密码,否则会报错。可以在这里找到关闭 validate_password 插件的方法。

  1. 允许外网访问MySQL服务器

  • 使用宝塔文件浏览器,进入 /etc/mysql/mysql.conf.d 目录

  • 修改 mysqld.cnf 文件,把 bind-address 的值由 127.0.0.1 改成 0.0.0.0

  • 在终端输入 sudo systemctl restart mysql 重启MySQL服务

  1. Ubuntu 防火墙打开3306端口

sudo ufw allow 3306

这篇文章讲了怎么样完整的初始化MySQL,如果是服务器,建议按照这篇文章的步骤来初始化MySQL,可以增强安全性。

  1. 使用 HeidiSQL 连接数据库

  • IP: 服务器的公网IP(如果是虚拟机就填虚拟机的IP)

  • 端口:3306

  • 用户名:acore

  • 密码:acore

  • 修改 acore_auth.realmlist 表里的 address 字段,改为服务器的公网IP(如果是虚拟机就填虚拟机的IP)

  • 6 启动服务器

    cd ~/azeroth-server/bin
    # 1. 以 nohup 方式启动,标准输出和错误输出都重定向到 /dev/null# 2. 启动前检查是否有 Auth.log/DBErrors.log/Server.log,如果有先备份,格式为 log/YYMMDD_HHMMSS/原文件名.logfunction backupLog() {	# 把log/YYMMDD_HHMMSS目录名存到一个变量里
    	dirName=log/`date +%y%m%d_%H%M%S`
    	# 判断 dirName 目录是否存在,不存在则创建
    	if [ ! -d $dirName ]; then
    		mkdir -p $dirName
    	fi
    	# 判断 $1.log 是否存在,存在则备份
    	if [ -f $1.log ]; then
    		mv $1.log $dirName/$1.log	fi}
    backupLog Auth
    backupLog DBErrors
    backupLog Server# 启动服务器function launch() {
    	nohup ./$1 > /dev/null 2>&1 &}
    launch authserver
    launch worldserver

    为了方便,可以把上面两条命令写到一个脚本里,比如 ~/azeroth-server/bin/start.sh,然后执行 chmod +x ~/azeroth-server/bin/start.sh,这样就可以通过 ~/azeroth-server/bin/start.sh 来启动服务器了。

    Ubuntu 防火墙打开3724和8085端口

    sudo ufw allow 3724
    sudo ufw allow 8085

    7 关闭服务器

    pkill authserver
    pkill worldserver

    为了方便,可以把上面两条命令写到一个脚本里,比如 ~/azeroth-server/bin/stop.sh,然后执行 chmod +x ~/azeroth-server/bin/stop.sh,这样就可以通过 ~/azeroth-server/bin/stop.sh 来关闭服务器了。

    screen 方式启动服务器

    # 安装 
    screensudo apt install screen
    
    # 创建 
    authserver screen 会话
    screen -S authserver
    
    # 启动 
    authservercd ~/azeroth-server/bin
    ./authserver
    # 按 Ctrl+A Ctrl+D 退出 screen 会话
    
    # 创建 worldserver screen 会话
    screen -S worldserver
    # 启动 worldservercd 
    cd ~/azeroth-server/bin
    ./worldserver
    # 按 Ctrl+A Ctrl+D 退出 screen 会话
    
    # 查看 screen 会话
    screen -ls
    
    # 进入 screen 会话
    screen -r authserver
    screen -r worldserver

    参考文档:https://linuxize.com/post/how-to-use-linux-screen/


    相关文章

    如何在Ubuntu上安装Docker?

    1.安装Docker1.1 添加Docker官方仓库首先,您需要添加Docker官方仓库以获取最新的Docker软件包。在终端中执行以下命令:sudo apt update sudo apt ins...

    ubuntu22.04操作系统安装步骤(手工分区)

    ubuntu22.04操作系统安装步骤(手工分区)

    VMware ESXI8.0虚拟化平台,ubuntu操作系统:ubuntu-22.04.4-live-server-amd64.iso登录平台后,选择“创建/注册虚拟机”,选择“创建虚拟机”:自定义名...

    Ubuntu精通:你需要知道的Ubuntu基本命令

    Ubuntu精通:你需要知道的Ubuntu基本命令

    一、引言Ubuntu是一种基于Linux操作系统的开源软件,它是由南非企业家马克·舍特尔沃思创建的。Ubuntu以其简单易用、稳定可靠以及丰富的可定制性而广受欢迎。作为一个开源操作系统,Ubuntu的...