Я бы определенно рекомендовал перенести ваши настройки за пределы среды Windows, так как вам будет гораздо проще разместить сервер PHP, et c. в среде Linux.
Конечно, я не знаком с MineCraft, но похоже, что у вас есть пакетный файл, который просто запускает Java JAR, что можно сделать с любого компьютера с JRE установлен. Java консольные приложения считывают ввод в STDIN процесса и вывод в STDOUT для любого вывода, генерируемого приложением. Это невероятно легко понять в среде Ubuntu.
Например, допустим, вы устанавливаете стандартный стек LAMP на бесплатную sh установку Ubuntu. У вас будет PHP для запуска процесса на стороне сервера и Apache для размещения любого веб-интерфейса, который вы решите построить. Сосредоточив внимание на интерфейсе и бэкэнде, я бы, вероятно, попытался настроить API в PHP, используя Slim или другую облегченную среду. В конечной точке API, которую вы используете для запуска вашего сервера, это будет выглядеть примерно так:
exex('screen -d -m -S ServerOne');
exec('screen -S ServerOne -p 0 -X stuff "java -Xmx%v1%G -jar spigot.jar nogui > /some_path_to_log^M"');
Первый exec()
создаст сеанс экрана с именем «ServerOne», внутри которого может выполняться серверный процесс. Второй exec()
отправит команду, необходимую для запуска вашего серверного процесса внутри сеанса экрана. По сути, это будет запускать ваш сервер асинхронно с вашим PHP сценарием и записывать вывод по указанному пути. Зная, где ожидать вывода, в конечной точке API, которую вы используете для получения журнала, у вас будет что-то вроде:
$logContent = file_get_content('/some_path_to_log');
Наконец, в конечной точке API, которую вы используете для записи команд на сервер, вы будет иметь что-то похожее на:
exec('screen -S ServerOne -p 0 -X stuff "<your_command_here>^M"');
Это запишет в поток STDIN процесса Java вашего сервера, который, в свою очередь, должен интерпретироваться так, как если бы вы на самом деле печатали на клавиатуре консоли. сам по себе.
В этом суть, или, по крайней мере, с чего бы я начал. Есть несколько довольно интересных вещей, которые вы могли бы сделать с WebSockets, чтобы открыть сеанс ввода-вывода в реальном времени для консоли вашего сервера, но это было бы немного сложнее, чем этот пост. Если вам интересно, проверьте Ratchet для PHP или ws для Node.js.
Рассмотрите этот пост ServerFault для более информация об отправке входных данных на сеансы экрана.