Запуск Minecraft-сервера в качестве службы Windows

Введение

Я хотел бы иметь сервер Minecraft, который работает как служба Windows. Думаю есть случаи, когда это может быть полезно. Цель состоит в том, чтобы сервер работал даже в то время когда я не авторизован на компьютере. Теперь у меня есть два сервера, работающие на той же машине, и они прекрасно работают.

Прежде чем мы начнем, вам необходимо скачать следующие файлы:
— Minecraft сервер
— yajsw Wrapper
— Java JRE 6

Я использовал Minecraft Beta 1.3 Сервер и yajsw 10.6 на Windows 2008 Server, но это может работать и с более новыми версиями. Если будет время, тогда будет описан этот же процесс только с версией craftbukkit.

Установка

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

Я, например, создал папку C:\Program Files (x86)\Minecraft\Server1. Теперь переместите minecraft_server.jar в созданную папку. Распакуйте файлы из архива yajsw-beta-10.6.zip в подкаталог yajsw.

На следующем шаге мы должны создать *.bat файл, который запускает сервер с некоторыми параметрами. Откройте ваш любимый текстовый редактор и наберите следующее:
Код:
@ECHO OFF
"C:\Program Files (x86)\Java\jre6\bin\java.exe" -Xmx1024M -Xms1024M -cp "C:\Program Files (x86)\Minecraft\Server1\minecraft_server.jar" net.minecraft.server.MinecraftServer nogui
PAUSE

Сохраните его как run.bat в папку Server1. Первые два параметра определяют, сколько памяти используется для сервера (где -Xms это первоначальный размер памяти и -Xmx максимальный размер памяти). Никогда в качестве значений не указывайте памяти больше, чем на вашем сервере. Параметр -cp назначает путь к классам Java, который указывает на minecraft_server.jar. Есть некоторые обучающие примеры, которые используют опцию -jar вместо этого, однако это плохо работает вместе с yajsw (Вы получите ошибку о неправильном пути к классам).

Теперь вы должны иметь следующую структуру:
Код:
..\Server1\yajsw\…
..\Server1\minecraft_server.bin
..\Server1\run.bat


Запуск

Теперь запустите run.bat (через терминал или двойным кликом по нему). При первом запуске сервер генерирует зону возрождения (spawn) и в каталоге сервера появится несколько папок.

Перейдите в Диспетчер задач (Task-Manager) с помощью нажатия клавиш CTRL+ALT+DEL (одновременно) и перейдите к таблице "Процессы". В окне Диспетчера задач, в верхнем меню выберите "Вид -> Выбрать столбцы…" и активируйте столбец (поставив галочку) "Идентификаторы процесса (PID)". Теперь выберите процесс, называемый "java.exe *32". Если у вас есть более чем один процесс с таким именем, попробуйте временно закрыть все другие службы Java. Вам понадобится PID (Process ID) этого Java процесса.

Теперь перейдите (через командную строку)
Код:
C:\Program Files (x86)\Minecraft\Server1\yajsw\bat

И введите
Код:
genConfig.bat <pid>

(с идентификатором процесса которую вы получили от диспетчера задач в предыдущем шаге).

После этого yajsw создаст конфигурационный файл.

Откройте созданный wrapper.conf из директории yajsw/conf своим любимым текстовым редактором. Файл может быть пустым, если вы сделали что-то не так   Тогда вы должны попытаться сделать предыдущие шаги еще раз.

wrapper.conf

Если это ваш первый или единственный сервер, вы только должны изменить следующие вещи:
Перейдите к строке с
Код:
[…]
# Allow the service to interact with the desktop.
# wrapper.ntservice.interactive=false

# wrapper service user. only for windows. on *nix system this is root.
# see also wrapper.app.account
#wrapper.ntservice.account=
#wrapper.ntservice.user=

и раскомментируйте строку где wrapper.ntservice.user=
Введите имя (логин) существующего пользователя в вашей операционной системы Windows 2008. Пожалуйста, не используйте учетную запись администратора, этим вы рискуете безопасностью компьютера!

После этой строки вы должны будете добавить wrapper.ntservice.password= и пароль который нужен для авторизации выбранного пользователя.

Есть несколько вариантов, которые не являются обязательными. Вы можете изменить Имя службы:
Код:
#********************************************************************
# Оболочка сервиса Windows и свойства Posix Daemon
#********************************************************************
# Название сервиса
wrapper.ntservice.name=MC Server 1

# Отображаемое название сервиса
wrapper.ntservice.displayname=MC Server 1

# Описание сервиса
wrapper.ntservice.description=MC Server 1


Если это второй (или более) Minecraft сервер на вашем компьютере, вам придется изменить строку
Код:
#********************************************************************
# Оболочка системные свойства трея
#********************************************************************
# включает системный трей
wrapper.tray = true

измените на wrapper.tray = false, иначе следующий шаг не будет работать.

Тестирование wrapper.conf

Для проверки конфигурации вы должны перейти в директорию yajsw/bat (через командную строку) и введите следующее:
Код:
runConsole.bat

Если сервер запускается (логи трудно читать, но некоторые данные вы можете увидеть при запуске run.bat из предыдущих шагов) значит вы все сделали абсолютно верно.

Установка службы

Чтобы установить службу запустите installService.bat из директории yajsw/bat. Теперь служба должна появиться на экране Windows Services (Службы Windows), вызвать который можно с помощью "Пуск —> Выполнить… —> services.msc"

Мой сервер называется "MC Server 1" в wrapper.conf, это именно то, что появилось в списке Служб Windows.

Выберите сервер (название службы которое относится к серверу) нажмите на него правой кнопкой мыши и выберите "пуск" (должно быть первое меню сверху).
Сервер должен изменить свой статус на "работает". Оно должно так и оставаться иначе вы сделали что-то не так (допустили где-то ошибку)

Firewall (Брандмауэр)

Чтобы убедиться, что брандмауэр Windows, позволяет проход трафика через Minecraft, вы должны добавить порт Minecraft в белый список. Обычно это порт 25565, но это зависит от ваших настроек в файле server.properties который находится в корневой директории вашего Minecraft сервера. Если вы используете несколько серверов, вы должны использовать разные порты для каждого сервера.

Взято отсюда