Как сделать игровой сервер на ubuntu

Добавил пользователь Дмитрий К.
Обновлено: 04.10.2024

Создание игрового сервера World of Warcraft на базе Debian или Ubuntu

Установим все необходимое для сборки и дальнейшей работы нашего игрового сервера

apt-get install build-essential gcc g++ cpp automake git-core autoconf make patch libmysql++-dev libtool libcurl4-openssl-dev libssl-dev grep binutils subversion zlibc libc6 nano mysql-server unrar-free openssl

Затем скачаем исходные коды сервера и scriptdev2 который необходим для его работы
Код:

Затем применим патчи для исходных текстов
Код:

git am src/bindings/ScriptDev2/patches/MaNGOS-*

Затем переходим к сборке нашего сервера, это может занять некоторое время
Код:

autoreconf --install --force
mkdir objdir
cd objdir
../configure --prefix=/opt/mangos --sysconfdir=/opt/mangos/etc --enable-cli --enable-ra --datadir=/opt/mangos
make -j 2 (если у вас двухядерный процессор, или -j 4, если у вас четырехядерный процессор)
make install

Теперь можно начать настройку игрового сервера, для этого перейдите в его директорию
Код:

Скопируйте файлы конфигурации из созданных автоматически при сборке сервера
Код:

cp etc/mangosd.conf.dist etc/mangosd.conf
cp etc/realmd.conf.dist etc/realmd.conf

Скачаем базу данных для нашего сервера
Код:

Теперь можно создать и заполнить базы данных mysql, для этого вам понадобится ваш пароль пользователя root к mysql, вы задавали его в процессе установки пакета mysql-server, в примере указано -pYOURPASS, замените YOURPASS на ваш пароль.
Создадим нужные базы данных и таблицы в них
Код:

Теперь заполним служебные базы данных сервера
Код:

Затем заполним базу данных игрового мира
Код:

