Dynmap: [教程] 使用 MySQL/SQLite 设置独立的 Web 服务器

创建于 2019-09-14  ·  38评论  ·  资料来源: webbukkit/dynmap

我还没有看到任何关于让独立服务器运行 MySQL/SQLite 的明确说明。 关于如何设置独立 Web 服务器的 wiki 页面也已经过时了。

经过几个小时的 dynmap 测试。 这是关于如何在 *nix 服务器上的 NGINX 上运行独立 Web 服务器的教程。

🔴警告🔴
如果您_当前未_使用带有 dynmap 的 SQL 数据库,则遵循本指南将重置所有数据。

社区没有完全测试将 MySQL 与 Dynmap 一起使用。

本教程假设您对 Linux 有所了解。 如果您不知道如何使用 Linux,那么学习永远不会太晚!

如果您使用的是“我的世界服务器主机”。 在大多数情况下,您将无法使用 minecraft 服务器主机设置独立的 Web 服务器。 您必须获得网站主机或 vps 才能为 Dynmap 托管独立的 Web 服务器。

笔记

  • 如果您有选择,强烈建议您使用 MySQL 而不是 SQLite。 它可能需要一些额外的步骤,但从好的方面来看。 您可以将 MySQL 与其他插件一起使用 :)

  • 本教程还要求您使用 sudo。 如果您没有 sudo perms,那么您要么不走运,要么可以租用 VPS。

  • 如果您使用 SQLite,则不能在不同的服务器/vps 上托管独立的 Web 服务器。 您必须将 SQLite 数据库迁移到 MySQL/MariaDB 服务器,以便在不同的服务器/vps 上托管独立服务器。 但这完全是可选的,我们仍将介绍如何使用 SQLite 在与 minecraft 服务器相同的服务器上设置独立的 Web 服务器。
  • 除非有兴趣,否则我不会介绍如何使用 windows 或 apache 设置独立的 Web 服务器。 作为替代方案,如果您使用 MySQL(而不是 SQLite),您可以获得便宜的 VPS 并在那里托管 Web 服务器。

贡献者注意事项

如果你允许我编辑维基。 我很乐意就如何设置独立的网络服务器和维护它为 wiki 做出贡献;)

奖金教程

我介绍了如何让独立的 Web 服务器与 cloudflare 的代理一起工作,这是完全可选的。 如果您要让用户登录到 dynmap 网站,强烈建议您这样做。 如果要使用 certbot 安装 SSL 证书,请不要遵循奖金教程的这一部分。

我还将介绍如何使用 certbot 或其他完全可选的提供程序将 SSL 证书安装到 NGINX Web 服务器。 如果您要让用户登录到 dynmap 网站,强烈建议您这样做。 如果您想改用 cloudflare 代理,请不要遵循奖金教程的这一部分。

利弊

优点:

  • 即使我的世界服务器关闭/重新启动,Dynmap 网站也将可用
  • 减少我的世界服务器的负载
  • NGINX 的性能优于内部网络服务器

缺点:

  • 设置有点烦
  • 需要了解一点linux

我们将涵盖的内容

我们将涵盖以下内容

  • 设置 MySQL/MariaDB(可选)
  • 使用 PHP 和 SQL 支持设置 NGINX
  • 准备 Dynmap 插件以与 MySQL/SQLite 一起使用
  • 为 MySQL/SQLite 设置独立服务器
  • 奖励:使用 NGINX Web 服务器设置 cloudflare 代理(可选)
  • 奖励:使用 ssl 认证设置 NGINX(可选)
  • 常见问题解答位于本指南的最底部。

在您的服务器上使用 PHP 和 SQL 支持设置 MySQL/MariaDB 和 NGINX

首先,您需要在要托管独立 dynmap 网站的服务器上安装 Web 服务器。 本教程的这一部分还包括在服务器上安装 MySQL。

如果你出于某种原因想使用 SQLite,你可以只安装 NGINX 而没有 MySQL/MariaDB。 但是NGINX 必须在托管 minecraft 服务器的同一台服务器上。

如果您使用网站主机或使用 minecraft 主机。 请参阅教程链接下方的注释。

我应该在哪里安装 MySQL/MariaDB?

