Dynmap: [Учебное пособие] Настройка автономного веб-сервера с MySQL / SQLite

Созданный на 14 сент. 2019  ·  38Комментарии  ·  Источник: webbukkit/dynmap

Я не видел четких инструкций по запуску автономного сервера с MySQL / SQLite. Вики-страница о том, как настроить автономный веб-сервер, также давно устарела.

Через пару часов ковыряния в dynmap. Вот руководство о том, как запустить автономный веб-сервер на NGINX на сервере * nix.

🔴 ВНИМАНИЕ 🔴
Следуя этому руководству, вы сбросите все данные, если вы _ в настоящее время не_ используете базу данных SQL с dynmap.

Использование MySQL с Dynmap не полностью протестировано сообществом.

В этом руководстве предполагается, что вы немного знакомы с Linux. Если вы не умеете работать с Linux, учиться никогда не поздно!

Если вы используете «хост сервера minecraft». В большинстве случаев вы не сможете настроить автономный веб-сервер с вашим хостом сервера minecraft. Вам нужно будет получить хост веб-сайта или vps для размещения автономного веб-сервера для Dynmap.

Примечания

  • Очень рекомендую вам использовать MySQL вместо SQLite, если у вас есть выбор. Это может потребовать дополнительных шагов, но посмотрите на светлую сторону. Вы можете использовать MySQL с другими плагинами :)

  • В этом руководстве также требуется, чтобы вы использовали sudo. Если у вас нет sudo perms, то вам либо не повезло, либо вы можете арендовать VPS.

  • Если вы используете SQLite, вы не можете разместить автономный веб-сервер на другом сервере / vps. Вам нужно будет перенести базу данных SQLite на сервер MySQL / MariaDB, чтобы разместить автономный сервер на другом сервере / vps. Но это совершенно необязательно, мы все равно расскажем, как настроить автономный веб-сервер на том же сервере, что и сервер minecraft с SQLite.
  • Я не буду рассказывать, как настроить автономный веб-сервер с Windows или Apache, если это не вызывает интереса. В качестве альтернативы вы можете получить дешевый VPS и разместить там веб-сервер, если вы используете MySQL (не SQLite).

Примечание для авторов

Если вы дадите мне разрешение редактировать wiki. Я с радостью внесу свой вклад в вики о том, как настроить автономный веб-сервер и поддерживать его;)

Бонусные уроки

Я расскажу, как заставить автономный веб-сервер работать с прокси-сервером Cloudflare, который является совершенно необязательным. Это НАСТОЯТЕЛЬНО рекомендуется, если вы собираетесь разрешить пользователям входить на сайт dynmap. Если вместо этого вы собираетесь установить сертификат SSL с помощью certbot, не следуйте этой части бонусного руководства.

Я также расскажу, как установить сертификат SSL на веб-сервер NGINX с помощью certbot или другого поставщика, что является совершенно необязательным. Это НАСТОЯТЕЛЬНО рекомендуется, если вы собираетесь разрешить пользователям входить на сайт dynmap. Если вместо этого вы хотите использовать прокси-сервер Cloudflare, не следуйте этой части бонусного руководства.

Плюсы и минусы

Плюсы:

  • Веб-сайт Dynmap будет доступен, даже если сервер minecraft не работает / перезагружается.
  • Снизьте нагрузку на сервер minecraft
  • NGINX имеет лучшую производительность, чем внутренний веб-сервер

Минусы:

  • Довольно неприятно настраивать
  • Нужно немного узнать о Linux

Что мы собираемся рассказать

Мы расскажем о следующих вещах

  • Настройка MySQL / MariaDB (необязательно)
  • Настройка NGINX с поддержкой PHP и SQL
  • Подготовка плагина Dynmap для использования с MySQL / SQLite
  • Настройка автономного сервера для MySQL / SQLite
  • Бонус : настройка прокси-сервера Cloudflare с веб-сервером NGINX (необязательно)
  • Бонус : настройка NGINX с сертификатами ssl (необязательно)
  • Часто задаваемые вопросы находятся в самом низу этого руководства.

Настройка MySQL / MariaDB и NGINX с поддержкой PHP и SQL на вашем сервере

Для начала вам необходимо установить веб-сервер на сервере, на котором вы хотите разместить автономный веб-сайт dynmap. В этой части руководства также рассматривается установка MySQL на сервере.

Если вы по какой-то причине хотите использовать SQLite, вы можете просто установить NGINX без MySQL / MariaDB. НО NGINX должен находиться на том же сервере, где размещен сервер minecraft.

Если вы используете хост веб-сайта или хост Minecraft. См. Примечания под ссылками на руководство.

Где мне установить MySQL / MariaDB?

Обычно MySQL следует устанавливать на том же сервере, что и сервер minecraft. Вы можете использовать тот же сервер MySQL с плагинами, которые используют MySQL. MySQL будет использоваться подключаемым модулем Dynmap для сохранения / загрузки данных, которые веб-сервер также будет читать / записывать.

Как правило, есть больше преимуществ, если сервер MySQL / MariaDB находится на том же сервере / сети, что и сервер minecraft, поскольку задержка будет ниже.

Учебники

Существует бесчисленное множество руководств по настройке nginx / MySQL / MariaDB в Интернете. Вот несколько ссылок на руководства по их настройке с некоторыми ОС Linux.

Не волнуйтесь, если в руководстве вам предлагается установить MariaDB, поскольку это почти то же самое, что и MySQL.

Ссылки на учебные пособия

1 Источник

Проверьте, обслуживает ли ваш веб-сервер веб-страницу, введя IP-адрес веб-сервера в веб-браузер. Если ничего не появляется, возможно, ваш брандмауэр блокирует порт или вы не запустили сервер nginx.

Примечания

  • Если у вас уже есть веб-сервер, вы можете пропустить этот шаг. НО вам все еще нужен сервер MySQL, если у вас его еще нет.
  • Если вы используете хостинг веб-сайта, как указано выше. Вы можете пропустить этот шаг, НО вам по-прежнему нужен сервер MySQL.
  • Если вы используете хост Minecraft, вам потребуется хостинг VPS / веб-сайта. Надеюсь, ваш хост minecraft также включает в себя сервер MySQL с вашим пакетом. Если нет, я думаю, вы можете установить сервер MySQL на VPS, НО УБЕДИТЕСЬ, ЧТО У ВАС МНОГО МЕСТА .

Настройка MySQL (пропустите этот шаг, если вы используете SQLite)

Теперь, чтобы настроить сервер MySQL / MariaDB.

Рекомендуется создать нового пользователя / пароль с ограниченными правами для каждого приложения.

Если вы настраиваете внешний веб-сервер, вы также можете настроить брандмауэр (iptables / firewalld / ufw / etc), чтобы разрешить только веб-серверу подключаться к базе данных.

Настройка базы данных MySQL / MariaDB

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

Создание новой базы данных в MySQL / MariaDB

mysql -u root -p
[Enter mysql root password if there is one]
mysql> CREATE DATABASE <dynmap_database_name>;
mysql> exit

Пример (щелкните, чтобы развернуть)

mysql -u root -p
[Enter mysql root password if there is one]
mysql> CREATE DATABASE MyDynmapDatabase;
mysql> exit

Добавить новых пользователей

Примечание
Если сервер MySQL находится на том же сервере, что и сервер minecraft. <minecraftserver_ip> должно быть просто localhost