Если у вас есть желание русифицировать вашу базу данных, а именно квесты, некоторые предметы и тд, вы можете установить RUDB, скачать которую вы можете по ссылке
os.system("mysql -v -p " + db + "

Поместите скрипт в директорию /opt/mangos/mangos/sql/updates/, затем сделайте исполняемым командой chmod +x scriptname (scriptname замените на ваше имя скрипта) и выполните его там для применения патчей баз данных.

Затем назначим имя нашему игровому миру, для этого выполните слудующие команды к БД mysql, заменив в них Your Realm Name на имя вашего мира и Your IP на адрес вашего сервера
Код:

mysql -pYOURPASS
mysql> use realmd;
mysql> UPDATE realmlist SET name = 'Your Realm Name' WHERE /> mysql> UPDATE realmlist SET address = 'Your IP' WHERE /> mysql> exit

С базой данных пока все, перейдем к получению нужных для работы сервера файлов, от которых будет зависить версия клиента используемого для игры на сервере. Нам понадобится Windows версия игры с нужным нам патчем, например возьмем версию 3.2.2 (сборка 10505). От вас потребуется скачать на машину с клиентом игры директорию ~/mangos/contrib (она находится в директории с исходными текстами Mangos) с вашего сервера, и найти в ней следующие файлы
Код:

ad.exe
makevmaps_SIMPLE.bat
make vmaps.bat
splitConfig.txt
vmap_assembler.exe
vmapextract_v2.exe

Поместите эти файлы в директорию с установленным клиентом World of Warcraft, затем запустите файл ad.exe, он сделает все необходимое (распакует файл патча и извлечет оттуда необходимое), процесс может занять длительное время. После завершения работы экстрактора вы увидите три новые директории, "maps", "dbc", и "vmaps". Данные директории вам надо загрузить обратно на ваш сервер и поместить в директорию /opt/mangos/bin.

Для запуска нашего WoW сервера нам понадобится screen, обычно он уже установлен, если нет то установите его, затем создадим простенький стартовый скрипт для запуска нашего сервера в дальнейшем.
Код:

Сделайте скрипт исполняемым командой chmod +x scriptname.

Теперь попробуем запустить наш сервер, для начала без screen, откройте две консоли, в первой выполните команды
Код:

Затем во второй консоли выполните команды
Код:

Если все прошло нормально, завершите screen и запустите созданный нами ранее скрипт для старта сервера.

Для управления сервером через веб интерфейс существует несколько разных скриптов, но все они не очень богаты функционалом, могут не работать корректно с вашей версией патча, поэтому готовьтесь что возникнут некоторые трудности при их настройке. Небольшую коллекцию веб обвязок для Mangos можно найти по ссылке:


Сегодня мы рассмотрим менеджер управления игровым сервером Linux Game Server Managers, на базе Linux дистрибутива.
Нас больше всего интересует поддержка Counter-Strike и она имеется в полном объеме.

  • 7DaysToDie
  • ARKSurvivalEvolved
  • Arma3
  • Battlefield1942
  • BlackMesa
  • BladeSymphony
  • BrainBread2
  • CallOfDuty
  • CallOfDuty2
  • CallOfDuty4
  • CallOfDutyUnitedOffensive
  • CallOfDutyWorldAtWar
  • CodenameCURE
  • CounterStrike
  • CounterStrikeConditionZero
  • CounterStrikeGlobalOffensive
  • CounterStrikeSource
  • DayOfDefeat
  • DayOfDefeatSource
  • DayOfInfamy
  • DeathmatchClassic
  • DontStarveTogether
  • DoubleActionBoogaloo
  • EmpiresMod
  • Factorio
  • FistfulOfFrags
  • GarrysMod
  • GoldenEyeSource
  • HalfLife2Deathmatch
  • HalfLifeDeathmatch
  • HalfLifeDeathmatchSource
  • Hurtworld
  • Insurgency
  • JustCause2
  • KillingFloor
  • Left4Dead
  • Left4Dead2
  • Minecraft
  • Mumble
  • NS2Combat
  • NaturalSelection2
  • NoMoreRoomInHell
  • OpposingForce
  • PiratesVikingandKnightsII
  • ProjectZomboid
  • Quake2
  • Quake3
  • QuakeLive
  • QuakeWorld
  • RedOrchestra
  • Ricochet
  • Rus
  • SeriousSam3BFE
  • Starbound
  • SvenCoop
  • TeamFortress2
  • TeamFortressClassic
  • TeamSpeak3
  • Teeworlds
  • Terraria
  • UnrealTournament
  • UnrealTournament2004
  • UnrealTournament3
  • UnrealTournament99
  • WolfensteinEnemyTerritory
  • Ubuntu 12.04 LTS или выше.
  • Debian 6 или выше.
  • Fedora 17 или выше.
  • CentOS 6 или выше.

sudo dpkg --add-architecture i386; sudo apt-get update;sudo apt-get install mailutils postfix curl wget file bzip2 gzip unzip bsdmainutils python util-linux tmux lib32gcc1 libstdc++6 libstdc++6:i386

sudo apt-get install mailutils postfix curl wget file bzip2 gzip unzip bsdmainutils python util-linux tmux libstdc++6

sudo dpkg --add-architecture i386; sudo apt-get update; sudo apt-get install mailutils postfix curl wget file bzip2 gzip unzip bsdmainutils python util-linux tmux lib32gcc1 libstdc++6 libstdc++6:i386

sudo apt-get install mailutils postfix curl wget file bzip2 gzip unzip bsdmainutils python util-linux tmux libstdc++6

dnf install mailx postfix curl wget file bzip2 gzip unzippython tmux glibc.i686 libstdc++ libstdc++.i686


Запускать игровой сервер под root правами - вредно для вашего здоровья, поэтому добавим нового пользователя в систему:
1. Придумываем логин и пароль пользователю.

Tz6kp3q.jpg

Теперь самое сложное, установка игрового сервера Counter-Strike 1.6
1. В начале попросят подтвердить директорию установки (Это базовая директория пользователя "test")

2. Дальше установщик все сделает сам.
У сервера Counter-Strike 1.6 иногда бывает сбой, при закачке через SteamCMD, когда он не выкачивается полностью и приходится повторять процедуру. Авторы позаботились об этом и после первой загрузки, скрипт прогоняет загрузку сервера еще несколько раз и докачивает все файлы, которые могли быть пропущены.

На ftp будет такая структура

Нужные настройки сервера вносим в файл cs-server.cfg (он выступает аналогом привычного server.cfg)

4. Вызовем наш скрипт, чтобы узнать, какие команды нам доступны

nM89mQV.jpg

Полная команда | Сокращенная команда | Описание команды
start st |Start the server.
stop sp |Stop the server.
restart r |Restart the server.
update u |Checks and applies updates from SteamCMD.
force-update fu |Bypasses the check and applies updates from SteamCMD.
update-functions uf |Removes all functions so latest can be downloaded.
validate v |Validate server files with SteamCMD.
monitor m |Checks that the server is running.
test-alert ta |Sends test alert.
details dt |Displays useful infomation about the server.
backup b |Create archive of the server.
console c |Console allows you to access the live view of a server.
debug d |See the output of the server directly to your terminal.
install i |Install the server.
auto-install ai |Install the server, without prompts.

UCak8OQ.jpg

Все прошло успешно

Данная инструкция актуальна и проверена на Debian 9, Ubuntu 16, Ubuntu 18.

Подключение к серверу

Для начала установки подключимся к серверу по SSH.


Установка OpenJDK на сервер

Для работы minecraft сервера необходимо установить OpenJDK версии 1.8. — специальное ПО, которое необходимо для корректной работы сервера minecraft.

Для этого выполняем команду:


Ждем завершения установки, убеждаемся, что установилась нужная версия OpenJDK и переходим к следующему шагу


Настройка фаервола для работы minecraft сервера

Для работы нашего сервера нам необходимо открыть порт 25565 .

Сделать это можно командой:


Установка сервера Minecraft

Создадим директорию на нашей VDS для нашего сервера Minecraft:


И перейдем в данную директорию:

Далее необходимо скачать сервер minecraft 1.15.2, сделать это можно с официального сайта mojang вручную, либо командой:


Запуск Сервера

Для удобства запуска создадим простой скрипт командой:


После чего любым текстовым редактором добавим в него код, указанный ниже:


Теперь необходимо дать скрипту право на исполнение, сделать это можно командой:


После чего выполняем команду запуска:

Однако видим следующие ошибки:


Пугаться не стоит, необходимо принять EULA.

Для этого открываем файл eula.txt любым текстовым редактором и меняем значение:


После чего увидим, что сервер успешно запустился.


Особенности запуска на linux

Если мы закроем терминал, сервер завершит свою работу. Для решения этой проблемы установим screen.

При помощи screen сервер можно запустить в виртуальной консоли, и при закрытии окна терминала сервер minecraft продолжит свою работу.


Это конечно же не так. Линукс всего лишь операционная система, такая же как IOS, Android или Windows.

Терминал - не сложнее серверной консоли майнкрафт.

Давайте разберемся, почему линукс больше подходит для запуска игрового сервера. Сама операционная система сделана так, что она быстрее работает, меньше весит и потребляет меньше ресурсов ПК.

Это значит, что ядро майнкрафт получит больше ресурсов для своей работы, а ПК может быть чуть менее мощным, чем если бы мы использовали ос Windows. Более того - linux по умолчанию бесплатный, его можно установить на всех хостингах VPS/VDS (виртуальный выделенный сервер) и dedicated (физический выделенный сервер). Такие хостинги дешевле, чем с Windows.

Давайте заглянем в саму ос Linux.

В нашем примере я буду использовать Ubuntu Server (один из самых распространненых дистрибутивов).

В серверной реализации Ubuntu нашим глазам виден лишь терминал.

Как и в Windows тут есть понятие "простого пользователя" и "администратора" (он же "sudo" в линуксе).

В большинстве случаев на VPS/VDS Вы заходите сразу как администратор, при этом в терминале Вы увидите примерно следущее:

Вообще постоянно работать с системой с правами администратора - плохо.

Если Вы видите примерно такое:

то Вы сейчас находитесь в системе с правами обычного пользователя. Именно символ $ нам об этом сообщает и лучше работать с ситемой именно в этом режиме, лишь при необходимости повышая свои права до администратора.

Зачем мне все это знать? Давай уже пиши, как сервер ставить!

Не так быстро. Мы же хотим понимать, что мы делаем?
Понимание прав пользователя в системе очень важно, т.к. часть команд можно выполнить только с правами администратора.

Поговорим о командах в терминале. Вот список команд и что они делают (они все будут использоваться в процессе сборки и запуска ядра майнкрафт. После ввода команды нажимайте Enter):

ls - отобразит все папки и файлы.

cd - переход в указанную папку.

mkdir - создание папки с указанным именем

apt - это не совсем команда. Это уже целое приложение для обновления ос, установки и удаления программ.

sudo - временное повышение прав пользователя до администратора ос.

Очевидно это не весь список, но давайте уже попробуем использовать то, что есть.

Я предполагаю, что Вы находитесь в системе как обычный пользователь (ибо так правильно).

Узнаем о доступных обновлениях с помощью команды:

Обновим систему и приложения в ней с помощью команды:

Ставим страшную Java с помощью уже не такого

страшного терминала и

в уже совсем не страшный Linux

Зачем вообще ставить Java?

На ней написано ядро сервера майнкрафт и без нее ничего не заработает…

Давайте напишем в терминал команду:

Java версии 8 нужна, в основном, для старых версий майнкрафта и старых плагинов.

Я же рекомендую ставить Java версии 11 (Говорят, что Minecraft 1.17+ будет работать только на Java версии 16 и выше). На момент написания статьи самая последняя версия Java — 17.

Для установки другой версии Java изменим предыдущую команду:

Просто циферку поменяли))

