World of Warcraft

Guide Компиляция AzerothCore на Debian 9

Скомпилируем ядро AC на Debian 9.

Первое, что нужно сделать, это установить пакет sudo.

apt update
apt upgrade
apt-get install sudo
Добавляем нового пользователя
  • Рекомендуется не использовать пользователя root для приложений. Поэтому мы собираемся создать пользователя, который будет отвечать за все действия AzerothCore. Введите adduser azcore, чтобы создать нового пользователя.
  • Далее, давайте удостоверимся, что у этого пользователя есть разрешения sudo. Предоставим их с помощью следующей команды usermod -aG sudo azcore
Проверим доступ sudo для нового пользователя
  • Давайте войдем как наш новый пользователь sudo su azcore
  • Введите sudo whoami, а затем введите пароль, который вы выбрали для этого пользователя.
  • Если вы видите в терминале root, то все готово! Введите команду exit, чтобы вернуться к пользователю root для следующих шагов.
Установка ключевых библиотек и дополнительных приложений
  • Установим кучу важных библиотек, приложений и инструментов, необходимых для Azerothcore. Введите следующую команду в терминал:
sudo apt-get update && sudo apt-get install git make gcc g++ clang default-libmysqlclient-dev libssl1.0-dev libbz2-dev libreadline-dev libncurses-dev mysql-server libace-6.* libace-dev g++-7
  • Выберите «Y» для любых запросов, запрашивающих дополнительное место для установки.
  • Давайте еще раз обновим наш список приложений, прежде чем продолжить. sudo apt-get
  • Давайте установим Screen, приложение, которое позволит нам одновременно открывать несколько приложений и сохранять их после выхода из консоли. sudo apt-get install screen
  • Далее следует curl - мы будем использовать его для скачки VMAP, MMAP и других необходимых данных для сервера sudo apt install curl
  • Давайте установим утилиту для распаковки, чтобы мы могли разархивировать файлы. sudo apt install unzip
  • Наконец, давайте подведем итоги с помощью sudo apt install
Установка CMake
  • Давайте удостоверимся, что нет никакой другой версии CMake, удалив все предыдущие версии CMake. sudo apt remove --purge --auto-remove cmake
  • Далее мы начнем процесс установки CMake. Скопируйте целиком эти строки и вставьте их в свой терминал. Если вы хотите установить другую версию CMake, вы можете обновить версию и номер сборки до другой версии CMake, которую можно найти по адресу Download | CMake.
version=3.16
build=2
mkdir ~/temp
cd ~/temp
wget https://cmake.org/files/v$version/cmake-$version.$build.tar.gz
tar -xzvf cmake-$version.$build.tar.gz
cd cmake-$version.$build/
  • После возвращения командной строки нажмите «Enter» один раз на клавиатуре.
  • Теперь давайте установим CMake.

./bootstrap
make -j$(nproc)
sudo make install
  • Вы можете также вставить всё это целиком, и после возврата командной строки нажмите «Enter».
  • Давайте проверим, что вы используете правильную версию CMake, с помощью команды cmake --version. Примечание. Если CMake Version не работает, закройте терминал, переподключитесь и повторите команду.
  • Вернитесь в основной каталог, набрав cd.
  • Давайте удалим временные файлы после установки CMake с помощью команды rm -rf temp.
Установка и настройка MariaDB
  • Давайте начнем процесс sudo mysql_secure_installation
  • Для следующих вопросов отвечайте так: [no_pass]/N/Y/Y/Y/Y
  • Вернувшись в командную строку, введите sudo mysql, чтобы войти в консоль MariaDB.
  • Оказавшись в консоли MariaDB, давайте создадим пользователя: GRANT ALL ON *.* TO 'dbadmin'@'%' IDENTIFIED BY 'password1' WITH GRANT OPTION;
  • Выберите имя пользователя, которое вы хотите - это может быть что угодно, это не обязательно должен быть dbadmin. Кроме того, убедитесь, что вы выбрали очень безопасный пароль, так как password1 НИКОГДА не должен использоваться.
  • Давайте обновим права для привилегий MariaDB Flush Privileges.
  • Выйдем из консоли MariaDB командой exit.
Настройка удаленных подключений к MariaDB
  • Перейдите в папку с нужным файлом. cd /etc/mysql/mariadb.conf.d
  • Запустите редактор файлов nano для файла конфигурации nano 50-server.cnf
  • Замените Bind Adress с 127.0.0.1 на 0.0.0.0
  • Чтобы сохранить изменения, нажмите Ctrl + X, затем Y, затем Ctrl + T. Затем с помощью клавиш со стрелками выберите 50-server.cnf
  • Теперь, когда мы обновили ключевой файл конфигурации MariaDB, нам нужно перезапустить MariaDB. Введите sudo /etc/init.d/mysql restart