mysql -u root -p
[Enter mysql root password if there is one]
mysql> CREATE USER '<webserver_user>'@'<webserver_ip>' IDENTIFIED BY '<password>';
mysql> CREATE USER '<dynmap_user>'@'<minecraftserver_ip>' IDENTIFIED BY '<password>';
mysql> GRANT CREATE, DELETE, INSERT, SELECT, UPDATE ON <dynmap_database>.* TO '<webserver_user>'@'<webserver_ip>';
mysql> GRANT CREATE, DELETE, INSERT, SELECT, UPDATE ON <dynmap_database>.* TO '<dynmap_user>'@'<minecraftserver_ip>';
mysql> FLUSH PRIVILEGES;
mysql> exit

Пример, если веб-сервер и сервер minecraft находятся на одном сервере (щелкните меня, чтобы развернуть)

mysql -u root -p
[Enter mysql root password if there is one]
mysql> CREATE USER 'dynmapwebserver'@'localhost' IDENTIFIED BY 'password1234';
mysql> CREATE USER 'minecraftserver'@'localhost' IDENTIFIED BY 'password5678';
mysql> GRANT CREATE, DELETE, INSERT, SELECT, UPDATE ON MyDynmapDatabase.* TO 'dynmapwebserver'@'localhost';
mysql> GRANT CREATE, DELETE, INSERT, SELECT, UPDATE ON MyDynmapDatabase.* TO 'minecraftserver'@'localhost';
mysql> FLUSH PRIVILEGES;
mysql> exit

Если вы сделали ошибку и вам нужно удалить файл mysql user. Вот как вы удаляете пользователя.

mysql> DROP USER '<user_to_delete>'@'<ip_you_used>';

После того, как вы создадите нового пользователя, попробуйте войти в систему под этим пользователем. (после выхода из системы root-пользователя mysql через "exit")

mysql -u <webserver_user> -p
[Enter user password]
mysql> exit

Привилегии / разрешения MySQL

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

  • ВСЕ ПРИВИЛЕГИИ - предоставить пользователю все привилегии
  • CREATE - позволяет пользователю создавать базы данных / таблицы
  • УДАЛИТЬ - позволяет пользователю удалять строки (данные) из таблицы.
  • DROP - позволяет пользователю удалять базы данных и таблицы.
  • INSERT - позволяет пользователю вставлять строки (данные) в таблицу.
  • SELECT - позволяет пользователю читать из базы данных
  • ОБНОВЛЕНИЕ - позволяет пользователю обновлять данные в таблице.

Подготовка плагина Dynmap

Теперь изменим некоторые настройки в конфигурации из плагина.

Установить Dynmap

Установите последнюю версию dynmap на сервер. Последняя версия должна работать с версией minecraft от 1.10 до 1.14.

Включите и выключите

Включите сервер minecraft, затем остановите сервер. В папке plugins должна быть новая папка с именем dynmap .

СДЕЛАЙТЕ РЕЗЕРВНУЮ КОПИЮ файла configuration.txt ! Просто сделайте копию и назовите ее как-нибудь вроде configuration.txt.backup .

Откройте файл конфигурации configuration.txt чтобы мы могли изменить некоторые настройки.

Смена хранилища

Измените раздел хранилища в конфигурации с

storage:
  # Filetree storage (standard tree of image files for maps)
  type: filetree
  # SQLite db for map storage (uses dbfile as storage location)
  #type: sqlite
  #dbfile: dynmap.db
  # MySQL DB for map storage (at 'hostname':'port' with flags "flags" in database 'database' using user 'userid' password 'password' and table prefix 'prefix')
  #type: mysql
  #hostname: localhost
  #port: 3306
  #database: dynmap
  #userid: dynmap
  #password: dynmap
  #prefix: ""
  #flags: "?allowReconnect=true"

к

Пример MySQL (щелкните, чтобы развернуть)

storage:
  # Filetree storage (standard tree of image files for maps)
  #type: filetree <- DONT FORGET TO COMMENT THIS OUT
  # SQLite db for map storage (uses dbfile as storage location)
  #type: sqlite
  #dbfile: dynmap.db
  # MySQL DB for map storage (at 'hostname':'port' with flags "flags" in database 'database' using user 'userid' password 'password' and table prefix 'prefix')
  type: mysql
  hostname: <mysql_ip>
  port: <mysql_port>
  database: <mysql_database>
  userid: <dynmap_mysql_user>
  password: <dynmap_mysql_password>
  prefix: "" # Can add prefix for tables if you want
  flags: "?allowReconnect=true"


Пример SQLite (щелкните, чтобы развернуть)

storage:
  # Filetree storage (standard tree of image files for maps)
  #type: filetree <- DONT FORGET TO COMMENT THIS OUT
  # SQLite db for map storage (uses dbfile as storage location)
  type: sqlite
  dbfile: dynmap.db
  # MySQL DB for map storage (at 'hostname':'port' with flags "flags" in database 'database' using user 'userid' password 'password' and table prefix 'prefix')
  #type: mysql
  #hostname: localhost
  #port: 3306
  #database: dynmap
  #userid: dynmap
  #password: dynmap
  #prefix: ""
  #flags: "?allowReconnect=true"

Изменение некоторых настроек компонентов

Прямо под разделом хранилища должен быть раздел под названием
- class: org.dynmap.InternalClientUpdateComponent которые мы будем комментировать.

Так это выглядело бы так:

Раньше (щелкните, чтобы развернуть)

  - class: org.dynmap.InternalClientUpdateComponent
    sendhealth: true
    sendposition: true
    allowwebchat: true
    webchat-interval: 5
    hidewebchatip: true
    trustclientname: false
    includehiddenplayers: false
    # (optional) if true, color codes in player display names are used
    use-name-colors: false
    # (optional) if true, player login IDs will be used for web chat when their IPs match
    use-player-login-ip: true
    # (optional) if use-player-login-ip is true, setting this to true will cause chat messages not matching a known player IP to be ignored
    require-player-login-ip: false
    # (optional) block player login IDs that are banned from chatting
    block-banned-player-chat: true
    # Require login for web-to-server chat (requires login-enabled: true)
    webchat-requires-login: false
    # If set to true, users must have dynmap.webchat permission in order to chat
    webchat-permissions: false
    # Limit length of single chat messages
    chatlengthlimit: 256
  #  # Optional - make players hidden when they are inside/underground/in shadows (#=light level: 0=full shadow,15=sky)
  #  hideifshadow: 4
  #  # Optional - make player hidden when they are under cover (#=sky light level,0=underground,15=open to sky)
  #  hideifundercover: 14
  #  # (Optional) if true, players that are crouching/sneaking will be hidden 
    hideifsneaking: false
    # If true, player positions/status is protected (login with ID with dynmap.playermarkers.seeall permission required for info other than self)
    protected-player-info: false
    # If true, hide players with invisibility potion effects active
    hide-if-invisiblity-potion: true
    # If true, player names are not shown on map, chat, list
    hidenames: false


После (щелкните, чтобы развернуть)

 # - class: org.dynmap.InternalClientUpdateComponent
    #sendhealth: true
    #sendposition: true
    #allowwebchat: true
    #webchat-interval: 5
    #hidewebchatip: false
    #trustclientname: false
    #includehiddenplayers: false
    # (optional) if true, color codes in player display names are used
    #use-name-colors: false
    # (optional) if true, player login IDs will be used for web chat when their IPs match
    #use-player-login-ip: true
    # (optional) if use-player-login-ip is true, setting this to true will cause chat messages not matching a known player IP to be ignored
    #require-player-login-ip: false
    # (optional) block player login IDs that are banned from chatting
    #block-banned-player-chat: true
    # Require login for web-to-server chat (requires login-enabled: true)
    #webchat-requires-login: false
    # If set to true, users must have dynmap.webchat permission in order to chat
    #webchat-permissions: false
    # Limit length of single chat messages
    #chatlengthlimit: 256
  #  # Optional - make players hidden when they are inside/underground/in shadows (#=light level: 0=full shadow,15=sky)
  #  hideifshadow: 4
  #  # Optional - make player hidden when they are under cover (#=sky light level,0=underground,15=open to sky)
  #  hideifundercover: 14
  #  # (Optional) if true, players that are crouching/sneaking will be hidden 
    #hideifsneaking: false
    # If true, player positions/status is protected (login with ID with dynmap.playermarkers.seeall permission required for info other than self)
    #protected-player-info: false
    # If true, hide players with invisibility potion effects active
    #hide-if-invisiblity-potion: true
    # If true, player names are not shown on map, chat, list
    #hidenames: false