В систему может быть установленно сразу несколько версий Java.

Одна из них будет использоваться по умолчанию, а чтобы выбрать какая именно версия должна быть по умолчанию введем команду:


Как видите, на картинке выше, в системе установлены две версии Java (8 и 11).

А мне не нужны обе версии Java. Хочу удалить Java 8!

Это резонно. Введем команду для удаления:

Думаю, что в этой команде уже понятно, какое слово за что отвечает.

Мы все ближе и ближе к установке ядра сервера майнкрафт.

Давайте создадим папку, в которой у нас будет находиться сервер. Для этого введем команду:

Опля! Папка создана, а убедиться в этом можно с помощью команды:

после ввода этой команды отобразятся все папки и файлы. Среди них будет наша папка mineserv. Давайте в нее перейдем с помощью команды:

Уф! Сколько работы уже проделали!

Теперь начинается самое интересное!

Сборка ядра сервера с помощью buildtools.

Я буду использовать buildtools от spigot.

Дальнейший текст — вольный перевод инструкции написанной самим spigot.

Спигот просит нас установить Java и git (если ты далек от разработки программ, то знай, что git — это место где хранится код).

Т.к. Java у нас уже установлена, ставим git:

Уже совсем родная команда))

Далее спигот просит нас скачать программу, имя которой — BuildTools.