您通常应该将 MySQL 安装在与 minecraft 服务器相同的服务器上。 您可以将相同的 MySQL 服务器与使用 MySQL 的插件一起使用。 Dynmap 插件将使用 MySQL 来保存/加载 Web 服务器也将读取/写入的数据。

通常,如果 MySQL/MariaDB 服务器与 minecraft 服务器在同一服务器/网络上会带来更多好处,因为延迟会更低

教程

互联网上有无数关于如何设置 nginx/MySQL/MariaDB 的教程。 这里有一些关于使用一些 linux 操作系统设置它们的教程链接。

如果教程告诉您安装 MariaDB,请不要担心,因为它与 MySQL 几乎相同。

教程链接

1来源

通过将您的网络服务器的 IP 放入您的网络浏览器来测试您的网络服务器是否正在为网页提供服务。 如果什么也没有弹出,那么你的防火墙可能阻止了端口或者你没有启动 nginx 服务器。

笔记

  • 如果您已经拥有 Web 服务器,则可以跳过此步骤。 但是,如果您还没有 MySQL 服务器,您仍然需要一台 MySQL 服务器。
  • 如果您使用的是网站主机,如上所述。 你可以跳过这一步,但你仍然需要一个 MySQL 服务器。
  • 如果您使用的是 minecraft 主机,则需要获得 VPS/网站主机。 希望您的 minecraft 主机还包含一个 MySQL 服务器和您的软件包。 如果没有,我想您可以在 VPS 上安装 MySQL 服务器,请确保

设置 MySQL(如果您使用 SQLite,请跳过此步骤)

现在,设置 MySQL/MariaDB 服务器。

建议为每个应用程序创建一个具有有限权限的新用户/密码。

如果您正在设置外部 Web 服务器,您还可以设置防火墙(iptables/firewalld/ufw/etc)以仅允许 Web 服务器连接到数据库。

配置 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

如果 Web 服务器和 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

如果你做了一个oopsie并且需要删除mysql用户。 这就是您删除用户的方式。

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

创建新用户后,尝试登录该用户。 (在您通过“退出”从 mysql root 用户注销后)

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

MySQL 特权/权限

MySQL 有这些权限可以设置给 MySQL 用户。

  • ALL PRIVILEGES - 授予用户所有权限
  • CREATE - 允许用户创建数据库/表
  • DELETE - 允许用户从表中删除行(数据)
  • DROP - 允许用户删除数据库和表
  • INSERT - 允许用户向表中插入行(数据)
  • SELECT - 允许用户从数据库中读取
  • UPDATE - 允许用户更新表中的数据

准备 Dynmap 插件

现在从插件更改配置中的一些设置。

安装动态映射

在服务器上安装最新版本的 dynmap。 最新版本应该仍然适用于从 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

禁用内部 Web 服务器

现在我们将禁用内部 Web 服务器,因为我们不再需要它。

在配置文件中找到disable-webserver并将值从false更改true

更改 Web 服务器的一些 url

我们将更改 dynmap 独立 Web 服务器工作所需的一些 url。 据我所知,这是大多数人遇到问题的最大部分。

在配置文件中找到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="

再次打开和关闭它

启动我的世界服务器,但不要立即关闭它!
通过查看最新日志来检查 dynmap 是否存在任何问题。 如果没有问题,请关闭服务器。

注意

您需要在最后启动和停止服务器的主要原因是因为 Dynmap 为 Web 服务器创建了配置文件以供使用。 如果您更改了configuration.txt任何设置,则plugins/dynmap/web中的配置文件可能会发生更改。

更大的通知

如果您打算让用户登录 dynmap。 你一定要安装一个SSL证书或使用CloudFlare的代理服务器以进行登录凭据从坏人安全!

有关如何设置 Web 服务器的选项

现在我们开始严肃的事情!

以下是一些选项:

与 minecraft 服务器 (MySQL/SQLite) 托管在同一台服务器上

选项 1 :您可以将 Web 服务器链接到插件文件夹中的 dynmap Web 文件夹(更简单)
选项 2 :将 web 文件夹复制到服务器上的其他位置(更安全)

托管在与 minecraft 服务器 (MySQL) 不同的服务器上

唯一选项:您唯一的选择是将 Web 文件夹复制到具有 Web 服务器的服务器。

使用网络主机 (MySQL) 托管

如果您使用的是 web 主机,例如 hostgator、namecheap、000webhost 等。您唯一的选择是将 web 文件夹复制到 web 主机。
我不会添加有关如何完成此操作的详细信息,因为要涵盖的 Web 主机太多。

使用 NGINX Web 服务器进行常规设置

在您使用设置选项进入下一部分之前。 我们将介绍 NGINX Web 服务器的一般设置。

删除默认网站配置

如果您安装了全新的 NGINX Web 服务器。 我们想删除默认的网站配置并添加我们自己的配置。 如果您在学习本教程之前已经拥有 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 Web 服务器

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

设置与 minecraft 服务器在同一台服务器上的 web 服务器

如果您将自己的 NGINX Web 服务器托管在与 minecraft 服务器相同的服务器上。 这是适合您的部分!

笔记
在继续本教程之前,请确保您遵循 NGINX 的常规设置

选项 1:将 Web 服务器链接到 dynmap 文件夹(单击以展开)

如果您想以简单(但不太安全)的方式设置 Web 服务器。 这是您的正确选择! 但我仍然强烈建议您遵循选项 2,因为它比选项 1 更安全。

优点:

  • 少执行一个命令(如果你喜欢那种东西)
  • 如果更改 dynmap 配置,则不需要复制配置文件

缺点:

  • 与选项 2 相比安全性较低(有争议)

编辑网站配置文件

开始编辑/etc/nginx/sites-available/dynmap的 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;
        }
}
  • 不要忘记改变到其中包含 minecraft 服务器文件夹的 linux 用户名。
  • 不要忘记改变到你有我的世界服务器的文件夹

例子:

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

选项 2:将 Web 文件夹复制到其他位置

如果您想以更安全的方式设置 Web 服务器。 这是您的正确选择!

优点:

  • 比选项 1 更安全(有争议)

缺点:

  • 如果您更改了 dynmap 配置,则需要将一些配置文件复制到新位置

将文件复制到新位置

将 dynmap web 文件复制到不同的位置

sudo cp -r /home/<USERNAME>/<MINECRAFTSERVER>/plugins/dynmap/web/ /var/www/dynmap/
  • 不要忘记改变到其中包含 minecraft 服务器文件夹的 linux 用户名。
  • 不要忘记改变到你有我的世界服务器的文件夹

例子:

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

编辑网站配置文件

开始编辑/etc/nginx/sites-available/dynmap的 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 服务器! (对于选项 1 和 2)

在您按照选项 1/2 中的步骤操作之后。 我们将制作 dynmap Web 服务器配置的快捷方式并将其放在一个文件夹中。

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

确保配置文件没有错误!

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

如果没有问题,请重新启动服务器。

sudo service nginx restart

应该是这样!

将 Web 服务器 ip 放入您的 Web 浏览器,您应该会看到 dynmap。 由于它将为空,您可以通过加入服务器并运行命令/dynmap fullrender <worldname>来开始渲染图块

设置托管在不同服务器上的 Web 服务器

如果您将自己的 NGINX Web 服务器托管在与托管 minecraft 服务器不同的服务器上。 这是适合您的部分!

笔记

  • 在继续本教程之前,请确保您遵循 NGINX 的常规设置
  • 网站配置应该在托管 NGINX Web 服务器的服务器上,而不是托管 minecraft 服务器的服务器!

优点:

  • 比其他方法更安全

缺点:

  • 如果您更改了 dynmap 配置,则需要将一些配置文件复制到新位置

将文件复制到新位置

将 dynmap web 文件复制到不同的位置

在托管 minecraft 服务器的服务器上执行此命令。 此命令会将文件夹从 minecraft 服务器复制到 Web 服务器。 它会要求您输入网络服务器的密码。

sudo scp -r /home/<USERNAME>/<MINECRAFTSERVER>/plugins/dynmap/web <WEBSERVER_USERNAME>@<WEBSERVER_IP>:/var/www/dynmap
  • 不要忘记改变到其中包含 minecraft 服务器文件夹的服务器的 linux 用户名。
  • 不要忘记改变到你有我的世界服务器的文件夹
  • 不要为了

例子:

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

编辑网站配置文件