Сразу после этого вы раскомментируете раздел прямо под ним.
Вот так это будет выглядеть.

Раньше (щелкните, чтобы развернуть)

  #- class: org.dynmap.JsonFileClientUpdateComponent
  #  writeinterval: 1
  #  sendhealth: true
  #  sendposition: true
  #  allowwebchat: true
  #  webchat-interval: 5
  #  hidewebchatip: false
  #  includehiddenplayers: false
  #  use-name-colors: false
  #  use-player-login-ip: false
  #  require-player-login-ip: false
  #  block-banned-player-chat: true
  #  hideifshadow: 0
  #  hideifundercover: 0
  #  hideifsneaking: false
  #  # Require login for web-to-server chat (requires login-enabled: true)
  #  webchat-requires-login: false
  #  # If set to true, users must have dynmap.webchat permission in order to chat
  #  webchat-permissions: false
  #  # Limit length of single chat messages
  #  chatlengthlimit: 256
  #  hide-if-invisiblity-potion: true
  #  hidenames: false


После (щелкните, чтобы развернуть)

  - class: org.dynmap.JsonFileClientUpdateComponent
    writeinterval: 1
    sendhealth: true
    sendposition: true
    allowwebchat: true
    webchat-interval: 5
    hidewebchatip: false
    includehiddenplayers: false
    use-name-colors: false
    use-player-login-ip: false
    require-player-login-ip: false
    block-banned-player-chat: true
    hideifshadow: 0
    hideifundercover: 0
    hideifsneaking: false
  #  # Require login for web-to-server chat (requires login-enabled: true)
    webchat-requires-login: false
  #  # If set to true, users must have dynmap.webchat permission in order to chat
    webchat-permissions: false
  #  # Limit length of single chat messages
    chatlengthlimit: 256
    hide-if-invisiblity-potion: true
    hidenames: false

Отключение внутреннего веб-сервера

Теперь мы собираемся отключить внутренний веб-сервер, так как он нам больше не нужен.

Найдите disable-webserver в файле конфигурации и измените значение с false на true .

Изменение некоторых URL-адресов для веб-сервера

Мы собираемся изменить некоторые URL-адреса, которые необходимы для работы автономного веб-сервера dynmap. Насколько я знаю, это самая большая часть проблем, с которой у большинства людей были проблемы.

Найдите в файле конфигурации раздел url: . Должно получиться вот так.

Раньше (щелкните, чтобы развернуть)

url:
    # configuration URL
    #configuration: "up/configuration"
    # update URL
    #update: "up/world/{world}/{timestamp}"
    # sendmessage URL
    #sendmessage: "up/sendmessage"
    # login URL
    #login: "up/login"
    # register URL
    #register: "up/register"
    # tiles base URL
    #tiles: "tiles/"
    # markers base URL
    #markers: "tiles/"


После [Пример MySQL] (щелкните, чтобы развернуть)

url:
    # configuration URL
    configuration: "standalone/MySQL_configuration.php"
    # update URL
    update: "standalone/MySQL_update.php?world={world}&ts={timestamp}"
    # sendmessage URL
    sendmessage: "standalone/MySQL_sendmessage.php"
    # login URL
    login: "standalone/MySQL_login.php"
    # register URL
    register: "standalone/MySQL_register.php"
    # tiles base URL
    tiles: "standalone/MySQL_tiles.php?tile="
    # markers base URL
    markers: "standalone/MySQL_markers.php?marker="


После [Пример SQLite] (щелкните, чтобы развернуть)

url:
    # configuration URL
    configuration: "standalone/configuration.php"
    # update URL
    update: "standalone/update.php?world={world}&ts={timestamp}"
    # sendmessage URL
    sendmessage: "standalone/sendmessage.php"
    # login URL
    login: "standalone/login.php"
    # register URL
    register: "standalone/register.php"
    # tiles base URL
    tiles: "standalone/tiles.php?tile="
    # markers base URL
    markers: "standalone/markers.php?marker="

Включите и снова выключите

Запустите сервер minecraft, НО НЕ ВЫКЛЮЧАЙТЕ ЕГО ТОЛЬКО!
Проверьте и посмотрите, есть ли какие-либо проблемы с dynmap, проверив последний журнал. Если проблем нет, выключите сервер.

УВЕДОМЛЕНИЕ

Основная причина, по которой вам нужно запускать и останавливать сервер в самом конце, заключается в том, что Dynmap создает файлы конфигурации для использования веб-сервером. Если вы изменили какие-либо настройки в configuration.txt , то есть вероятность, что файлы конфигурации в plugins/dynmap/web будут изменены.

ЕЩЕ БОЛЬШЕ УВЕДОМЛЕНИЯ

Если вы собираетесь разрешить пользователям входить в dynmap. Вы должны ОБЯЗАТЕЛЬНО установить сертификат SSL или использовать прокси-сервер Cloudflare, чтобы защитить учетные данные от злоумышленников!

Варианты настройки веб-сервера

Теперь приступим к серьезному делу!

Вот несколько вариантов:

Хостинг на одном сервере с сервером minecraft (MySQL / SQLite)

Вариант 1. Вы можете связать веб-сервер с веб-папкой dynmap в папке плагина (проще)
Вариант 2. Скопируйте веб-папку в другое место на сервере (более безопасно).

Хостинг на другом сервере, который не совпадает с сервером minecraft (MySQL)

Единственный вариант : ваш единственный вариант - скопировать веб-папку на сервер, на котором есть веб-сервер.

Хостинг с помощью веб-хостинга (MySQL)

Если вы используете веб-хостинг, такой как hostgator, namecheap, 000webhost и т. Д. Единственный вариант - скопировать веб-папку на веб-хост.
Я не буду добавлять подробностей о том, как это сделать, так как слишком много веб-хостов, которые нужно покрыть.

Общая настройка с веб-сервером NGINX

Прежде чем перейти к следующим разделам с параметрами настройки. Мы рассмотрим общую настройку веб-серверов NGINX.

Удаление конфигурации веб-сайта по умолчанию

Если вы установили новый веб-сервер NGINX. Мы хотим удалить конфигурацию веб-сайта по умолчанию и добавить нашу собственную конфигурацию. Если у вас уже был NGINX до этого урока и вы знаете, что делаете. Перейдите к следующему разделу с вариантами настройки веб-сайта dynmap.

Конфигурация по умолчанию обычно находится в /etc/nginx/sites-available/ и /etc/nginx/sites-enabled .

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

sudo cp /etc/nginx/sites-available/default /etc/nginx/sites-available/dynmap

Теперь удалите конфигурацию по умолчанию из sites-enabled чтобы отключить конфигурацию сайта по умолчанию и перезапустить веб-сервер nginx.

sudo rm /etc/nginx/sites-enabled/default
sudo service nginx restart

Настройка веб-сервера, который находится на том же сервере, что и сервер minecraft

Если вы размещаете свой собственный веб-сервер NGINX на том же сервере, что и сервер Minecraft. Это правильный раздел для вас!

Примечание
Убедитесь, что вы выполнили общие настройки с NGINX, прежде чем продолжить это руководство.

Вариант 1. Связывание веб-сервера с папкой динамической карты (щелкните, чтобы развернуть)

Если вы хотите настроить веб-сервер простым (но не слишком безопасным) способом. Это правильный вариант для вас! Но я все же настоятельно рекомендую вам следовать варианту 2, поскольку он более безопасен, чем вариант 1.

Плюсы:

  • На одну команду меньше для выполнения (если вам нравятся такие вещи)
  • Не нужно копировать файлы конфигурации, если вы меняете конфигурацию динамической карты

Минусы:

  • Менее безопасен по сравнению с вариантом 2 (спорно)

Редактирование файла конфигурации сайта

Начать редактирование файла конфигурации dynmap в /etc/nginx/sites-available/dynmap

sudo nano /etc/nginx/sites-available/dynmap
OR
sudo vi /etc/nginx/sites-available/dynmap

Файл конфигурации должен выглядеть примерно так. Измените значения в конфиге по своему вкусу

server {
        listen 80 default_server;
        listen [::]:80 default_server;
        server_name map.example.com;

        root /home/<USERNAME>/<MINECRAFTSERVER>/plugins/dynmap/web;

        index index.php index.html index.htm;

        location / {
                # First attempt to serve request as file, then
                # as directory, then fall back to displaying a 404.
                try_files $uri $uri/ =404;
        }

        # pass PHP scripts to FastCGI server

        location ~ \.php$ {
                include snippets/fastcgi-php.conf;

                # With php-fpm (or other unix sockets):
                fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
        #       # With php-cgi (or other tcp sockets):
        #       fastcgi_pass 127.0.0.1:9000;
        }

        # deny access to .htaccess files, if Apache's document root
        # concurs with nginx's one
        #
        location ~ /\.ht {
                deny all;
        }
}
  • Не забудь поменятьна имя пользователя linux, в котором есть папка сервера minecraft.
  • Не забудь поменятьв папку, в которой находится сервер minecraft

Пример:

        root /home/someuser/minecraft/servers/creative/plugins/dynmap/web;

Вариант 2. Копирование веб-папки в другое место

Если вы хотите настроить веб-сервер более безопасным способом. Это правильный вариант для вас!

Плюсы:

  • Более безопасный, чем вариант 1 (спорно)

Минусы:

  • Необходимо скопировать некоторые файлы конфигурации в новое место, если вы изменили конфигурацию динамической карты

Копирование файлов в новое место

Скопируйте веб-файлы динамической карты в другое место

sudo cp -r /home/<USERNAME>/<MINECRAFTSERVER>/plugins/dynmap/web/ /var/www/dynmap/
  • Не забудь поменятьна имя пользователя linux, в котором есть папка сервера minecraft.
  • Не забудь поменятьв папку, в которой находится сервер minecraft

Пример:

sudo cp -r /home/MyUsername/minecraft/servers/creative/plugins/dynmap/web/ /var/www/dynmap/

Редактирование файла конфигурации сайта

Начать редактирование файла конфигурации dynmap в /etc/nginx/sites-available/dynmap

sudo nano /etc/nginx/sites-available/dynmap
OR
sudo vi /etc/nginx/sites-available/dynmap

Файл конфигурации должен выглядеть примерно так. Измените значения в конфиге по своему вкусу

server {
        listen 80 default_server;
        listen [::]:80 default_server;
        server_name map.example.com;

        root /var/www/dynmap;

        index index.php index.html index.htm;

        location / {
                # First attempt to serve request as file, then
                # as directory, then fall back to displaying a 404.
                try_files $uri $uri/ =404;
        }

        # pass PHP scripts to FastCGI server

        location ~ \.php$ {
                include snippets/fastcgi-php.conf;

                # With php-fpm (or other unix sockets):
                fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
        #       # With php-cgi (or other tcp sockets):
        #       fastcgi_pass 127.0.0.1:9000;
        }

        # deny access to .htaccess files, if Apache's document root
        # concurs with nginx's one
        #
        location ~ /\.ht {
                deny all;
        }
}

Теперь давайте сделаем сервер динамической карты общедоступным! (для обоих вариантов 1 и 2)

После того, как вы выполнили шаги в Варианте 1/2. Мы собираемся сделать ярлык конфигурации веб-сервера dynmap и поместить его в папку.

ln -s /etc/nginx/sites-available/dynmap /etc/nginx/sites-enabled/dynmap

Убедитесь, что файлы конфигурации не содержат ошибок!

nginx -t -c /etc/nginx/sites-available/dynmap

и перезапустите сервер, если нет проблем.

sudo service nginx restart

Так и должно быть!

Поместите IP-адрес веб-сервера в свой веб-браузер, вы должны увидеть динамическую карту. Поскольку он будет пустым, вы можете начать рендеринг тайлов, присоединившись к серверу и выполнив команду /dynmap fullrender <worldname>

Настройка веб-сервера, размещенного на другом сервере

Если вы размещаете свой собственный веб-сервер NGINX на другом сервере, чем сервер, на котором размещен сервер minecraft. Это правильный раздел для вас!

Примечание

  • Убедитесь, что вы выполнили общие настройки с NGINX, прежде чем продолжить это руководство.
  • Конфигурации веб-сайта должны быть на сервере, на котором размещен веб-сервер NGINX, а не на сервере, на котором размещен сервер minecraft!

Плюсы:

  • Даже безопаснее, чем другие методы

Минусы:

  • Необходимо скопировать некоторые файлы конфигурации в новое место, если вы изменили конфигурацию динамической карты

Копирование файлов в новое место

Скопируйте веб-файлы динамической карты в другое место

Выполните эту команду на сервере, на котором размещен сервер minecraft. Эта команда скопирует папку с сервера minecraft на веб-сервер. Он попросит вас ввести пароль к веб-серверу.

sudo scp -r /home/<USERNAME>/<MINECRAFTSERVER>/plugins/dynmap/web <WEBSERVER_USERNAME>@<WEBSERVER_IP>:/var/www/dynmap
  • Не забудь поменятьна имя пользователя linux сервера, на котором находится папка сервера minecraft.
  • Не забудь поменятьв папку, в которой находится сервер minecraft
  • Не для

Пример:

sudo scp -r /home/SomeUserName1/minecraft/servers/creative/plugins/dynmap/web [email protected]:/var/www/dynmap

Редактирование файла конфигурации сайта

Начать редактирование файла конфигурации dynmap в /etc/nginx/sites-available/dynmap

sudo nano /etc/nginx/sites-available/dynmap
OR
sudo vi /etc/nginx/sites-available/dynmap

Файл конфигурации должен выглядеть примерно так. Измените значения в конфиге по своему вкусу

server {
        listen 80 default_server;
        listen [::]:80 default_server;
        server_name map.example.com;

        root /var/www/dynmap;

        index index.php index.html index.htm;

        location / {
                # First attempt to serve request as file, then
                # as directory, then fall back to displaying a 404.
                try_files $uri $uri/ =404;
        }

        # pass PHP scripts to FastCGI server

        location ~ \.php$ {
                include snippets/fastcgi-php.conf;

                # With php-fpm (or other unix sockets):
                fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
        #       # With php-cgi (or other tcp sockets):
        #       fastcgi_pass 127.0.0.1:9000;
        }

        # deny access to .htaccess files, if Apache's document root
        # concurs with nginx's one
        #
        location ~ /\.ht {
                deny all;
        }
}

Теперь давайте сделаем сервер динамической карты общедоступным!

После того, как вы выполнили шаги. Мы собираемся сделать ярлык конфигурации веб-сервера dynmap и поместить его в папку.

ln -s /etc/nginx/sites-available/dynmap /etc/nginx/sites-enabled/dynmap