Для скачивания чего-либо из интернета в терминале линукс есть две программы.

Начнем загрузку buildtools:

вот такая длинная команда. Разберем ее.

Следующим этапом спигот просит нас указать настройки для git (мы не будем вникать в суть этой настройки. Мы же не прогеры пока еще, нам сейчас это без надобности).

Выполним команду, как нас и попросили:

Просили — сделали. Мы не вредные.

А дальше начинается магия. Чтобы она заработала — нам надо запустить BuildTools.jar

Вот и настал момент использования Java. Выполним команду:

Магия началась! Ждем пока закончится) В процессе магического действа будут бежать разные буковки. Просто ждем)

Не буду заставлять вас вникать в суть комбинированных команд (если интересно — напишите в комментариях к статье), просто пишем в наш терминал:

Запуск ядра сервера.

Ну вот и добрались)

Ядро сервера — это программа написанная на java. Запустим эту программу командой:

В ответ мы получим ошибку:

По факту нас просят прочитать лицензионное соглашение и подтвердить, что мы готовы его соблюдать. Давайте сделаем это!

Да, прямо в терминале)

Отлично, файл открылся, можно редактировать!

Для навигации в тексте используем стрелки на клавиатуре.

Вот текст, который мы увидим, открыв файл:

Нас интересует третья строка.

нужно заменить на

eula=true

Просто сотрите одно слово и напишите другое.

Для сохранения нажмите Ctrl+O, затем Enter.

Для выхода из программы нажмите Ctrl+X.

Снова запустим ядро сервера:

Поздравляю! Сервер успешно запущен в первый раз, НО!

Нужно! Совсем чуть-чуть, чтобы сервер работал без нашего постоянного присутствия.

Теперь создадим с ее помощью фоновый процесс, который продолжит работать после того, как мы отключимся от терминала:

Мы создали такой процесс, дали ему имя server (чтобы всегда быстро в него переходить), теперь надо в него перейти и запустить в нем наш игровой сервер:

Читайте также: