Привет! Хочу посвятить многих кто не знает как запустить проект на Linux. Так как множество начинающих серверов расположены на Windows Server, что по большему счёту не есть хорошо, так как теряется множество возможностей в плане развития и скорости.
В мануале не объяснены тонкости защиты хостинга, он рассчитан на новичков!
В мануале будет рассказано:
Если же у вас нет данной папки, то значит вы не скачивали сам базовый сервер, чтобы это сделать идём в файл по пути RAGEMP/config.xml и заменяем содержимое на:
Мы заменили версию нашего RAGEMP на серверную, что позволит нам скачать официальный последний сервер RAGE MP. Да и этот файл отвечает за смену версий, таким образом вы можете использовать тестовые ветки которые иногда выпускаются в новостях официального дискорда.
Чтобы сервер скачался, открываем лаунчер RAGE MP и ожидаем когда завершиться загрузка. Готово! Теперь у нас появляется папка RAGEMP/server-files.
Да его можно получить по ссылке, но это перестраховка
Для начала конечно нам нужно подключиться к хостингу. У нас есть 2 пути по SSH и FTP, но я расскажу при помощи SSH так как он позволит сразу делать манипуляции с файлами которые нам нужно будет делать через командную строчку.
Но SSH не передаёт файлы, для этого используется SFTP это тот же FTP, но который работает на основе SSH.
В данном мануале я буду пользоваться программой Termius (Перейти) для подключения к хостингу, в ней конечно нужно зарегистрироваться, но она очень удобная!
Создаём подключение к хостингу с протоколом SSH и вводим данные (IP-Адрес, Логин, Пароль) и пытаемся подключиться к хостингу! Если вас не подключит возможно несколько вариантов:
Если у вас получилось! Поздравляю! Теперь переключаемся на протокол SFTP чтобы загрузить наш архив сервера. В Termius слева выбирается SFTP -> Select Host -> Выбираем наше подключение, готово!
Как только мы подключились мы видим нашу домашнюю директорию, это личный каталог пользователя в операционной системе, где находятся его данные и настройки. Мышкой перекидываем в это место наш архив полученный в первом этапе (linux_x64.tar.gz). Ожидаем пока файл загрузиться на хостинг. После загрузки нужно ввести команду для разархивации сервера. Для этого возвращаемся в SSH чтобы вводить команды.
Вводим команду:
Всё! Наш сервер был успешно разархивирован в папку ragemp-srv. Перейдя в SFTP можем её увидеть и посмотреть содержимое, а теперь удаляем этот архив, он нам больше не понадобиться:
Для того чтобы в последующих пунктах устанавливать дополнительные утилиты нужно обязательно ввести команду:
Она нам обновит список доступных утилит, откуда мы будем их скачивать
Попытаемся запустить сервер! Переходим в директорию нашего сервера:
И запускаем его следующей командой:
Наш сервер должен был успешно запуститься если вы делали всё пошагово как написано! Чтобы его закрыть нужно нажать на сочетание CTRL + C.
Если мы попытаемся подключиться на сервер у нас не получиться (IP-Адрес:22005) Почему? Наш сервер изначально блокирует порты, нам нужно разблокировать их, а именно 22005 и 22006. Сервер всегда занимается 2 порта, текущий и последующий. Потому что данные закачки передаются на следующей порте (22006).
Для открытия порта, скачиваем утилиту для легкого менеджмента портов:
Соглашаемся со скачкой данных написав заглавную Y и ожидаемся окончания.
Теперь у нас имеется утилита для разрешения порта, вводим команды:
Всё, у нас порты открыты! Запускаем сервер заново и присоединяемся.
Если наш сервер использует C# на серверной части нужно его принудительно включить сначала в конфиге. Открываем файл на хостинге ragemp-srv/conf.json это можно сделать через SFTP двойным нажатием на файл. Если файл не отрывается попробуйте нажать правой кнопкой мыши и выбрать Open with... так выберите удобный вам редактор кода.
В файле включаем наш C#, изменяя поля csharp на enabled:
Нажимаем сочетания клавиш CTRL + C (Сохранить файл) и нам предложат загрузить изменённый файл на сервер. В Termius будет снизу название файла его вес и кнопки Upload (Загрузить) Discard (Отменить).
Теперь при запуске сервера у нас будет возможность использовать серверную часть на языке C# так же рекомендуется отключать серверную часть на JS дабы не делать лишнюю нагрузку. Для этого в файле конфига (ragemp-srv/conf.json) нужно написать это:
Если вы вставляете это в последнюю строчку то уберите в конце запятую. Вот итоговый файл который у нас получился:
В этом же файле вы можете настроить свой сервер как он будет отображаться в списке серверов, и ещё например какая вместимость сервера
Теперь у нас есть настроенный сервер, который полностью готов в загрузке вашего мода.
Переходим в ваш мод который у вас расположен на ПК и берём папки в архив (Формата .zip) такие как:
Если у вас сервер на C# ещё нужно взять:
Получившийся архив мы перекидываем на наш хостинг, в главную папку сервера ragemp-srv/
Как архив передался его нужно разархивировать. Но для этого нам нужна дополнительная утилита, скачиваем командой:
Если нам предложат согласиться нажимаем Y. Теперь мы в терминале обязательно должны находиться в папке с сервером (ragemp-srv) переместиться можно через команду cd о которой говорилось ранее.
Разархивируем архив командой:
Нам предложит заменить файлы, соглашаемся нажатием на A (заменить все файлы из архива).
Готово! Теперь запускаем сервер и мод на вашем хостинге. Но если у вас ещё на нём есть база данных, вам нужно прочитать следующий пункт обязательно!
Переходим в терминал, и скачиваем саму базу данных командой:
Подтверждаем скачивание заглавной буквой Y и ожидаем когда оно скачается.
После скачки нам нужно настроить саму базу данных, пишем команду:
Первое предложение это ввод вашего пароля от root аккаунта хостинга, вводим его. Учитывайте что вы не будете видеть какой пароль вы набираете.
Следующий шаг защита unix_socket, она нам не требуется, пишем n.
Дальше предложат сменить пароль для root аккаунта базы данных. Соглашаемся написав заглавную букву Y. Вам нужно будет написать его 2 раза. Учитывайте что вы не будете видеть какой пароль вы набираете. Этот пароль нам нужен будет для конфигурации подключения базы данных сервера!
Дальше у нас начнутся высвечиваться предложения на которые мы должны соглашаться или не соглашаться.
Мы инициализировали базу данных, теперь нам нужно настроить к ней подключение, чтобы мы могли управлять с своего компьютера.
Вводим команду mysql для написания SQL запросов прямо в терминале:
Теперь мы в режиме написания запросов. Создаём пользователя для подключения, вводим в терминал:
И выдаём ему все права root, вводим в терминал:
И выходим из режима запросов, вводим в терминал:
Осталось разрешить доступ к базе данных с других IP-Адресов, это конечно не очень безопасно, но один пользователь с нашим IP должен помочь.
Идём в наш SFTP чтобы перемещаться по папкам сервера. Сверху вы сможете увидеть текущий путь в котором вы находитесь, меняем его на путь /etc/mysql/mariadb.conf.d/ там располагается конфигурация нашего MySQL базы данных.
Открываем файл 50-server.cnf вам потребуется это сделать через какой-то редактор кода, в Termius это делается через правую кнопку мыши и Open with... где в дальнейшем выбирается наш редактор кода. В файле находим:
Может быть написан любой другой адрес, но главное нам это добавить решётку перед bind-address:
Сохраняем! И не забываем загрузить на сервер (Upload).
После изменения конфигурации MySQL сервера, не забывайте его перезапускать командой:
Готово! Теперь у нас есть база данных, куда вы можете заливать нужные вам данные!
Перейдём в его директорию, при помощи команды:
И напишем команду чтобы узнать путь:
Запоминаем что нам написало, так как по этому пути у нас располагается наш сервер.
Сначала создаём у себя на компьютере файл с расширением .service, название у него должно быть ragemp-server. В итоге файл будет ragemp-server.service
Заходим в его содержимое и вставляем этот код:
Возможно вам придётся поменять путь на строчках WorkingDirectory и ExecStart.
Сохраняем файл! Он нам послужит сервисом, который нам будет запускать/выключать/перезапускать сервер.
Данный файл нужно закинуть на наш хостинг по пути /etc/systemd/system/ это можно сделать через SFTP
Теперь в нашем терминале хостинга перезапускаем список сервисов командой:
И у нас появляются команды для действия с сервером
Создан для (Новогодний конкурс 2024: Развиваем портал вместе)
В мануале не объяснены тонкости защиты хостинга, он рассчитан на новичков!
В мануале будет рассказано:
- Где взять версию сервера для Linux
- Как загрузить сервер на хостинг
- Как загрузить свой мод на хостинг
- Как поставить базу данных
- Как администрировать сервер
Где взять версию сервера для Linux
Самым частым вопросом будет, а где же его взять? Очень легко и просто. Скорее всего он у вас уже есть как это не странно. Располагается он по пути RAGEMP/server-files/linux_x64.tar.gz. Это архив для нашего базового пустого сервера, там не будет вашего кода/мода.Если же у вас нет данной папки, то значит вы не скачивали сам базовый сервер, чтобы это сделать идём в файл по пути RAGEMP/config.xml и заменяем содержимое на:
XML:
<?xml version="1.0" encoding="UTF-8"?>
<channel>prerelease_server</channel>
Мы заменили версию нашего RAGEMP на серверную, что позволит нам скачать официальный последний сервер RAGE MP. Да и этот файл отвечает за смену версий, таким образом вы можете использовать тестовые ветки которые иногда выпускаются в новостях официального дискорда.
Чтобы сервер скачался, открываем лаунчер RAGE MP и ожидаем когда завершиться загрузка. Готово! Теперь у нас появляется папка RAGEMP/server-files.
Да его можно получить по ссылке, но это перестраховка
Как загрузить сервер на хостинг
Важно!
Установка сервера должна осуществляться на Linux с Debian 11 так как сам сервер рейджа рассчитан на этот дистрибутив линукса! Иначе у вас могут появиться проблемы с утечками памяти.
Для начала конечно нам нужно подключиться к хостингу. У нас есть 2 пути по SSH и FTP, но я расскажу при помощи SSH так как он позволит сразу делать манипуляции с файлами которые нам нужно будет делать через командную строчку.
SSH
Сетевой протокол прикладного уровня, позволяющий производить удалённое управление операционной системой
FTP
Протокол передачи файлов по сети
Но SSH не передаёт файлы, для этого используется SFTP это тот же FTP, но который работает на основе SSH.
SFTP
Протокол прикладного уровня передачи файлов, работающий поверх безопасного канала
В данном мануале я буду пользоваться программой Termius (Перейти) для подключения к хостингу, в ней конечно нужно зарегистрироваться, но она очень удобная!
Создаём подключение к хостингу с протоколом SSH и вводим данные (IP-Адрес, Логин, Пароль) и пытаемся подключиться к хостингу! Если вас не подключит возможно несколько вариантов:
Возможные ошибки
Неправильно указаны данные подключения
Скорее всего вы подключаетесь по неправильным данным, например по другому протоколу FTP
Защита SSH-ключом
На вашем хостинге может стоять дополнительная защита в виде SSH-ключа, он помогает минимизировать возможность взлома, в общем не хватит пароля чтобы подключиться. На счёт этого вопроса вам нужно будет поискать в интернете, это слишком обширная тема.
Если у вас получилось! Поздравляю! Теперь переключаемся на протокол SFTP чтобы загрузить наш архив сервера. В Termius слева выбирается SFTP -> Select Host -> Выбираем наше подключение, готово!
Как только мы подключились мы видим нашу домашнюю директорию, это личный каталог пользователя в операционной системе, где находятся его данные и настройки. Мышкой перекидываем в это место наш архив полученный в первом этапе (linux_x64.tar.gz). Ожидаем пока файл загрузиться на хостинг. После загрузки нужно ввести команду для разархивации сервера. Для этого возвращаемся в SSH чтобы вводить команды.
Важно!
Вставка команд обычно в программах по типу терминала производиться через CTRL + SHIFT + V
Вводим команду:
Код:
tar -zxvf linux_x64.tar.gz
tar
Команда для управления архивами, флаг -zxvf в ней позволяет разархивировать архив по пути
Флаг
Это то что вводиться после команды чтобы мы могли конкретизировать наши действия. Допустим существует обобщённая команда server и в ней будут флаги:
-restart
Она перезапустит сервер (server -restart)
-start
Запустит сервер (server -start)
-stop
Выключить сервер (server -stop)
Такой команды не существует! Это как пример
Всё! Наш сервер был успешно разархивирован в папку ragemp-srv. Перейдя в SFTP можем её увидеть и посмотреть содержимое, а теперь удаляем этот архив, он нам больше не понадобиться:
Код:
rm linux_x64.tar.gz
rm
Это команда для удаление файла по пути
Для того чтобы в последующих пунктах устанавливать дополнительные утилиты нужно обязательно ввести команду:
Код:
apt-get update
Она нам обновит список доступных утилит, откуда мы будем их скачивать
Попытаемся запустить сервер! Переходим в директорию нашего сервера:
Код:
cd ragemp-srv
cd
Команда для перемещения по директориям, указывается относительный путь
И запускаем его следующей командой:
Код:
./ragemp-server
Возможные ошибки
./ragemp-server: error while loading shared libraries: libatomic.so.1: cannot open shared object file: No such file or directory
Это обозначает что у вас не хватает библиотеки для запуска сервера, чтобы её установить нужно написать команду:
Код:
apt-get install libatomic1
permission denied: ./ragemp-server
У вас не хватает доступа для запуска сервера, нужно выставить права у файла на запуск, команда:
Код:
chmod a+x ./ragemp-server
Наш сервер должен был успешно запуститься если вы делали всё пошагово как написано! Чтобы его закрыть нужно нажать на сочетание CTRL + C.
Важно!
Такой подход запуска сервера не позволяет его оставлять запущенным когда вы закроете консоль. Как этого избежать будет объяснено в пункте Как администрировать сервер.
Если мы попытаемся подключиться на сервер у нас не получиться (IP-Адрес:22005) Почему? Наш сервер изначально блокирует порты, нам нужно разблокировать их, а именно 22005 и 22006. Сервер всегда занимается 2 порта, текущий и последующий. Потому что данные закачки передаются на следующей порте (22006).
Важно!
В некоторых командах вам будет ограничен доступ, скорее всего вы находитесь не на root аккаунте, для этого вам требуется написать перед командой sudo, что позволит выполнить команду от супер-пользователя. Например:
Код:
sudo apt-get install package-name
Для открытия порта, скачиваем утилиту для легкого менеджмента портов:
Код:
apt-get install ufw
Соглашаемся со скачкой данных написав заглавную Y и ожидаемся окончания.
Теперь у нас имеется утилита для разрешения порта, вводим команды:
Код:
ufw allow 22005
ufw allow 22006
Всё, у нас порты открыты! Запускаем сервер заново и присоединяемся.
Как загрузить свой мод на хостинг
На самом деле здесь ничего сложного. Но перед этим обязательно должны быть сделаны все шаги из Как загрузить сервер на хостинг.Если наш сервер использует C# на серверной части нужно его принудительно включить сначала в конфиге. Открываем файл на хостинге ragemp-srv/conf.json это можно сделать через SFTP двойным нажатием на файл. Если файл не отрывается попробуйте нажать правой кнопкой мыши и выбрать Open with... так выберите удобный вам редактор кода.
В файле включаем наш C#, изменяя поля csharp на enabled:
Код:
"csharp" : "enabled",
Нажимаем сочетания клавиш CTRL + C (Сохранить файл) и нам предложат загрузить изменённый файл на сервер. В Termius будет снизу название файла его вес и кнопки Upload (Загрузить) Discard (Отменить).
Теперь при запуске сервера у нас будет возможность использовать серверную часть на языке C# так же рекомендуется отключать серверную часть на JS дабы не делать лишнюю нагрузку. Для этого в файле конфига (ragemp-srv/conf.json) нужно написать это:
Код:
"enable-nodejs": false,
Если вы вставляете это в последнюю строчку то уберите в конце запятую. Вот итоговый файл который у нас получился:
JSON:
{
"maxplayers" : 100,
"name" : "RAGE:MP Unofficial server",
"gamemode" : "freeroam",
"stream-distance" : 500.0,
"announce" : false,
"csharp" : "enabled",
"enable-nodejs": false,
"port": 22005
}
Важно!
Для того чтобы сервер отображался в списке всех серверов в лаунчере включите announce, для этого в конфиге сделайте так:
Код:
"announce" : true,
В этом же файле вы можете настроить свой сервер как он будет отображаться в списке серверов, и ещё например какая вместимость сервера
Теперь у нас есть настроенный сервер, который полностью готов в загрузке вашего мода.
Переходим в ваш мод который у вас расположен на ПК и берём папки в архив (Формата .zip) такие как:
- /client_packages
- /packages
Если у вас сервер на C# ещё нужно взять:
- /dotnet/resources
- /dotnet/settings.xml
Получившийся архив мы перекидываем на наш хостинг, в главную папку сервера ragemp-srv/
Как архив передался его нужно разархивировать. Но для этого нам нужна дополнительная утилита, скачиваем командой:
Код:
apt-get install unzip
Если нам предложат согласиться нажимаем Y. Теперь мы в терминале обязательно должны находиться в папке с сервером (ragemp-srv) переместиться можно через команду cd о которой говорилось ранее.
Разархивируем архив командой:
Код:
unzip название_архива.zip
Нам предложит заменить файлы, соглашаемся нажатием на A (заменить все файлы из архива).
Готово! Теперь запускаем сервер и мод на вашем хостинге. Но если у вас ещё на нём есть база данных, вам нужно прочитать следующий пункт обязательно!
Как поставить базу данных
В этом разделе будет рассказано как поставить самую популярную базу данных MySQL. Мы будем использовать MariaDB дабы легче и быстрее всё это сделать. Да и в общем эта СУБД лучше обычного MySQLПереходим в терминал, и скачиваем саму базу данных командой:
Код:
apt-get install mariadb-server
Подтверждаем скачивание заглавной буквой Y и ожидаем когда оно скачается.
После скачки нам нужно настроить саму базу данных, пишем команду:
Код:
mysql_secure_installation
Первое предложение это ввод вашего пароля от root аккаунта хостинга, вводим его. Учитывайте что вы не будете видеть какой пароль вы набираете.
Следующий шаг защита unix_socket, она нам не требуется, пишем n.
Дальше предложат сменить пароль для root аккаунта базы данных. Соглашаемся написав заглавную букву Y. Вам нужно будет написать его 2 раза. Учитывайте что вы не будете видеть какой пароль вы набираете. Этот пароль нам нужен будет для конфигурации подключения базы данных сервера!
Дальше у нас начнутся высвечиваться предложения на которые мы должны соглашаться или не соглашаться.
Remove anonymous users? Удалить анонимных пользователей. Удаляем, пишем заглавный Y
Disallow root login remotely? Запретить удаленный вход с root-правами. В основном все сервера это запрещают, мы тоже так поступим. Запрещаем, пишем заглавный Y
Remove test database and access to it? Удалить тестовую базу данных и доступ к ней? Удаляем, пишем заглавный Y
Reload privilege tables now? Перезагрузить таблицы привилегий сейчас? Перезагружаем, пишем заглавный Y
Мы инициализировали базу данных, теперь нам нужно настроить к ней подключение, чтобы мы могли управлять с своего компьютера.
Вводим команду mysql для написания SQL запросов прямо в терминале:
Код:
mysql
Теперь мы в режиме написания запросов. Создаём пользователя для подключения, вводим в терминал:
SQL:
CREATE USER 'root'@'ваш_ip' IDENTIFIED BY 'ваш_пароль';
И выдаём ему все права root, вводим в терминал:
SQL:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'ваш_ip' WITH GRANT OPTION;
FLUSH PRIVILEGES;
И выходим из режима запросов, вводим в терминал:
SQL:
EXIT;
Осталось разрешить доступ к базе данных с других IP-Адресов, это конечно не очень безопасно, но один пользователь с нашим IP должен помочь.
Идём в наш SFTP чтобы перемещаться по папкам сервера. Сверху вы сможете увидеть текущий путь в котором вы находитесь, меняем его на путь /etc/mysql/mariadb.conf.d/ там располагается конфигурация нашего MySQL базы данных.
Открываем файл 50-server.cnf вам потребуется это сделать через какой-то редактор кода, в Termius это делается через правую кнопку мыши и Open with... где в дальнейшем выбирается наш редактор кода. В файле находим:
Код:
bind-address = 127.0.0.1
Может быть написан любой другой адрес, но главное нам это добавить решётку перед bind-address:
Код:
# bind-address = 127.0.0.1
Сохраняем! И не забываем загрузить на сервер (Upload).
После изменения конфигурации MySQL сервера, не забывайте его перезапускать командой:
Код:
systemctl restart mariadb
Готово! Теперь у нас есть база данных, куда вы можете заливать нужные вам данные!
Данные для подключения с вашего компьютера:
- Адрес: IP-Вашего хостинга
- Пользователь: root
- Пароль: Тот который мы делали при создании пользователя через терминал (CREATE USER)
Данные для подключения для вашего сервера:
- Адрес: 127.0.0.1
- Пользователь: root
- Пароль: Который мы вводили при инициализации базы данных (mysql_secure_installation)
Как администрировать сервер
Данный раздел объяснит вам как содержать сервер на этой операционной системе. Здесь впрочем всё легче чем на Windows. Для начала нам нужно узнать путь до нашего сервера.Перейдём в его директорию, при помощи команды:
Код:
cd ~/ragemp-srv
И напишем команду чтобы узнать путь:
Код:
pwd
Запоминаем что нам написало, так как по этому пути у нас располагается наш сервер.
Сначала создаём у себя на компьютере файл с расширением .service, название у него должно быть ragemp-server. В итоге файл будет ragemp-server.service
Заходим в его содержимое и вставляем этот код:
Код:
[Unit]
Description=Rage MP server
After=network.target
StartLimitIntervalSec=0
[Service]
Type=simple
Restart=always
RestartSec=1
User=root
WorkingDirectory=/root/ragemp-srv/
ExecStart=/root/ragemp-srv/ragemp-server
[Install]
WantedBy=multi-user.target
Возможно вам придётся поменять путь на строчках WorkingDirectory и ExecStart.
Сохраняем файл! Он нам послужит сервисом, который нам будет запускать/выключать/перезапускать сервер.
Данный файл нужно закинуть на наш хостинг по пути /etc/systemd/system/ это можно сделать через SFTP
Теперь в нашем терминале хостинга перезапускаем список сервисов командой:
Код:
systemctl daemon-restart
И у нас появляются команды для действия с сервером
Запуск сервера
Код:
systemctl start ragemp-server
Выключение сервера
Код:
systemctl stop ragemp-server
Перезапустить сервер
Код:
systemctl restart ragemp-server
Состояние сервера и его 10 последних строчек лога
Код:
systemctl status ragemp-server
Все логи сервера
Код:
journalctl -e -u ragemp-server
Важно!
Если сервер выключиться, он сам будет пытаться подняться, так что авто-рестарт никакой вам не нужен, он здесь уже встроен!
Заключение
Спасибо что прочитали мануал, я потратил очень много времени на его написание, и для достоверности арендовал отдельный хостингСоздан для (Новогодний конкурс 2024: Развиваем портал вместе)