Убедитесь, что файлы конфигурации не содержат ошибок!

nginx -t -c /etc/nginx/sites-available/dynmap

и перезапустите сервер, если нет проблем.

sudo service nginx restart

Так и должно быть!

Поместите IP-адрес веб-сервера в свой веб-браузер, вы должны увидеть динамическую карту. Поскольку он будет пустым, вы можете начать рендеринг тайлов, присоединившись к серверу и выполнив команду /dynmap fullrender <worldname>

Настройка веб-сервера, размещенного на веб-хосте

Если вы используете веб-хостинг, поскольку не хотите создавать его самостоятельно. Это правильный раздел для вас!

Копирование веб-папки на веб-хостинг

Скопируйте файлы с сервера minecraft в папку на вашем компьютере. Файлы, которые вы собираетесь копировать, должны находиться в plugins/dynmap/web на сервере minecraft.

Скопируйте файлы на свой веб-хост, желательно в новый каталог, если это не будет выделенный веб-хост dynmap.

Заканчивать!

Ага, правда! Готово.

Бонусные уроки

Если вы установили свой собственный веб-сервер NGINX, вы можете следовать этой части бонусного руководства, чтобы обезопасить свой веб-сервер с помощью логинов dynmap. ВАМ СЛЕДУЕТ ВСЕГДА осторожно обращаться с учетными данными пользователя, если вы разрешаете вход в систему с помощью Dynmap.

Вы можете воспользоваться одним из трех вариантов, чтобы обезопасить свой веб-сервер.

Установка БЕСПЛАТНОГО SSL-сертификата с CertBot

Вы можете просто следовать этим инструкциям на веб-сайте certbot. Это самый простой способ получить сертификат SSL для веб-сайта.

Отметим, что сертификаты certbot истекают быстрее, чем у других поставщиков, но у них есть автоматический способ продления ваших сертификатов, если вы будете следовать их инструкциям о том, как это сделать.

Установка SSL-сертификата от другого провайдера

В качестве альтернативы вы можете получить сертификат SSL от другого поставщика, например NameCheap. Загрузите публичную сертификацию и закрытый ключ от провайдера. ВЫ НИКОГДА НЕ ДОЛЖНЫ ДЕЛИТЬСЯ ЧАСТНЫМ КЛЮЧОМ ДРУГОМУ ЛИЦУ ИЛИ ПРЕДОСТАВЛЯТЬ ЕГО ПУБЛИЧНЫЙ . Это строго для вашего веб-сервера и не должно быть доступным для всех.

Поместите файл сертификации в /etc/ssl/certs/<certification_file>.pem
и поместите закрытый ключ в /etc/ssl/private/<private_key_file>.pem

Сделайте резервную копию конфигурации веб-сайта, прежде чем вносить какие-либо изменения.

sudo cp /etc/nginx/sites-available/dynmap /etc/nginx/sites-available/dynmap_BACKUP

Если вы получили сообщение об ошибке и вам нужно вернуться назад, выполните эту команду.

sudo cp /etc/nginx/sites-available/dynmap_BACKUP /etc/nginx/sites-available/dynmap

В конфигурации веб-сайта NGINX посмотрите на различия между вашей текущей конфигурацией и добавьте изменения, которые вы видите из этого примера конфигурации.

server {
        listen 80 default_server;
        listen [::]:80 default_server;
        server_name map.example.com;
        return 302 https://$server_name$request_uri;
}

server {
        # SSL configuration

        listen 443 ssl http2;
        listen [::]:443 ssl http2;

        ssl_certificate         /etc/ssl/certs/<certification_file>.pem;
        ssl_certificate_key     /etc/ssl/private/<private_key_file>.pem;

        server_name map.example.com;

        root /var/www/dynmap;

        index index.php index.html index.htm;

        location / {
                # First attempt to serve request as file, then
                # as directory, then fall back to displaying a 404.
                try_files $uri $uri/ =404;
        }

        # pass PHP scripts to FastCGI server

        location ~ \.php$ {
                include snippets/fastcgi-php.conf;

                # With php-fpm (or other unix sockets):
                fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
        #       # With php-cgi (or other tcp sockets):
        #       fastcgi_pass 127.0.0.1:9000;
        }

        # deny access to .htaccess files, if Apache's document root
        # concurs with nginx's one
        #
        location ~ /\.ht {
                deny all;
        }
}

Затем вам просто нужно перезапустить веб-сервер NGINX.

sudo service nginx restart

Перейдите на свой сайт dynmap, и теперь он должен быть безопасным!
Very secure

Настройка NGINX с прокси Cloudflare (последнее обновление: 19 сентября 2019 г.)

Прокси-сервер Cloudflare хорош тем, что у него есть специальная сертификация, предназначенная только для связи между вашим веб-сервером и их сервисами. Вы также можете продлить сертификацию до 15 лет. Однако это просто альтернатива наличию «настоящей» SSL-сертификации.

Сначала войдите в cloudflare и перейдите в домен, для которого вы хотите настроить прокси. Затем перейдите в раздел «SSL / TLS».
cloudflare dashboard

В разделе Origin Certificates нажмите «Создать сертификат».
Выберите Let Cloudflare generate a private key and a CSR и установите Private key type на ECDSA

Добавьте имя хоста map.YOURDOMAIN.com если вы хотите разместить веб-сайт dynmap на map.YOURDOMAIN.com.

Установите срок действия сертификата, какой хотите (15 лет - хороший амирит?).

Нажмите «Далее», и вы должны увидеть на экране новый сертификат SSL и закрытый ключ. Теперь скопируем текст и вставим его в файл через терминал.

Сначала создадим файл сертификата и вставим его в текст. Текст должен начинаться с -----BEGIN CERTIFICATE----- и заканчиваться -----END CERTIFICATE-----

sudo nano /etc/ssl/certs/dynmap_cert.pem
OR
sudo vi /etc/ssl/certs/dynmap_cert.pem

Затем давайте создадим файл закрытого ключа и вставим его в текст. Текст должен начинаться с -----BEGIN PRIVATE KEY----- и заканчиваться -----END PRIVATE KEY-----

sudo nano /etc/ssl/private/dynmap_private_key.pem
OR
sudo vi /etc/ssl/private/dynmap_private_key.pem

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

sudo cp /etc/nginx/sites-available/dynmap /etc/nginx/sites-available/dynmap_BACKUP

Если вы получили сообщение об ошибке и вам нужно вернуться назад, выполните эту команду.

sudo cp /etc/nginx/sites-available/dynmap_BACKUP /etc/nginx/sites-available/dynmap

В конфигурации веб-сайта NGINX посмотрите на различия между вашей текущей конфигурацией и добавьте изменения, которые вы видите из этого примера конфигурации.

server {
        listen 80 default_server;
        listen [::]:80 default_server;
        server_name map.example.com;
        return 302 https://$server_name$request_uri;
}

server {
        # SSL configuration

        listen 443 ssl http2;
        listen [::]:443 ssl http2;

        ssl_certificate         /etc/ssl/certs/dynmap_cert.pem;
        ssl_certificate_key     /etc/ssl/private/dynmap_private_key.pem;

        server_name map.example.com;

        root /var/www/dynmap;

        index index.php index.html index.htm;

        location / {
                # First attempt to serve request as file, then
                # as directory, then fall back to displaying a 404.
                try_files $uri $uri/ =404;
        }

        # pass PHP scripts to FastCGI server

        location ~ \.php$ {
                include snippets/fastcgi-php.conf;

                # With php-fpm (or other unix sockets):
                fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
        #       # With php-cgi (or other tcp sockets):
        #       fastcgi_pass 127.0.0.1:9000;
        }

        # deny access to .htaccess files, if Apache's document root
        # concurs with nginx's one
        #
        location ~ /\.ht {
                deny all;
        }
}

