diff --git a/.gitignore b/.gitignore index 1531edc..bfba887 100644 --- a/.gitignore +++ b/.gitignore @@ -6,3 +6,6 @@ build/ # Temp files *.*~ + +# Other +rst-help.txt diff --git a/source/_static/dotnet_directlink.png b/source/_static/dotnet_directlink.png new file mode 100644 index 0000000..0733c40 Binary files /dev/null and b/source/_static/dotnet_directlink.png differ diff --git a/source/_static/powershell_build_packaging.png b/source/_static/powershell_build_packaging.png new file mode 100644 index 0000000..49bf1b0 Binary files /dev/null and b/source/_static/powershell_build_packaging.png differ diff --git a/source/_static/powershell_run_packaging.png b/source/_static/powershell_run_packaging.png new file mode 100644 index 0000000..2816b3e Binary files /dev/null and b/source/_static/powershell_run_packaging.png differ diff --git a/source/_static/ss14_server_run.png b/source/_static/ss14_server_run.png new file mode 100644 index 0000000..b97edf4 Binary files /dev/null and b/source/_static/ss14_server_run.png differ diff --git a/source/build-for-prod.rst b/source/build-for-prod.rst new file mode 100644 index 0000000..d6b5973 --- /dev/null +++ b/source/build-for-prod.rst @@ -0,0 +1,157 @@ +Сборка и запуск удалённого сервера +################################## + +Данная инструкция описывает способ сборки **Space Station 14** +из исходных кодовов ("исходники") для запуска на удалённом сервере. + +.. note:: + - Предполагается, что читатель умеет собирать сервер :doc:`из исходников `; + - Предполагается, что читатель имеет базовые навыки работы с **Linux** системами; + - Предполагается, что читатель умеет подключаться к удалённому серверу через **SSH**; + - Дання инструкция рассчитана на пользователей операционной системы **Windows**; + - В качестве удалённой операционной системы будет использоваться **Debian 12**. + + +Подготовка релизной сборки +************************** + +1. Открываем **PowerShell** в папке, в которой находятся исходные коды **Space Station 14**. + +2. Выполняем команду по подготовке встроенного сборщика + + .. code-block:: + + dotnet build Content.Packaging --configuration Release + + .. image:: _static/powershell_build_packaging.png + :alt: Сборка "сборщика" + +3. Выполняем релизную сборку Сервера + + .. code-block:: + + dotnet run --project Content.Packaging server --platform linux-x64 --hybrid-acz + + .. image:: _static/powershell_run_packaging.png + :alt: Запуск сборщика + +В результате в папке ``release`` будет лежать два архива, но нас интересует +только один из них - ``SS14_Server_linux-x64.zip``. + + +Настройка удалённого сервера +**************************** + +Установка дополнительных пакетов +================================ + +В консоле удалённого сервера выполняем команду: + +.. code-block:: + + apt-get install -y unzip screen wget + + +Установка .NET 8 +================ + +Нам понадобятся скачать следующие платформы: + +- .NET Runtime 8 +- ASP.NET Core Runtime 8 + +Скачиваем по следующему алгоритму: + +1. Заходим на страницу |link_dotnet| + +2. Выбираем версию для Linux x64 + +3. На странице загрузки копируем прямую ссылку (Direct link) + + .. image:: _static/dotnet_directlink.png + :alt: Страница загрузки .NET 8 + +4. В консоли удалённого сервера выполняем команду загрузки + + .. code-block:: + + cd /root/ + wget 'вставить-сюда-прямую-ссылку' + +Так повторяем для каждой платформы. + +По завершению процедуры, на удалённом сервере в папке ``/root`` должно быть два +архива: + +- ``dotnet-runtime-8.0.5-linux-x64.tar.gz`` +- ``aspnetcore-runtime-8.0.5-linux-x64.tar.gz`` + +Распаковываем их в папку ``/root/dotnet``: + +.. code-block:: + + mkdir /root/dotnet + cd /root + tar -xf dotnet-runtime-8.0.5-linux-x64.tar.gz -C /root/dotnet + tar -xf aspnetcore-runtime-8.0.5-linux-x64.tar.gz -C /root/dotnet + + +Запуск сборки +************* + +Каким способом вы загрузите архив ``SS14_Server_linux-x64.zip`` на ваш удалённый +Linux сервер - не важно. Главное, что бы архив оказался там и с ним можно было +работать. + +.. note:: + + Далее предполагается, что архив на удалённом сервере доступен по пути + ``/root/SS14_Server_linux-x64.zip`` + +Подключаемся по **SSH** к удалённому серверу и распаковываем архив в папку +``/root/ss14``: + +.. code-block:: + + mkdir /root/ss14 + unzip /root/SS14_Server_linux-x64.zip -d /root/ss14/ + +Теперь запускаем ``screen``, чтобы при закрытии ssh-соединения, игровой сервер +продолжал работать: + +.. code-block:: + + screen -S ss14 + +Внутри screen-сессии переходим в папку ``/root/ss14`` и запускаем игровой сервер + +.. code-block:: + + cd /root/ss14 + mkdir data + export DOTNET_ROOT=/root/dotnet + export PATH=${PATH}:$DOTNET_ROOT + chmod +x ./Robust.Server + ./Robust.Server --config-file "./server_config.toml" --data-dir "./data" + +Как только консоль игрового сервера напишет текст вида ``[INFO] root: Server Version 222.4.0.0 -> Ready`` +значит игровой сервер успешно запущен. К нему можно подключаться напрямую по IP +адресу. + +.. image:: _static/ss14_server_run.png + :alt: Запуск игрового сервера + +.. note:: + + - Отключиться от screen-сессии не закрывая её можно сочетанием клавиш :kbd:`CTRL+A`, :kbd:`D` + - Для повторного подключения к screen-сессии, выполните команду + + .. code-block:: + + screen -r + +.. ########################################################################## .. + +.. |link_dotnet| raw:: html + + загрузки данных платформ diff --git a/source/index.rst b/source/index.rst index 2acf87e..42c4a80 100644 --- a/source/index.rst +++ b/source/index.rst @@ -8,3 +8,4 @@ :maxdepth: 2 build-and-run + build-for-prod