开始编辑/etc/nginx/sites-available/dynmap的 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 服务器!

按照步骤操作后。 我们将制作 dynmap Web 服务器配置的快捷方式并将其放在一个文件夹中。

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

确保配置文件没有错误!

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

如果没有问题,请重新启动服务器。

sudo service nginx restart

应该是这样!

将 Web 服务器 ip 放入您的 Web 浏览器,您应该会看到 dynmap。 由于它将为空,您可以通过加入服务器并运行命令/dynmap fullrender <worldname>来开始渲染图块

设置由网络主机托管的网络服务器

如果您使用的是网络主机,因为您不想自己设置。 这是适合您的部分!

将 web 文件夹复制到 web 主机

将文件从 minecraft 服务器复制到您计算机上的文件夹中。 你要复制的文件应该在我的世界服务器上的plugins/dynmap/web

最好将文件复制到您的 Web 主机中的新目录中,除非它将成为专用的 dynmap 虚拟主机。

结束!

是真的! 你完成了。

奖金教程

如果您安装了自己的 NGINX Web 服务器,则可以按照奖金教程的这一部分操作,通过 dynmap 登录来确保您的 Web 服务器安全。 如果您使用 Dynmap 启用登录,则应始终小心处理用户的凭据。

您可以按照以下三个选项之一来确保您的 Web 服务器安全

使用 CertBot 安装免费 SSL 证书

您只需按照certbot 网站上的

需要注意的是,certbot 的认证比其他提供商更快到期,但如果您按照他们的说明进行操作,他们确实可以自动更新您的认证。

安装来自不同提供商的 SSL 证书

作为替代方案,您可以从不同的提供商(例如 NameCheap)获取 SSL 证书。 从提供商处下载公共证书和私钥。 您永远不应该与其他人共享私钥或将其公之于众。 它严格适用于您的 Web 服务器,不应该只是为了抢夺。

将认证文件放在/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

如果你做了一个 oopsie 并且需要恢复,请执行这个命令

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 web 服务器。

sudo service nginx restart

转到您的 dynmap 网站,它现在应该是安全的!
Very secure

使用 Cloudflare 的代理设置 NGINX(上次更新时间为 2019 年 9 月 19 日)

Cloudflare 代理的一个好处是他们有一个特殊的认证,仅用于在您的 Web 服务器和他们的服务之间进行通信。 您还可以让认证持续长达 15 年。 但是,这只是拥有“真正” ssl 认证的另一种选择。

首先,登录到 cloudflare 并转到要设置代理的域。 然后转到“SSL/TLS”部分
cloudflare dashboard

Origin Certificates部分,单击“创建证书”。
选择Let Cloudflare generate a private key and a CSR并将Private key typeECDSA

如果要将 dynmap 网站放在 map.YOURDOMAIN.com 上,请添加主机名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

如果你做了一个 oopsie 并且需要恢复,请执行这个命令

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 web 服务器。

sudo service nginx restart

转到您的 dynmap 网站,它现在应该是安全的!
Very secure

常见问题

我如何使用 Linux?

非常小心。

但这是严肃的答案。
您可以使用诸如 PuTTY 之类的流行工具或您选择的任何其他 SSH 客户端连接到您的 linux 服务器。 如果您有用户/密码,您可以登录到终端。

您可以在互联网上轻松找到有关如何使用 linux 的指南/教程。 但是在执行命令之前,您应该始终仔细检查它的作用!

我的网站没有弹出 (NGINX)
确保您的网站是端口转发的。

默认端口为 80,但如果您按照安装 SSL 证书的教程进行操作,则端口将为 443。

但如果这不起作用,请通过运行命令检查 NGINX 是否正在运行

sudo service nginx status

它应该告诉你可能有什么问题。 您还可以通过运行命令来测试配置文件

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


我在 dynmap 网站上没有看到任何图像!

因为我们从一个没有任何数据的全新数据库开始。 在 dynmap 上看到任何图像可能需要一些时间。

如果你想要/dynmap fullrender <worldname>你可以在游戏中运行命令来完全渲染一个世界

为什么没有 windows 或 apache 的教程?

我决定不介绍使用 Windows 或 apache 设置独立的 Web 服务器,因为现在大多数人将使用 Linux 和 NGINX。 但是如果有足够多的人问,我可能会涵盖 windows 和/或 apache