Затем вам просто нужно перезапустить веб-сервер NGINX.

sudo service nginx restart

Перейдите на свой сайт dynmap, и теперь он должен быть безопасным!
Very secure

Часто задаваемые вопросы

Как мне Linux?

Очень осторожно.

Но вот серьезный ответ.
Вы можете подключиться к своему Linux-серверу с помощью чего-нибудь популярного, например, PuTTY или любого другого SSH-клиента по вашему выбору. Вы можете войти в терминал, если у вас есть пользователь / пароль.

Вы можете легко найти руководства / учебные пособия по использованию Linux в Интернете. Но вы всегда должны дважды проверять, что делает команда, прежде чем выполнять ее!

Мой сайт не появляется (NGINX)
Убедитесь, что ваш сайт перенаправлен.

Порт по умолчанию будет 80, но если вы следуете руководству по установке сертификата SSL, порт будет 443.

Но если это не сработает, проверьте, запущен ли NGINX, выполнив команду

sudo service nginx status

и он должен сказать вам, что может быть не так. Вы также можете протестировать файл конфигурации, выполнив команду

nginx -t -c /etc/nginx/sites-available/dynmap


Я не вижу изображений на сайте dynmap!

Поскольку мы начали со свежей новой базы данных без каких-либо данных в ней. Чтобы увидеть изображения на динамической карте, может потребоваться некоторое время.

Вы можете запустить команду в игре, чтобы полностью отобразить мир, если хотите /dynmap fullrender <worldname>

Почему нет учебника по windows или apache?

Я решил не рассказывать о настройке автономного веб-сервера с Windows или Apache, поскольку в настоящее время большинство людей будут использовать Linux и NGINX. Но если будет достаточно людей, я могу закрыть окна и / или apache

Я передумал, могу ли я конвертировать обратно из sql?

Да, вы сможете вернуться к предыдущему методу, если вы создали файл резервной копии configuration.txt.backup на предыдущих шагах.

Просто удалите configuration.txt и переименуйте configuration.txt.backup в configuration.txt и все готово!

Почему?

Почему бы и нет?

Есть больше возможностей, когда dynmap использует sql. Было бы быстрее выполнять резервное копирование, люди все равно могут использовать веб-сайт dynmap, даже если сервер не работает, и многое другое!

Все еще отображаются значки игроков и / или чат?

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

Чат также должен работать нормально.

Оставьте комментарий, если у вас возникнут вопросы или проблемы!

Doc improvement Feature

Самый полезный комментарий

Спасибо за урок! Мне удалось перенести свои 2 сервера Forge на конфигурацию автономного веб-сервера. И я хотел бы отметить несколько моментов:

  • Forge не включает драйвер JDBC для MySQL (например, Bukkit и Cauldron). Вам нужно взять его с https://mvnrepository.com/artifact/mysql/mysql-connector-java и поместить в каталог модов. См. №1674.

  • Было бы лучше упомянуть в руководстве, что /etc/nginx/sites-available/ и /etc/nginx/sites-enabled существуют только в реализациях Debian / Ubuntu nginx. В восходящей реализации единственный файл конфигурации - /etc/nginx/nginx.conf .

  • Я бы не рекомендовал использовать MySQL для хранения карт, если у вас нет специального оборудования, выступающего в качестве сервера MySQL. У меня на домашнем сервере работают 2 сервера Forge. Тот, который сконфигурирован с MySQL, имеет значительно больше накладных расходов на ЦП, ОЗУ и дисковый ввод-вывод из-за транзакций с базой данных. Фактически, MySQL не был разработан для хранения больших двоичных объектов, которые составляют почти все хранилище карт dynmap. При использовании MySQL в качестве хранилища карт дополнительные циклы ЦП потребляются транзакциями SQL. И поскольку dynmap хранит данные карты в виде BLOB-объектов изображений, использование MySQL на самом деле приводит к гораздо худшей производительности, чем файловое хранилище, как это наблюдалось на моем домашнем сервере. См. Также https://stackoverflow.com/questions/5285857/when-is-using-mysql-blob-recommended

  • Угадайте, какой тип БД был разработан для хранения большого количества BLOB-объектов? Файловая система! Я хотел бы предложить отредактировать руководство, чтобы порекомендовать nginx + php-fpm + хранилище файлов. Для автономного веб-сервера с файловым хранилищем раздел url: должен быть изменен следующим образом:

url:
    # configuration URL
    configuration: 'standalone/dynmap_config.json?={timestamp}'
    # update URL
    update: 'standalone/dynmap_{world}.json?={timestamp}'
    # sendmessage URL
    sendmessage: "standalone/sendmessage.php"
    # login URL
    login: "standalone/login.php"
    # register URL
    register: "standalone/register.php"
    # tiles base URL
    tiles: 'tiles/'
    # markers base URL
    markers: 'tiles/'

Все 38 Комментарий

Обратите внимание, что у пользователей dynmapforge не будет каталога plugins/dynmap/web . Например, на одном из моих серверов есть:

username<strong i="7">@hostname</strong>:/srv/minecraft/instancename$ find dynmap/ -type d | grep -v dynmap/web/tiles
dynmap/
dynmap/web
dynmap/web/images
dynmap/web/standalone
dynmap/web/css
dynmap/web/css/images
dynmap/web/js
dynmap/templates
dynmap/texturepacks
dynmap/texturepacks/standard
dynmap/markers
dynmap/renderdata
dynmap/renderdata/modsupport
dynmap/export
dynmap/colorschemes

(Я отфильтровываю dynmap / web / tile /, потому что у меня там 1500 каталогов ...)

Я бы попробовал это сам, но мои сервисы nginx и minecraft находятся на разных машинах. : sweat_smile:

Я выполнил это, но безуспешно. У меня Apache на том же сервере, что и dynmap, и я переместил туда веб-папку. Хотя в консоли нет ошибок, если я перейду к URL-адресу, он просто покажет черный фон. Я также использую SQLite, который уже был обработан. Возможно, я что-то пропустил?

Может быть, проверьте консоль вашего браузера, чтобы найти ошибки и / или неудачные запросы?

@miiichael
Да, большая проблема при переходе от файловой системы к базе данных заключается в том, что dynmap не импортирует плитки в базу данных. Таким образом, вы потеряете весь прогресс рендеринга. По-прежнему можно разместить веб-сервер на другом компьютере, а не на сервере minecraft, но для этого потребуется использовать mysql вместо файловой системы.

@MrLogano
Это потому, что apache не может найти файл базы данных SQLite, поскольку его нет в веб-папке. Вероятно, вам лучше указать apache на веб-папку, которая находится в папке dynmap, вместо того, чтобы копировать веб-папку в другое место. Или вручную отредактируйте файлы php (из скопированной веб-папки), чтобы получить файл SQLite db из другого места.

Я напишу более подробное руководство, как только у меня появится свободное время, так как я очень занят.

@haloflooder
Файл php «dynmap_access» связан с файлом базы данных SQLite в каталоге dynmap. Я пробовал это еще несколько раз, и всякий раз, когда я меняю раздел URL-адреса в конфигурации, я получаю полностью пустую страницу. Если это не учитывать, файловое дерево работает нормально, но при указании его на SQLite выдается ошибка 500. При проверке журнала apache говорится, что что-то не удается открыть файл базы данных, при этом отображается ошибка в строке 79 в SQLite_tiles.php. Я тоже изменил разрешения на 775, но безуспешно.

Я следую вашему руководству, но на веб-странице говорилось: «Не удалось получить конфигурацию: внутренняя ошибка сервера».
Как я могу сделать?