Установка и настройка брандмауэра UFW
  • Давайте обновим наш каталог приложений sudo apt update
  • Давайте установим UFW sudo apt install ufw
  • Далее мы собираемся заблокировать все входящие соединения. Это важный шаг к защите вашего сервера. Мы откроем порты чуть позже. sudo ufw default deny incoming запретить входящие
  • Далее давайте разрешим все исходящие соединения. sudo ufw default allow outgoing
  • Нам нужно убедиться, что мы не заблокированы в консоли, поэтому нам нужно разблокировать порт 22, который используется SSH. Для этого введите sudo ufw allow ssh
  • Давайте разрешим порту MariaDB принимать входящие соединения sudo ufw allow 3306
  • Давайте разрешим серверу авторизации принимать входящие соединения sudo ufw allow 3724
  • Давайте разрешим игровому серверу принимать входящие соединения sudo ufw allow 8085
  • Убедитесь, что вы ввели все вышеперечисленные команды, а затем включите UFW с помощью: sudo ufw enable
AzerothCore Установка
  • Войдите как наш пользователь sudo su azcore
  • Перейдите в наш домашний каталог cd
  • Давайте скачаем последнюю версию AzerothCore git clone https://github.com/azerothcore/azerothcore-wotlk.git --branch master --single-branch azerothcore
  • После завершения клонирования перейдем в папку верхнего уровня каталога git cd azerothcore
  • Нам нужно сделать папку с именем build mkdir build
  • Перейдите в новую папку cd build
  • Теперь мы запускаем команду cmake, это этап предварительной компиляции, чтобы убедиться, что все файлы cpp учтены до компиляции, и он сообщает cmake, что компилировать.
cmake ../ -DCMAKE_INSTALL_PREFIX=$HOME/azeroth-server/ -DCMAKE_C_COMPILER=/usr/bin/clang -DCMAKE_CXX_COMPILER=/usr/bin/clang++ -DTOOLS=0 -DSCRIPTS=1
Теперь мы скомпилируем AzerothCore - это может занять некоторое время в зависимости от количества ядер, которые есть у вас. Введите следующую команду, чтобы скомпилировать ядро и поместить собранные элементы вместе.

MTHREADS=`grep -c ^processor /proc/cpuinfo`; MTHREADS=$(($MTHREADS + 2));
make -j $MTHREADS;
make install -j $MTHREADS;
Data Файлы
  • Всё под тем же пользователем azcore давайте вернемся к домашнему каталогу cd
  • Теперь нам нужно перейти в папку сервера, куда мы скомпилировали ядро cd azeroth-server
  • Нам нужно сделать папку для наших файлов Data и перейти к ней mkdir data;cd data
  • Давайте загрузим необходимые файлы Data. curl https://wow.heyaapl.com/data.zip --output data.zip
  • Теперь введём cd
  • Разархивируем основной архив который мы скачали. unzip data/data.zip