我改变主意了,我可以从 sql 转换回来吗?

是的,如果您从前面的步骤创建了一个备份文件configuration.txt.backup ,您应该能够转换回以前的方法。

只需删除configuration.txt并将configuration.txt.backup重命名configuration.txt就可以了!

为什么?

因为为什么不呢?

当 dynmap 使用 sql 时,有更多的可能性。 备份会更快,即使服务器宕机,人们仍然可以使用dynmap网站,等等!

它是否仍然显示玩家图标和/或聊天?

是的,播放器图标仍应在网页上更新。

聊天框也应该可以正常工作。

如果您有任何疑问或问题,请发表评论!

Doc improvement Feature

最有用的评论

感谢您的教程! 我能够将我的 2 Forge 服务器迁移到独立的 Web 服务器配置。 我想指出几点:

  • Forge 不包括 MySQL 的 JDBC 驱动程序(就像 Bukkit 和 Cauldron 那样)。 您需要从https://mvnrepository.com/artifact/mysql/mysql-connector-java获取它并将其放入 mods 目录中。 见#1674。

  • 最好在教程中提到/etc/nginx/sites-available//etc/nginx/sites-enabled仅存在于 Debian/Ubuntu 的 nginx 实现中。 在上游实现中,唯一的配置文件是/etc/nginx/nginx.conf

  • 我建议不要使用 MySQL 进行地图存储,除非您有专用硬件作为 MySQL 服务器。 我有 2 个 Forge 服务器在我的家庭服务器上运行。 由于与数据库的事务,使用 MySQL 配置的那个具有明显更多的 CPU、RAM 和磁盘 I/O 开销。 事实上,MySQL 并不是为了存储 BLOB 而设计的,BLOB 几乎构成了 dynmap 的所有地图存储。 通过使用 MySQL 作为映射存储,SQL 事务会消耗额外的 CPU 周期。 并且因为 dynmap 将地图数据存储为图像 BLOB,所以使用 MySQL 实际上会导致比文件存储更差的性能,正如在我的家庭服务器上所观察到的那样。 另见https://stackoverflow.com/questions/5285857/when-is-using-mysql-blob-recommended

  • 猜猜用什么类型的 DB 来存储大量 BLOB? 文件系统! 建议编辑教程推荐nginx+php-fpm+文件存储。 对于具有文件存储的独立 Web 服务器, 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/tiles/ 因为我有 1500 个目录......)

我会自己尝试一下,但是我的 nginx 和 minecraft 服务在不同的机器上。 :sweat_smile:

我遵循了这一点,但没有运气。 我在与 dynmap 相同的服务器上安装了 Apache,并将 web 文件夹移到那里。 尽管控制台中没有任何错误,但如果我导航到 url,它只会显示黑色背景。 我也在使用已经呈现的 SQLite。 我可能错过了什么吗?

也许检查浏览器的控制台以查找错误和/或失败的请求?

@miiichael
是的,从文件系统到数据库的一个大问题是 dynmap 不会将切片导入数据库。 所以你会失去所有的渲染进度。 仍然可以将网络服务器放在与 minecraft 服务器不同的机器上,但它要求您使用 mysql 而不是文件系统。

@洛加诺先生
这是因为 apache 找不到 SQLite 数据库文件,因为它不在 web 文件夹中。 您最好将 apache 指向 dynmap 文件夹中的 web 文件夹,而不是将 web 文件夹复制到其他位置。 或者手动编辑 php 文件(从复制的 web 文件夹中)以从不同的位置获取 SQLite db 文件。

等我有空闲时间,我会写一个更详细的教程,因为我很忙 atm。

@haloflooder
php 文件“dynmap_access”链接到 dynmap 目录中的 SQLite 数据库文件。 我又试了几次,每当我更改配置中的 URL 部分时,我都会得到一个完全空白的页面。 撇开这一点,文件树工作正常,但将其指向 SQLite 会引发 500 错误。 检查 apache 日志显示无法打开数据库文件,并在 SQLite_tiles.php 的第 79 行显示错误。 我也确实将权限更改为 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你能在 pastebin 上提供

当然! 给你: https :