У меня та же проблема, что и у @gundami. Дальнейшее расследование обнаруживает это сообщение об ошибке в /var/log/nginx/access.log:
10.0.0.52 - - [24/Jan/2020:20:31:26 +0000] "GET /standalone/MySQL_configuration.php HTTP/1.1" 500 5 "http://dragonmc/" "Mozilla/5.0 (X11; Fedora; Linux x86_64; rv:72.0) Gecko/20100101 Firefox/72.0" "-"

@MrLogano Вы придумали решение? Извините за поздний ответ, последние несколько месяцев я был невероятно занят.

@gundami @ ads103 Можете ли вы предоставить конфигурацию для dynmap на pastebin? Не забудьте подвергнуть цензуре любую конфиденциальную информацию, например учетные данные mysql.

Конечно! Вот, пожалуйста: https://pastebin.com/1xQ2Unjb

@ ads103 Только что заметил, что в вашем журнале доступа указано http://dragonmc/ . Что у вас в конфиге nginx?

Так как dynmap тоже давно не обновлялся. Я установлю новую версию dynmap на свой тестовый сервер и буду следить за своим собственным руководством, чтобы увидеть, изменилось ли что-нибудь с сентября.

Да, dragonmc - это имя хоста моего сервера minecraft. У меня он находится на локальном DNS-сервере, поэтому я могу просто ввести «dragonmc» в своем веб-браузере и перейти к нему. Вот моя конфигурация apache и каталог, в который я скопировал файлы динамической карты.
https://pastebin.com/NQ8fNjqa

@ ads103 Полагаю, ваш сервер также размещен локально в вашей сети?

Ага! Это правильно. Все просто по локальному IP!

@haloflooder Была ли у вас возможность установить новую версию на свой тестовый сервер?

К сожалению, я не знаю javascript. Я вижу, что это сообщение об ошибке генерируется этой функцией в map.js , но я не могу найти, где переменной "configuration" присвоено значение.

`function DynMap (options) {

    var me = this;

    if(me.checkForSavedURL())

            return;

    me.options = options;

    $.getJSON(me.options.url.configuration, function(configuration) {

            if(configuration.error == 'login-required') {

                    me.saveURL();

                    window.location = 'login.html';

            }

            else if(configuration.error) {

                    alert(configuration.error);

            }

            else {

                    me.configure(configuration);

                    me.initialize();

            }

    }, function(status, statusMessage) {

            alert('Could not retrieve configuration: ' + statusMessage);

    });

}

`

@ ads103 Извините, я был занят работой, так как мне нужно было уложиться в срок. Конфигурация поступает из MySQL_configuration.php в автономном режиме.

Вы копировали веб-файлы на веб-сервер после того, как dynmap разрешили изменять значения конфигурации с измененной конфигурацией?

Да, я сделал. Я даже видел, как сетевой трафик к моему серверу базы данных увеличивался, когда он начал рендеринг, поэтому значения конфигурации, по крайней мере, достаточно верны для получения плиток _в_ базу данных.

Вот вопрос. В руководство вы включили эту инструкцию по копированию содержимого папки web на веб-сервер:
sudo cp -r /home/MyUsername/minecraft/servers/creative/plugins/dynmap/web/ /var/www/dynmap/
Вы намеревались скопировать папку web папку dynmap _или_ _contents_ папки web папку dynmap ?

@ ads103 Ооооо , это хороший улов. Я должен был проверить команды Linux после работы над руководством в течение примерно 12 часов.

Я имел в виду поместить команду для копирования содержимого из веб-папки в папку веб-сервера dynmap. Сегодня я перейду к собственному руководству с новейшей версией dynmap.

Есть ли обновления в настройках доступа к MySQL? После выполнения этого руководства по T и попытки доступа к карте я получаю черный экран и ошибку «Не удалось получить конфигурацию: плохой шлюз».

РЕДАКТИРОВАТЬ: Я идиот и забыл установить php, все хорошо

Во-первых, отличный гид! Я уже давно пытаюсь найти что-то подобное. Однако у меня та же проблема, что и у @WearisomelyVerbose, когда я получаю только сообщение «Не удалось получить конфигурацию: плохой шлюз».

Некоторая информация о моей сборке: мой сервер Minecraft находится на отдельном сервере и использует сервер Mysql для хранения всего. Я обязательно скопировал каталог / web из Dynmap после изменения конфигураций и перезапуска сервера.

Одна вещь, которую я заметил, всякий раз, когда я тестирую файл Dynmap.conf в Nginx, я получаю эту ошибку:
sudo nginx -t -c / etc / nginx / сайты-доступные / dynmap
nginx: [Emerg] директива server не разрешена в / etc / nginx / sites-available / dynmap: 2
nginx: файл конфигурации / etc / nginx / sites-available / dynmap не прошел проверку

@ ads103 @gundami
Я думаю, что у меня такая же ошибка: «Не удалось получить конфигурацию: ошибка» после открытия карты через веб-сервер.

Для меня изменение файла "... \ standalone \ MySQL_config.php" на веб-сервере решило проблему:
...
$ dbhost = 'локальный хост';
...
вместо IP-адреса. Но подробностей не знаю, надеюсь, кому-то поможет.

Моя установка, кстати, - 2 Raspberry Pis. RP4B (4 ГБ) размещает minecraft (среди других сервисов), а RP3B + размещает DynMap (Apache + SQL)

Спасибо за отличный урок !! :)

Я смог решить свои проблемы.

Мои, по крайней мере, задним числом были довольно просты. Мне не хватало зависимостей.

В частности, мне не хватало php-json и php-mysqlnd. (Я использую систему Fedora 31, и имена пакетов Ubuntu немного отличаются.)

Я обнаружил, что мне не хватает этих пакетов, поскольку понял, что php-fpm - это отдельное приложение с собственными файлами журнала, расположенными в /var/log/php-fpm . Проверка www-error.log показала эти две строки журнала:

[24-Feb-2020 14:52:43 UTC] PHP Fatal error:  Uncaught Error: Call to undefined function mysqli_connect() in /usr/share/nginx/html/dynmap/standalone/MySQL_funcs.php:28
Stack trace:
#0 /usr/share/nginx/html/dynmap/standalone/MySQL_funcs.php(38): initDbIfNeeded()
#1 /usr/share/nginx/html/dynmap/standalone/MySQL_funcs.php(63): getStandaloneFileByServerId('dynmap_config.j...', 0)
#2 /usr/share/nginx/html/dynmap/standalone/MySQL_configuration.php(22): getStandaloneFile('dynmap_config.j...')
#3 {main}
  thrown in /usr/share/nginx/html/dynmap/standalone/MySQL_funcs.php on line 28
[24-Feb-2020 15:00:54 UTC] PHP Fatal error:  Uncaught Error: Call to undefined function json_decode() in /usr/share/nginx/html/dynmap/standalone/MySQL_configuration.php:26
Stack trace:
#0 {main}
  thrown in /usr/share/nginx/html/dynmap/standalone/MySQL_configuration.php on line 26

Быстрый поиск в Google функций json_decode() и mysqli_connect() привел меня к этим двум недостающим пакетам. После их установки и обновления Dynmap в моем браузере он ... просто заработал. Это просто сработало.