Настройка файлов конфигурации сервера
  • Используя SFTP, перейдите в /home/azcore/azeroth-server/etc и скачайте authserver.conf.dist и worldserver.conf.dist на свой локальный компьютер и удалите .dist из названия файла и настройте его под себя. (это не обязательно, можно переименовать прямо на сервере командой cp authserver.conf.dist authserver.conf и cp worldserver.conf.dist worldserver.conf и редактировать текстовым редактором.
  • Обновите информацию о базе данных в данных файлах конфигурации, используя любой редактор файлов для редактирования. Используйте имя пользователя и пароль, которые мы создали на предыдущих этапах, для обновления информации о соединении с базой данных.
  • Также в worldserver.conf нам нужно указать путь до наших файлов Data, иначе сервер не запустится. DataDir = "." замените на DataDir = "/home/azcore/azeroth-server/data"
  • Если вы загрузили их на свой компьютер, теперь эти отредактированные .conf файлы загрузите обратно на сервер используя тот же SFTP.
Начальная настройка базы данных и загрузка бд AC
  • Подобно тому, что было сделано с authserver.conf и worldserver.conf, нам нужно обновить файл конфигурации импорта базы данных. Используя SFTP, перейдите в /home/azcore/azerothcore/conf/ и найдите файл config.sh.dist. Загрузите его на свой локальный компьютер (не обязательно).
  • Из названия удаляем .dist, получаем config.sh
  • Теперь используя любой текстовый редактор нам необходимо отредактировать секцию DB EXPORTER/IMPORTER CONFIGURATIONS.
  • Замените информацию для входа в базу данных, начиная со строки 153, на имя пользователя и пароль базы данных, которые мы установили ранее. Сделайте это для разделов конфигурации базы данных Auth, Character и World (начиная со строк 153, 158 и 163 соответственно).
  • Сохраним config.sh и загрузим обратно в /home/azcore/azerothcore/conf/
  • Нам нужно находиться в каталоге git, чтобы выполнить скрипт импорта, поэтому введите следующую команду cd /home/azcore/azerothcore
  • Запустим скрипт для импорта базы данных, введя следующую команду bash apps/db_assembler/db_assembler.sh (будет работать только в данном каталоге). Нам нужно загрузить все базы данных, поэтому нам нужно выбрать Import-all: Assemble & Import All. Введите import-all и нажмите ввод. Это может приводить к ошибкам после каждого выполнения, но это нормально - он успешно импортирует каждую базу данных. Повторяйте весь этот шаг, пока база данных World не загрузится. Введите quit после импорта мировой базы данных.
Запуск Сервера
  • Теперь с помощью любого MySQL клиента подключитесь к базе под нашим пользователем, которого мы создавали ранее.
  • Перейдите в базу данных с именем acore_auth и откройте таблицу с именем realmlist.
  • Обновите значение address на IP-адреса вашего сервера или домен. Также здесь вы можете изменить имя сервера, если захотите.
Запускаем сервер авторизации, игровой сервер и заставляем работать 24/7
  • В своем терминале SSH введите следующую команду cd /home/azcore/azeroth-server/bin
  • Теперь давайте запустим authserver. Мы используем Screen, поэтому мы можем одновременно открыть и Authserver, и Worldserver, а также сделать так чтобы сервер работал сколько нам угодно (пока сами не выключим screen). Мы собираемся обозначить экран Authserver как «auth». Введите следующую команду для запуска экрана: screen -AmdS auth ./authserver. Введите screen -r auth, чтобы убедиться, что он успешно запущен. Нажмите Ctrl + A, а затем D, чтобы выйти из экрана сервера авторизации. Чтобы полностью выйти из экрана, нажмите Ctrl + C. Это убьет процесс, поэтому используйте его только при выключении Authserver.
  • Теперь давайте включим игровой сервер. Мы собираемся обозначить экран Worldserver как «world». Введите следующую команду, чтобы запустить его в экране screen -AmdS world ./worldserver. Введите screen -r worldd чтобы убедиться, что он успешно запущен. Нажмите Ctrl + A, а затем D, чтобы выйти из экрана игрового сервера. Чтобы полностью выйти из экрана, нажмите Ctrl + C. Это убьет процесс, поэтому используйте его только при выключении Worldserver.
  • Примечание: если вы хотите узнать больше о том, почему мы пропускаем AmdS при инициализации экранов, или посмотреть, есть ли другие аргументы, которые вы хотите передать, вот отличная справка о том, что означает каждая буква и почему они используются. Screen- Linux man page

Создайте свой игровой аккаунт
  • Перейдите к экрану игрового сервера, введя screen -r world
  • Введите следующую команду, чтобы создать новую учетную запись. account create [accountname] [password] - замените на свои данные без квадратных скобок.
  • Далее, давайте дадим админ права для созданной только что учётной записи. account set gmlevel [accountname] 3 -1
  • Вот и всё! Измените свой realmlist.wtf в своём клиенте и заходите на сервер.
 

Cosmo the God

Один из основателей EmuDevs
Карма
57
Подскажите пожалуйста, это под х32 компиляция?
Компиляция подразумевает собой что? Собрать из исходников выполняемый файл, на чём скомпилируете под то и будет, в случае с линуксом пофигу, если он х64 вы можете установить пакет х32 и будет так же работать
 
Компиляция подразумевает собой что? Собрать из исходников выполняемый файл, на чём скомпилируете под то и будет, в случае с линуксом пофигу, если он х64 вы можете установить пакет х32 и будет так же работать
Большое спасибо за ответ,просто выдает не понятную ошибку,думал может быть с этим связано.Ребят кто знает в чем проблема,дайте пожалуйста направление куда копать?:confused: Дабы не засирать тему, ошибку при компиляции кинул в текстовый документ. спасибо всем кто откликнется)
 

Вложения

Cosmo the God

Один из основателей EmuDevs
Карма
57
Большое спасибо за ответ,просто выдает не понятную ошибку,думал может быть с этим связано.Ребят кто знает в чем проблема,дайте пожалуйста направление куда копать?:confused: Дабы не засирать тему, ошибку при компиляции кинул в текстовый документ. спасибо всем кто откликнется)
При применении к функции [nodiscard] атрибут побуждает компилятор выдавать предупреждение, если он используется в отброшенном выражении
 

Cosmo the God

Один из основателей EmuDevs
Карма
57