@ads103刚刚注意到您的访问日志显示http://dragonmc/ 。 你的 nginx 配置中有什么?

因为 dynmap 更新也有一段时间了。 我将在我的测试服务器上的 dynmap 上安装一个新版本,并按照我自己的指南查看自 9 月以来是否有任何变化。

是的,dragonmc 是我的 Minecraft 服务器的主机名。 我在本地 DNS 服务器中有它,所以我可以在我的网络浏览器中输入“dragonmc”并浏览到它。 这是我的 apache 配置,以及我将 dynmap 文件复制到的目录。
https://pastebin.com/NQ8fNjqa

@ads103我猜您的服务器也在您的网络本地托管?

是的! 没错。 一切都只是一个本地 IP!

@haloflooder你有机会在你的测试服务器上安装新版本吗?

不幸的是,我不知道 javascript。 我可以看到此错误消息是由map.js的此函数生成的,但我找不到变量"configuration"被赋值的位置。

`函数动态映射(选项){

    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 文件复制到 Web 服务器?

是的,我做到了。 我什至看到我的数据库服务器的网络流量随着它开始呈现而上升,因此配置值至少足够正确,可以将切片 _into_ 数据库。

这是一个问题。 在指南中,您包含了将web文件夹的内容复制到 Web 服务器的说明:
sudo cp -r /home/MyUsername/minecraft/servers/creative/plugins/dynmap/web/ /var/www/dynmap/
您是否打算将web文件夹复制到dynmap文件夹中,_或将web文件夹的 _contents_ 复制到dynmap文件夹中?

@ads103 哦,这是一个很好的收获。 在编写指南大约 12 小时后,应该已经校对了 linux 命令。

我的意思是放一个命令将 web 文件夹中的内容复制到 dynmap webserver 文件夹中。 今天晚些时候,我将使用最新版本的 dynmap 回顾我自己的指南。

MySQL访问设置有任何更新吗? 按照本指南访问 T 并尝试访问地图后,出现黑屏和错误“无法检索配置:错误网关”。

编辑:我是个白痴,忘了安装 php,一切都很好

首先,惊人的指南! 一段时间以来,我一直试图找到这样的东西。 然而,我遇到了与@WearisomelyVerbose相同的问题,我只收到一条消息说“无法检索配置:坏网关”

关于我的构建的一些信息:我的 Minecraft 服务器位于单独的服务器上,并使用 Mysql 服务器来存储所有内容。 在更改配置并重新启动服务器后,我确保从 Dynmap 复制 /web 目录。

我注意到的一件事是,每当我在 Nginx 中测试 Dynmap.conf 文件时,都会收到此错误:
须藤 nginx -t -c /etc/nginx/sites-available/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 Pi。 RP4B(4GB) 托管 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

json_decode()mysqli_connect()函数的快速谷歌搜索使我找到了这两个丢失的包。 安装它们并在我的浏览器中刷新 Dynmap 后,它......刚刚工作。 它只是有效。

感谢您的教程! 我能够将我的 2 Forge 服务器迁移到独立的 Web 服务器配置。 我想指出几点:

  • Forge 不包括 MySQL 的 JDBC 驱动程序(就像 Bukkit 和 Cauldron 那样)。 您需要从https://mvnrepository.com/artifact/mysql/mysql-connector-java获取它并将其放入 mods 目录中。 见#1674。

  • 最好在教程中提到/etc/nginx/sites-available//etc/nginx/sites-enabled仅存在于 Debian/Ubuntu 的 nginx 实现中。 在上游实现中,唯一的配置文件是/etc/nginx/nginx.conf

  • 我建议不要使用 MySQL 进行地图存储,除非您有专用硬件作为 MySQL 服务器。 我有 2 个 Forge 服务器在我的家庭服务器上运行。 由于与数据库的事务,使用 MySQL 配置的那个具有明显更多的 CPU、RAM 和磁盘 I/O 开销。 事实上,MySQL 并不是为了存储 BLOB 而设计的,BLOB 几乎构成了 dynmap 的所有地图存储。 通过使用 MySQL 作为映射存储,SQL 事务会消耗额外的 CPU 周期。 并且因为 dynmap 将地图数据存储为图像 BLOB,所以使用 MySQL 实际上会导致比文件存储更差的性能,正如在我的家庭服务器上所观察到的那样。 另见https://stackoverflow.com/questions/5285857/when-is-using-mysql-blob-recommended

  • 猜猜用什么类型的 DB 来存储大量 BLOB? 文件系统! 建议编辑教程推荐nginx+php-fpm+文件存储。 对于具有文件存储的独立 Web 服务器, 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 :

@database64128感谢您提供有关 json 配置文件的信息。 不过有一项修正:只有在 Dynmap 的 configuration.txt 中设置了login-enabled: false才会创建 json 配置文件。

漏洞? 故意的? 我不知道。 关于我在这里创建的问题的更多信息: https :

我想我会在这里提到它,因为我花了很长时间才找到为什么没有创建 json 配置文件!

我遇到了@MrLogano描述的黑屏问题。 我在单独的服务器上使用 MySQL 和 nginx。 我现在正在执行完全渲染,我可以看到 MySQL 中“Tiles”表中的行数在增长,所以我知道它可以很好地连接到 MySQL。

在浏览器控制台中,我看到以下错误:

来自“ https://REDACTED/standalone/config.js?_=3.0-beta-10-257
加载失败

我发现我的问题是什么。 我用于 MySQL 服务器的主机名可以从我的 Minecraft 服务器解析,但不能从我的 nginx 服务器解析。 我将主机名更改为可从两者解析的名称,现在可以正常工作了。

好吧,我在一台主机上托管了一个 minecraft 服务器,在另一台主机上托管了一个网站(使用 apache 并且不支持反向代理)如何在没有 iframe 的情况下在我的网站上设置动态映射? 因为我没有看到任何教程

@alex17lol本指南不使用反向代理。 您应该能够使用您自己的 Apache 配置而不是此处建议的 Nginx 配置。

@alex17lol本指南不使用反向代理。 您应该能够使用您自己的 Apache 配置而不是此处建议的 Nginx 配置。

我无权访问 sudo 命令,我使用的是网络主机,这就是我的问题

_有人可以将这个添加到维基吗? _

非常感谢你做这个!

SELinux 会引起各种悲痛。 最明显的是完全阻止对 Web 内容的所有访问的那些。 这些显示在 Web 服务器错误日志中。 更微妙的问题会出现在 php-fpm 错误日志中。 处理完 Web 服务器日志中的所有错误后,我仍然遇到黑屏问题和读取配置的可怕失败。 例如:

[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

我发现rsyncscp -r快得多。 scp以极慢的速度缓慢前进,所以我以 300MB 左右的速度将其杀死,然后改用以下命令。 与scp尝试相比,2TB 的传输速度非常快。 在尝试解决问题时,我做了很多次rsync ,并且rsync每次都更新而没有发送整个混乱。

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

有没有人用 DB2 数据库试过这个?

我真的可以在这个 ^^^ #3125 问题上使用一些帮助。 任何人都可以帮助解决这个问题吗? 我仔细检查了本指南。 从头开始多次。 尝试了多种托管解决方案,但每次都遇到相同的问题。 我尝试了评论中提到的一些解决方案,但它们最终无济于事。
我也试过不和谐,但多次没有回应。

@arkD幸运的是,我将在接下来的几周内修改本指南,因为我正在设置另一个独立设置,但使用最新的 Dynmap 1.16.3 前沿版本,该版本尚未在 spigot 页面上公开发布更新。

对我不起作用 - 我必须使用本指南在 NGINX 上启用 php
https://www.digitalocean.com/community/tutorials/how-to-install-linux-nginx-mysql-php-lemp-stack-in-ubuntu-16-04

现在错误“无法检索配置”不再出现,但我仍然出现黑屏,没有侧边栏,没有时钟。 😢

DB 被配置为 sqlite 并且在开始指南之前一切都在工作和呈现

另外:我在控制台中有这个错误。 很有可能是相关的
image

此页面是否有帮助?
0 / 5 - 0 等级

相关问题

thetakodev picture thetakodev  ·  4评论

wtchappell picture wtchappell  ·  4评论

Marbel picture Marbel  ·  3评论

DraxxisGH picture DraxxisGH  ·  3评论

ThybeVB picture ThybeVB  ·  6评论