Спасибо за урок! Мне удалось перенести свои 2 сервера Forge на конфигурацию автономного веб-сервера. И я хотел бы отметить несколько моментов:

  • Forge не включает драйвер JDBC для MySQL (например, Bukkit и Cauldron). Вам нужно взять его с https://mvnrepository.com/artifact/mysql/mysql-connector-java и поместить в каталог модов. См. №1674.

  • Было бы лучше упомянуть в руководстве, что /etc/nginx/sites-available/ и /etc/nginx/sites-enabled существуют только в реализациях Debian / Ubuntu nginx. В восходящей реализации единственный файл конфигурации - /etc/nginx/nginx.conf .

  • Я бы не рекомендовал использовать MySQL для хранения карт, если у вас нет специального оборудования, выступающего в качестве сервера MySQL. У меня на домашнем сервере работают 2 сервера Forge. Тот, который сконфигурирован с MySQL, имеет значительно больше накладных расходов на ЦП, ОЗУ и дисковый ввод-вывод из-за транзакций с базой данных. Фактически, MySQL не был разработан для хранения больших двоичных объектов, которые составляют почти все хранилище карт dynmap. При использовании MySQL в качестве хранилища карт дополнительные циклы ЦП потребляются транзакциями SQL. И поскольку dynmap хранит данные карты в виде BLOB-объектов изображений, использование MySQL на самом деле приводит к гораздо худшей производительности, чем файловое хранилище, как это наблюдалось на моем домашнем сервере. См. Также https://stackoverflow.com/questions/5285857/when-is-using-mysql-blob-recommended

  • Угадайте, какой тип БД был разработан для хранения большого количества BLOB-объектов? Файловая система! Я хотел бы предложить отредактировать руководство, чтобы порекомендовать nginx + php-fpm + хранилище файлов. Для автономного веб-сервера с файловым хранилищем раздел url: должен быть изменен следующим образом:

url:
    # configuration URL
    configuration: 'standalone/dynmap_config.json?={timestamp}'
    # update URL
    update: 'standalone/dynmap_{world}.json?={timestamp}'
    # sendmessage URL
    sendmessage: "standalone/sendmessage.php"
    # login URL
    login: "standalone/login.php"
    # register URL
    register: "standalone/register.php"
    # tiles base URL
    tiles: 'tiles/'
    # markers base URL
    markers: 'tiles/'

Еще одно спасибо @haloflooder за создание учебника! Я тоже мигрировал, и все работает хорошо.

Я также нашел полезной настройку, любезно предоставленную Frumple для сервера MRT: https://github.com/Frumple/mrt-docker-services/blob/master/containers/dynmap-main/docker-compose.yml

@ database64128 Спасибо за информацию о файлах конфигурации json. Одна поправка: файлы конфигурации json создаются только в том случае, если login-enabled: false установлено в файле configuration.txt Dynmap.

Ошибка? Умышленное? Я не знаю. Подробнее о проблеме, которую я создал здесь: https://github.com/webbukkit/dynmap/issues/2848.

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

У меня проблема с черным экраном, описанная @MrLogano . Я использую MySQL и nginx на отдельном сервере. Я выполняю полный рендеринг прямо сейчас и вижу, как количество строк в таблице «Tiles» в MySQL растет, так что я знаю, что он отлично подключается к MySQL.

В консоли браузера я вижу следующие ошибки:

Сценарий из « https: //REDACTED/standalone/config.js? _ = 3.0-beta-10-257 » был загружен, хотя его тип MIME («text / html») не является допустимым типом MIME JavaScript.
Загрузка не удалась для

Я выяснил, в чем была моя проблема. Имя хоста, которое я использовал для сервера MySQL, можно было разрешить с моего сервера Minecraft, но не с моего сервера nginx. Я изменил имя хоста на то, что можно разрешить с обеих сторон, и теперь оно работает.

Ну, у меня есть сервер minecraft, размещенный на одном хосте, и веб-сайт, размещенный на другом хосте (который использует apache и не поддерживает обратные прокси). Как мне настроить динамическую карту на моем веб-сайте без iframe? потому что я не вижу учебников по этому поводу

@ alex17lol В этом руководстве не используется обратный прокси. Вы должны иметь возможность использовать свою собственную конфигурацию Apache вместо предлагаемых здесь конфигураций Nginx.

@ alex17lol В этом руководстве не используется обратный прокси. Вы должны иметь возможность использовать свою собственную конфигурацию Apache вместо предлагаемых здесь конфигураций Nginx.

У меня нет доступа к командам sudo, я использую веб-хостинг, и это моя проблема

_ Может ли кто-нибудь добавить это в вики? _

Большое вам спасибо за это!

SELinux может доставить множество неприятностей. Наиболее очевидны те, которые полностью блокируют любой доступ к веб-контенту. Они отображаются в журнале ошибок веб-сервера. Более тонкие проблемы могут появиться в журнале ошибок php-fpm. После обработки всех ошибок в журнале веб-сервера у меня все еще были проблемы с черным экраном и ужасная ошибка чтения конфигурации. Например:

[01-Jun-2020 17:45:44 UTC] PHP Warning: mysqli_connect(): (HY000/2002): Permission denied in /home/data/web/dynmap/standalone/MySQL_funcs.php on line 30

# grep mysql /var/log/audit/audit.log | tail -1 | tee /dev/stderr | audit2allow
type=AVC msg=audit(1591033906.504:2725): avc:  denied  { name_connect } for  pid=717 comm="php-fpm" dest=3306 scontext=system_u:system_r:httpd_t:s0 tcontext=system_u:object_r:mysqld_port_t:s0 tclass=tcp_socket permissive=0


#============= httpd_t ==============

#!!!! This avc can be allowed using one of the these booleans:
#     httpd_can_network_connect, httpd_can_network_connect_db
allow httpd_t mysqld_port_t:tcp_socket name_connect;

Что решило эту последнюю загадку для меня:

# setsebool -P httpd_can_network_connect_db=1

Я обнаружил, что rsync НАМНОГО быстрее, чем scp -r . scp продвигался с ужасно медленной скоростью, поэтому я убил его на 300 МБ или около того, а затем вместо этого использовал следующую команду. 2 ТБ передано невероятно быстро по сравнению с попыткой scp . Я делал rsync довольно много раз, пытаясь решить проблемы, и rsync обновлял, не отправляя каждый раз весь беспорядок.

rsync -cavzAX me@$VPS:/path/to/plugins/dynmap/web/ /path/to/web/dynmap/

Кто-нибудь пробовал это с базой данных DB2?

Мне действительно нужна помощь с этой проблемой ^^^ # 3125. может кто-нибудь помочь с этой проблемой? Я трижды проверил это руководство. начинал с нуля несколько раз. пробовал несколько решений для хостинга, но каждый раз у меня возникает одна и та же проблема. Я попробовал несколько решений, упомянутых в комментариях, но в конечном итоге они оказались бесполезными.
Я тоже пробовал Discord, но несколько раз не получал ответа.

@arkD К счастью , я буду пересматривать это руководство в ближайшие пару недель, так как я настраиваю еще одну автономную установку, но использую последнюю новейшую версию Dynmap для 1.16.3, которая еще не выпущена публично на странице втулки, поскольку обновление.

У меня не получалось - мне пришлось включить php на NGINX, используя это руководство
https://www.digitalocean.com/community/tutorials/how-to-install-linux-nginx-mysql-php-lemp-stack-in-ubuntu-16-04

Теперь ошибка «Не удалось получить конфигурацию» перестала появляться, но я по-прежнему получаю черный экран , без боковой панели, без часов. 😢

БД настроена на sqlite, и все работало и отображалось до запуска руководства

Также: у меня эта ошибка в консоли. Это очень вероятно связано
image

Была ли эта страница полезной?
0 / 5 - 0 рейтинги

Смежные вопросы

mikesbytes picture mikesbytes  ·  6Комментарии

Military-Doctor picture Military-Doctor  ·  3Комментарии

ThybeVB picture ThybeVB  ·  6Комментарии

mibby picture mibby  ·  4Комментарии

idlenexusgaming picture idlenexusgaming  ·  4Комментарии