Я не видел четких инструкций по запуску автономного сервера с MySQL / SQLite. Вики-страница о том, как настроить автономный веб-сервер, также давно устарела.
Через пару часов ковыряния в dynmap. Вот руководство о том, как запустить автономный веб-сервер на NGINX на сервере * nix.
🔴 ВНИМАНИЕ 🔴
Следуя этому руководству, вы сбросите все данные, если вы _ в настоящее время не_ используете базу данных SQL с dynmap.
Использование MySQL с Dynmap не полностью протестировано сообществом.
В этом руководстве предполагается, что вы немного знакомы с Linux. Если вы не умеете работать с Linux, учиться никогда не поздно!
Если вы используете «хост сервера minecraft». В большинстве случаев вы не сможете настроить автономный веб-сервер с вашим хостом сервера minecraft. Вам нужно будет получить хост веб-сайта или vps для размещения автономного веб-сервера для Dynmap.
Очень рекомендую вам использовать MySQL вместо SQLite, если у вас есть выбор. Это может потребовать дополнительных шагов, но посмотрите на светлую сторону. Вы можете использовать MySQL с другими плагинами :)
В этом руководстве также требуется, чтобы вы использовали sudo. Если у вас нет sudo perms, то вам либо не повезло, либо вы можете арендовать VPS.
Если вы дадите мне разрешение редактировать wiki. Я с радостью внесу свой вклад в вики о том, как настроить автономный веб-сервер и поддерживать его;)
Я расскажу, как заставить автономный веб-сервер работать с прокси-сервером Cloudflare, который является совершенно необязательным. Это НАСТОЯТЕЛЬНО рекомендуется, если вы собираетесь разрешить пользователям входить на сайт dynmap. Если вместо этого вы собираетесь установить сертификат SSL с помощью certbot, не следуйте этой части бонусного руководства.
Я также расскажу, как установить сертификат SSL на веб-сервер NGINX с помощью certbot или другого поставщика, что является совершенно необязательным. Это НАСТОЯТЕЛЬНО рекомендуется, если вы собираетесь разрешить пользователям входить на сайт dynmap. Если вместо этого вы хотите использовать прокси-сервер Cloudflare, не следуйте этой части бонусного руководства.
Плюсы:
Минусы:
Мы расскажем о следующих вещах
Для начала вам необходимо установить веб-сервер на сервере, на котором вы хотите разместить автономный веб-сайт dynmap. В этой части руководства также рассматривается установка MySQL на сервере.
Если вы по какой-то причине хотите использовать SQLite, вы можете просто установить NGINX без MySQL / MariaDB. НО NGINX должен находиться на том же сервере, где размещен сервер minecraft.
Если вы используете хост веб-сайта или хост Minecraft. См. Примечания под ссылками на руководство.
Обычно MySQL следует устанавливать на том же сервере, что и сервер minecraft. Вы можете использовать тот же сервер MySQL с плагинами, которые используют MySQL. MySQL будет использоваться подключаемым модулем Dynmap для сохранения / загрузки данных, которые веб-сервер также будет читать / записывать.
Как правило, есть больше преимуществ, если сервер MySQL / MariaDB находится на том же сервере / сети, что и сервер minecraft, поскольку задержка будет ниже.
Существует бесчисленное множество руководств по настройке nginx / MySQL / MariaDB в Интернете. Вот несколько ссылок на руководства по их настройке с некоторыми ОС Linux.
Не волнуйтесь, если в руководстве вам предлагается установить MariaDB, поскольку это почти то же самое, что и MySQL.
Проверьте, обслуживает ли ваш веб-сервер веб-страницу, введя IP-адрес веб-сервера в веб-браузер. Если ничего не появляется, возможно, ваш брандмауэр блокирует порт или вы не запустили сервер nginx.
Теперь, чтобы настроить сервер MySQL / MariaDB.
Рекомендуется создать нового пользователя / пароль с ограниченными правами для каждого приложения.
Если вы настраиваете внешний веб-сервер, вы также можете настроить брандмауэр (iptables / firewalld / ufw / etc), чтобы разрешить только веб-серверу подключаться к базе данных.
Используя терминал на сервере, на котором размещен сервер minecraft, мы создадим новую базу данных и добавим несколько пользователей базы данных.
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.
Теперь изменим некоторые настройки в конфигурации из плагина.
Установите последнюю версию 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-адреса, которые необходимы для работы автономного веб-сервера 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, чтобы защитить учетные данные от злоумышленников!
Теперь приступим к серьезному делу!
Вот несколько вариантов:
Вариант 1. Вы можете связать веб-сервер с веб-папкой dynmap в папке плагина (проще)
Вариант 2. Скопируйте веб-папку в другое место на сервере (более безопасно).
Единственный вариант : ваш единственный вариант - скопировать веб-папку на сервер, на котором есть веб-сервер.
Если вы используете веб-хостинг, такой как hostgator, namecheap, 000webhost и т. Д. Единственный вариант - скопировать веб-папку на веб-хост.
Я не буду добавлять подробностей о том, как это сделать, так как слишком много веб-хостов, которые нужно покрыть.
Прежде чем перейти к следующим разделам с параметрами настройки. Мы рассмотрим общую настройку веб-серверов 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
Если вы размещаете свой собственный веб-сервер NGINX на том же сервере, что и сервер Minecraft. Это правильный раздел для вас!
Примечание
Убедитесь, что вы выполнили общие настройки с NGINX, прежде чем продолжить это руководство.
Если вы хотите настроить веб-сервер простым (но не слишком безопасным) способом. Это правильный вариант для вас! Но я все же настоятельно рекомендую вам следовать варианту 2, поскольку он более безопасен, чем вариант 1.
Плюсы:
Минусы:
Начать редактирование файла конфигурации 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;
}
}
Пример:
root /home/someuser/minecraft/servers/creative/plugins/dynmap/web;
Если вы хотите настроить веб-сервер более безопасным способом. Это правильный вариант для вас!
Плюсы:
Минусы:
Скопируйте веб-файлы динамической карты в другое место
sudo cp -r /home/<USERNAME>/<MINECRAFTSERVER>/plugins/dynmap/web/ /var/www/dynmap/
Пример:
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. Мы собираемся сделать ярлык конфигурации веб-сервера 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. Это правильный раздел для вас!
Примечание
Плюсы:
Минусы:
Скопируйте веб-файлы динамической карты в другое место
Выполните эту команду на сервере, на котором размещен сервер minecraft. Эта команда скопирует папку с сервера minecraft на веб-сервер. Он попросит вас ввести пароль к веб-серверу.
sudo scp -r /home/<USERNAME>/<MINECRAFTSERVER>/plugins/dynmap/web <WEBSERVER_USERNAME>@<WEBSERVER_IP>:/var/www/dynmap
Пример:
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.
Вы можете воспользоваться одним из трех вариантов, чтобы обезопасить свой веб-сервер.
Вы можете просто следовать этим инструкциям на веб-сайте certbot. Это самый простой способ получить сертификат SSL для веб-сайта.
Отметим, что сертификаты certbot истекают быстрее, чем у других поставщиков, но у них есть автоматический способ продления ваших сертификатов, если вы будете следовать их инструкциям о том, как это сделать.
В качестве альтернативы вы можете получить сертификат 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, и теперь он должен быть безопасным!
Прокси-сервер Cloudflare хорош тем, что у него есть специальная сертификация, предназначенная только для связи между вашим веб-сервером и их сервисами. Вы также можете продлить сертификацию до 15 лет. Однако это просто альтернатива наличию «настоящей» SSL-сертификации.
Сначала войдите в cloudflare и перейдите в домен, для которого вы хотите настроить прокси. Затем перейдите в раздел «SSL / TLS».
В разделе 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, и теперь он должен быть безопасным!
Как мне 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, даже если сервер не работает, и многое другое!Все еще отображаются значки игроков и / или чат?
Да, значок плеера по-прежнему должен обновляться на веб-странице.
Чат также должен работать нормально.
Обратите внимание, что у пользователей 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, и все работало и отображалось до запуска руководства
Также: у меня эта ошибка в консоли. Это очень вероятно связано
Самый полезный комментарий
Спасибо за урок! Мне удалось перенести свои 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:
должен быть изменен следующим образом: