Dynmap: [Tutorial] Einrichten eines eigenständigen Webservers mit MySQL/SQLite

Erstellt am 14. Sept. 2019  ·  38Kommentare  ·  Quelle: webbukkit/dynmap

Ich habe keine klaren Anweisungen zum Ausführen eines eigenständigen Servers mit MySQL/SQLite gesehen. Auch die Wiki-Seite zum Einrichten des Standalone-Webservers ist längst veraltet.

Nach ein paar Stunden stochern in dynmap. Hier ist ein Tutorial, wie Sie den eigenständigen Webserver unter NGINX auf einem * nix-Server ausführen können.

🔴 WARNUNG 🔴
Wenn Sie dieser Anleitung folgen, werden alle Daten zurückgesetzt, wenn Sie _derzeit nicht_ eine SQL-Datenbank mit dynmap verwenden.

Die Verwendung von MySQL mit Dynmap wird von der Community nicht vollständig getestet.

Dieses Tutorial setzt voraus, dass Sie ein wenig Linux kennen. Wenn Sie Linux nicht kennen, ist es nie zu spät, es zu lernen!

Wenn Sie einen "Minecraft-Server-Host" verwenden. In den meisten Fällen können Sie keinen eigenständigen Webserver mit Ihrem Minecraft-Server-Host einrichten. Sie müssen einen Website-Host oder einen vps erhalten, um einen eigenständigen Webserver für Dynmap zu hosten.

Anmerkungen

  • Ich würde Ihnen dringend empfehlen, MySQL anstelle von SQLite zu verwenden, wenn Sie die Wahl haben. Es kann einige zusätzliche Schritte erfordern, aber sehen Sie auf der positiven Seite. Sie können MySQL mit anderen Plugins verwenden :)

  • Dieses Tutorial erfordert auch, dass Sie sudo verwenden. Wenn Sie keine Sudo-Perms haben, haben Sie entweder kein Glück oder Sie können einen VPS mieten.

  • Wenn Sie SQLite verwenden, können Sie den eigenständigen Webserver nicht auf einem anderen Server/vps hosten. Sie müssen die SQLite-Datenbank auf einen MySQL/MariaDB-Server migrieren, um den Standalone-Server auf einem anderen Server/vps zu hosten. Aber das ist völlig optional, wir werden immer noch behandeln, wie man einen eigenständigen Webserver auf demselben Server wie den Minecraft-Server mit SQLite einrichtet.
  • Ich werde nicht behandeln, wie man einen eigenständigen Webserver mit Windows oder Apache einrichtet, es sei denn, es besteht Interesse. Alternativ können Sie einen günstigen VPS erwerben und dort einen Webserver hosten, wenn Sie MySQL (nicht SQLite) verwenden.

Hinweis für Mitwirkende

Wenn Sie mir die Erlaubnis geben, Wiki zu bearbeiten. Ich werde gerne einen Beitrag zum Wiki leisten, wie man einen eigenständigen Webserver einrichtet und pflegt ;)

Bonus-Tutorials

Ich beschreibe, wie Sie den eigenständigen Webserver mit dem Proxy von Cloudflare zum Laufen bringen, der völlig optional ist. Dies wird DRINGEND empfohlen, wenn Sie Benutzern ermöglichen möchten, sich auf der Dynmap-Website anzumelden. Wenn Sie stattdessen ein SSL-Zertifikat mit certbot installieren möchten, folgen Sie diesem Teil des Bonus-Tutorials nicht.

Ich werde auch behandeln, wie man mit certbot oder einem anderen Anbieter ein SSL-Zertifikat auf dem NGINX-Webserver installiert, was völlig optional ist. Dies wird DRINGEND empfohlen, wenn Sie Benutzern ermöglichen möchten, sich auf der Dynmap-Website anzumelden. Wenn Sie stattdessen den Cloudflare-Proxy verwenden möchten, folgen Sie diesem Teil des Bonus-Tutorials nicht.

Vor-und Nachteile

Vorteile:

  • Die Dynmap-Website wird auch dann verfügbar sein, wenn der Minecraft-Server ausgefallen ist/neu gestartet wird
  • Den Minecraft-Server weniger belasten
  • NGINX hat eine bessere Leistung als der interne Webserver

Nachteile:

  • Etwas nervig beim Einrichten
  • Muss ein bisschen Linux wissen

Was wir behandeln werden

Wir werden diese folgenden Dinge behandeln

  • MySQL/MariaDB einrichten (optional)
  • NGINX mit PHP- und SQL-Unterstützung einrichten
  • Vorbereiten des Dynmap-Plugins für die Verwendung mit MySQL/SQLite
  • Einrichten des Standalone-Servers für MySQL/SQLite
  • Bonus : Einrichten eines Cloudflare-Proxys mit dem NGINX-Webserver (optional)
  • Bonus : NGINX mit SSL-Zertifizierungen einrichten (optional)
  • Die FAQs befinden sich ganz unten in diesem Handbuch.

Einrichten von MySQL/MariaDB und NGINX mit PHP- und SQL-Unterstützung auf Ihrem Server

Um zu beginnen, müssen Sie einen Webserver auf dem Server installieren, auf dem Sie die eigenständige Dynmap-Website hosten möchten. In diesem Teil des Tutorials wird auch die Installation von MySQL auf dem Server behandelt.

Wenn Sie aus irgendeinem Grund SQLite verwenden möchten, können Sie NGINX einfach ohne MySQL/MariaDB installieren. ABER NGINX muss sich auf demselben Server befinden, auf dem der Minecraft-Server gehostet wird.

Wenn Sie einen Website-Host oder einen Minecraft-Host verwenden. Siehe Hinweise unter den Tutorial-Links.

Wo soll ich MySQL/MariaDB installieren?

Sie sollten MySQL im Allgemeinen auf demselben Server wie den Minecraft-Server installieren. Sie können denselben MySQL-Server mit Plugins verwenden, die MySQL verwenden. MySQL wird vom Dynmap-Plugin verwendet, um Daten zu speichern/zu laden, die der Webserver auch liest/schreibt.

Im Allgemeinen gibt es mehr Vorteile, wenn sich der MySQL/MariaDB-Server auf demselben Server/Netzwerk wie der Minecraft-Server befindet, da die Latenz niedriger wäre

Tutorials

Es gibt unzählige Tutorials zum Einrichten von nginx/MySQL/MariaDB im Internet. Hier sind einige Links zu Tutorials zum Einrichten mit einigen Linux-Betriebssystemen.

Machen Sie sich keine Sorgen, wenn das Tutorial Sie auffordert, MariaDB zu installieren, da es so ziemlich dasselbe ist wie MySQL.

Links zu Tutorials

1 Quelle

Testen Sie, ob Ihr Webserver eine Webseite bereitstellt, indem Sie die IP Ihres Webservers in Ihren Webbrowser eingeben. Wenn nichts angezeigt wird, blockiert möglicherweise Ihre Firewall den Port oder Sie haben den nginx-Server nicht gestartet.

Anmerkungen

  • Wenn Sie bereits über einen Webserver verfügen, können Sie diesen Schritt überspringen. ABER Sie benötigen immer noch einen MySQL-Server, wenn Sie noch keinen haben.
  • Wenn Sie einen Website-Host verwenden, wie oben angegeben. Sie können diesen Schritt überspringen, ABER Sie benötigen weiterhin einen MySQL-Server.
  • Wenn Sie einen Minecraft-Host verwenden, benötigen Sie einen VPS/Website-Host. Hoffentlich enthält Ihr Minecraft-Host auch einen MySQL-Server mit Ihrem Paket. Wenn nicht, können Sie den MySQL-Server auf dem VPS installieren, ABER STELLEN SIE SICHER, DASS SIE VIEL PLATZ HABEN .

MySQL einrichten (Überspringen Sie diesen Schritt, wenn Sie SQLite verwenden)

Nun, um den MySQL/MariaDB-Server einzurichten.

Es wird empfohlen, für jede Anwendung einen neuen Benutzer/ein neues Passwort mit eingeschränkten Berechtigungen zu erstellen.

Wenn Sie einen externen Webserver einrichten, können Sie auch eine Firewall (iptables/firewalld/ufw/etc) einrichten, die nur dem Webserver erlaubt, sich mit der Datenbank zu verbinden.

Konfiguration der MySQL/MariaDB-Datenbank

Mit einem Terminal auf dem Server, der den Minecraft-Server hostet, erstellen wir eine neue Datenbank und fügen einige Datenbankbenutzer hinzu.

Erstellen einer neuen Datenbank in MySQL/MariaDB

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

Beispiel (zum Vergrößern anklicken)

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

Neue Benutzer hinzufügen

Hinweis
Wenn sich der MySQL-Server auf demselben Server wie der Minecraft-Server befindet. <minecraftserver_ip> sollte nur 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

Beispiel, wenn sich der Webserver und der Minecraft-Server auf demselben Server befinden (klicken Sie mich zum Erweitern)

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

Wenn Sie ein Oopsie gemacht haben und den mysql-Benutzer löschen müssen. So löschen Sie einen Benutzer.

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

Nachdem Sie einen neuen Benutzer erstellt haben, versuchen Sie, sich beim Benutzer anzumelden. (nachdem Sie sich vom mysql-root-Benutzer über "exit" abmelden)

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

MySQL-Berechtigungen/-Berechtigungen

MySQL verfügt über diese Berechtigungen, die MySQL-Benutzern zugewiesen werden können.

  • ALLE PRIVILEGES - Gewähren Sie dem Benutzer alle Privilegien
  • CREATE - Ermöglicht dem Benutzer das Erstellen von Datenbanken/Tabellen
  • DELETE - Ermöglicht dem Benutzer das Löschen von Zeilen (Daten) aus einer Tabelle
  • DROP - Ermöglicht dem Benutzer das Löschen von Datenbanken und Tabellen
  • EINFÜGEN - Ermöglicht dem Benutzer das Einfügen von Zeilen (Daten) in eine Tabelle
  • SELECT - Ermöglicht dem Benutzer, aus einer Datenbank zu lesen
  • UPDATE - Ermöglicht dem Benutzer, Daten in einer Tabelle zu aktualisieren

Vorbereiten des Dynmap-Plugins

Um nun einige Einstellungen in der Konfiguration über das Plugin zu ändern.

Dynamap installieren

Installieren Sie die neueste Version von dynmap auf dem Server. Die neueste Version sollte noch mit der Minecraft-Version von 1.10 bis 1.14 . funktionieren

Schalten Sie es ein und aus

Schalten Sie den Minecraft-Server ein und stoppen Sie dann den Server. Es sollte einen neuen Ordner namens dynmap im Ordner plugins .

MACHEN SIE EINE SICHERUNG der Datei configuration.txt ! Machen Sie einfach eine Kopie und nennen Sie sie etwa configuration.txt.backup .

Öffnen Sie die Konfigurationsdatei configuration.txt damit wir einige Einstellungen ändern können.

Ändern des Speichers

Ändern Sie den Speicherbereich in der Konfiguration von

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"

zu

MySQL-Beispiel (Klicken zum Erweitern)

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-Beispiel (Klicken zum Erweitern)

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"

Ändern einiger Komponenteneinstellungen

Direkt unter dem Speicherbereich sollte sich ein Bereich namens . befinden
- class: org.dynmap.InternalClientUpdateComponent , die wir auskommentieren werden.

Es würde also so aussehen:

Vorher (zum Vergrößern anklicken)

  - 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


Nachher (zum Vergrößern anklicken)

 # - 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

Gleich nachdem Sie dies getan haben, werden Sie den Abschnitt direkt darunter auskommentieren.
Es wird also so aussehen.

Vorher (zum Vergrößern anklicken)

  #- 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


Nachher (zum Vergrößern anklicken)

  - 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

Deaktivieren des internen Webservers

Jetzt werden wir den internen Webserver deaktivieren, da wir ihn nicht mehr benötigen.

Suchen Sie in der Konfigurationsdatei nach disable-webserver und ändern Sie den Wert von false in true .

Einige URLs für den Webserver ändern

Wir werden einige URLs ändern, die für die Funktion des eigenständigen Dynmap-Webservers erforderlich sind. Dies ist der größte Teil, mit dem die meisten Leute, soweit ich weiß, Probleme hatten.

Suchen Sie den Abschnitt url: in der Konfigurationsdatei. Es sollte so aussehen.

Vorher (zum Vergrößern anklicken)

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/"


Nach [MySQL-Beispiel] (zum Erweitern klicken)

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="


Nach [SQLite-Beispiel] (zum Erweitern klicken)

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="

Ein- und wieder ausschalten

Starten Sie den Minecraft-Server, ABER SCHALTEN SIE IHN NOCH NICHT AUS!
Überprüfen Sie, ob Probleme mit dynmap vorliegen, indem Sie das neueste Protokoll überprüfen. Wenn keine Probleme auftreten, schalten Sie den Server aus.

NOTIZ

Der Hauptgrund, warum Sie den Server ganz am Ende starten und stoppen müssen, ist, dass Dynmap Konfigurationsdateien für den Webserver erstellt. Wenn Sie Einstellungen in configuration.txt geändert haben, besteht die Möglichkeit, dass die Konfigurationsdateien in plugins/dynmap/web geändert werden.

NOCH GRÖßERER HINWEIS

Wenn Sie Benutzern ermöglichen, sich bei dynmap. Sie sollten UNBEDINGT ein SSL-

Optionen, wie der Webserver eingerichtet werden soll

Jetzt kommen wir zum ernsten Geschäft!

Hier sind einige Optionen:

Hosten auf demselben Server mit dem Minecraft-Server (MySQL/SQLite)

Option 1 : Sie können den Webserver mit dem Dynmap-Webordner im Plugin-Ordner verknüpfen (einfacher)
Option 2 : Kopieren Sie den Webordner an einen anderen Speicherort auf dem Server (sicherer)

Hosten auf einem anderen Server, der nicht derselbe Server ist wie der Minecraft-Server (MySQL)

Einzige Option : Ihre einzige Möglichkeit besteht darin, den Webordner auf den Server zu kopieren, der den Webserver hat.

Hosten bei einem Webhost (MySQL)

Wenn Sie einen Webhost wie hostgator, namecheap, 000webhost usw. verwenden, besteht die einzige Möglichkeit darin, den Webordner auf den Webhost zu kopieren.
Ich werde keine Details dazu hinzufügen, da es zu viele Webhosts gibt, um sie abzudecken.

Allgemeine Einrichtung mit dem NGINX Webserver

Bevor Sie zu den nächsten Abschnitten mit den Einrichtungsoptionen gehen. Wir werden die allgemeine Einrichtung für die NGINX-Webserver behandeln.

Entfernen der Standard-Website-Konfiguration

Wenn Sie einen neuen NGINX-Webserver installiert haben. Wir möchten die Standard-Website-Konfiguration entfernen und unsere eigene Konfiguration hinzufügen. Wenn Sie vor diesem Tutorial bereits ein NGINX haben und wissen, was Sie tun. Gehen Sie zum nächsten Abschnitt mit Optionen, wie die Dynmap-Website eingerichtet werden soll.

Die Standardkonfiguration befindet sich normalerweise unter /etc/nginx/sites-available/ und /etc/nginx/sites-enabled .

Sie möchten eine Kopie der Standardeinstellung erstellen, da wir sie verwenden werden.

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

Entfernen Sie nun die Standardkonfiguration von sites-enabled , um die Standard-Site-Konfiguration zu deaktivieren und den nginx-Webserver neu zu starten

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

Einrichten des Webservers, der sich auf demselben Server wie der Minecraft-Server befindet

Wenn Sie Ihren eigenen NGINX-Webserver auf demselben Server wie den Minecraft-Server hosten. Dies ist die richtige Rubrik für Sie!

Notiz
Stellen Sie sicher, dass Sie die allgemeine Einrichtung mit NGINX befolgt haben, bevor Sie mit diesem Tutorial fortfahren

Option 1: Verknüpfen des Webservers mit dem Dynmap-Ordner (zum Erweitern klicken)

Wenn Sie den Webserver einfach (aber nicht zu sicher) einrichten möchten. Dies ist die richtige Option für Sie! Aber ich empfehle Ihnen trotzdem dringend, Option 2 zu befolgen, da dies eine sicherere Option als Option 1 ist.

Vorteile:

  • Ein Befehl weniger auszuführen (wenn Sie so etwas mögen)
  • Sie müssen keine Konfigurationsdateien kopieren, wenn Sie die Dynmap-Konfiguration ändern

Nachteile:

  • Weniger sicher im Vergleich zu Option 2 (umstritten)

Bearbeiten der Website-Konfigurationsdatei

Beginnen Sie mit der Bearbeitung der Dynmap-Konfigurationsdatei in /etc/nginx/sites-available/dynmap

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

Die Konfigurationsdatei sollte ungefähr so ​​aussehen. Ändern Sie die Werte in der Konfiguration nach Ihren Wünschen

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;
        }
}
  • Vergiss nicht zu wechselnzum Linux-Benutzernamen, der den Minecraft-Serverordner enthält.
  • Vergiss nicht zu wechselnin den Ordner, in dem sich der Minecraft-Server befindet

Beispiel:

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

Option 2: Kopieren des Webordners an einen anderen Ort

Wenn Sie den Webserver sicherer einrichten möchten. Dies ist die richtige Option für Sie!

Vorteile:

  • Sicherer als Option 1 (umstritten)

Nachteile:

  • Sie müssen einige Konfigurationsdateien an einen neuen Speicherort kopieren, wenn Sie die Dynmap-Konfiguration geändert haben

Kopieren der Dateien an einen neuen Ort

Kopieren Sie die Dynmap-Webdateien an einen anderen Ort

sudo cp -r /home/<USERNAME>/<MINECRAFTSERVER>/plugins/dynmap/web/ /var/www/dynmap/
  • Vergiss nicht zu wechselnzum Linux-Benutzernamen, der den Minecraft-Serverordner enthält.
  • Vergiss nicht zu wechselnin den Ordner, in dem sich der Minecraft-Server befindet

Beispiel:

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

Bearbeiten der Website-Konfigurationsdatei

Beginnen Sie mit der Bearbeitung der Dynmap-Konfigurationsdatei in /etc/nginx/sites-available/dynmap

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

Die Konfigurationsdatei sollte ungefähr so ​​aussehen. Ändern Sie die Werte in der Konfiguration nach Ihren Wünschen

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;
        }
}

Jetzt machen wir den Dynmap-Server öffentlich! (für beide Optionen 1 und 2)

Nachdem Sie die Schritte in Option 1/2 befolgt haben. Wir werden eine Verknüpfung der Dynmap-Webserver-Konfiguration erstellen und sie in einen Ordner legen.

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

Stellen Sie sicher, dass die Konfigurationsdateien fehlerfrei sind!

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

und starten Sie den Server neu, wenn keine Probleme auftreten.

sudo service nginx restart

Und das sollte es sein!

Geben Sie die Webserver-IP in Ihren Webbrowser ein, Sie sollten Dynmap sehen. Da es leer sein wird, können Sie mit dem Rendern von Kacheln beginnen, indem Sie dem Server beitreten und den Befehl /dynmap fullrender <worldname>

Einrichten des Webservers, der auf einem anderen Server gehostet wird

Wenn Sie Ihren eigenen NGINX-Webserver auf einem anderen Server als dem Server hosten, der den Minecraft-Server hostet. Dies ist die richtige Rubrik für Sie!

Notiz

  • Stellen Sie sicher, dass Sie die allgemeine Einrichtung mit NGINX befolgt haben, bevor Sie mit diesem Tutorial fortfahren
  • Die Website-Konfigurationen sollten sich auf dem Server befinden, der den NGINX-Webserver hostet, nicht auf dem Server, der den Minecraft-Server hostet!

Vorteile:

  • Noch sicherer als die anderen Methoden

Nachteile:

  • Sie müssen einige Konfigurationsdateien an einen neuen Speicherort kopieren, wenn Sie die Dynmap-Konfiguration geändert haben

Kopieren der Dateien an einen neuen Ort

Kopieren Sie die Dynmap-Webdateien an einen anderen Ort

Führen Sie diesen Befehl auf dem Server aus, der den Minecraft-Server hostet. Dieser Befehl kopiert den Ordner vom Minecraft-Server auf den Webserver. Es wird Sie nach dem Passwort für den Webserver fragen.

sudo scp -r /home/<USERNAME>/<MINECRAFTSERVER>/plugins/dynmap/web <WEBSERVER_USERNAME>@<WEBSERVER_IP>:/var/www/dynmap
  • Vergiss nicht zu wechselnzum Linux-Benutzernamen des Servers, auf dem sich der Minecraft-Serverordner befindet.
  • Vergiss nicht zu wechselnin den Ordner, in dem sich der Minecraft-Server befindet
  • Nicht für

Beispiel:

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

Bearbeiten der Website-Konfigurationsdatei

Beginnen Sie mit der Bearbeitung der Dynmap-Konfigurationsdatei in /etc/nginx/sites-available/dynmap

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

Die Konfigurationsdatei sollte ungefähr so ​​aussehen. Ändern Sie die Werte in der Konfiguration nach Ihren Wünschen

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;
        }
}

Jetzt machen wir den Dynmap-Server öffentlich!

Nachdem Sie die Schritte befolgt haben. Wir werden eine Verknüpfung der Dynmap-Webserver-Konfiguration erstellen und sie in einen Ordner legen.

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

Stellen Sie sicher, dass die Konfigurationsdateien fehlerfrei sind!

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

und starten Sie den Server neu, wenn keine Probleme auftreten.

sudo service nginx restart

Und das sollte es sein!

Geben Sie die Webserver-IP in Ihren Webbrowser ein, Sie sollten Dynmap sehen. Da es leer sein wird, können Sie mit dem Rendern von Kacheln beginnen, indem Sie dem Server beitreten und den Befehl /dynmap fullrender <worldname>

Einrichten des Webservers, der von einem Webhost gehostet wird

Wenn Sie einen Webhost verwenden, da Sie keinen selbst einrichten möchten. Dies ist die richtige Rubrik für Sie!

Kopieren des Webordners auf den Webhost

Kopiere die Dateien vom Minecraft-Server in einen Ordner auf deinem Computer. Die Dateien, die Sie kopieren möchten, sollten sich in plugins/dynmap/web auf dem Minecraft-Server befinden.

Kopieren Sie die Dateien auf Ihren Webhost, vorzugsweise in ein neues Verzeichnis, es sei denn, es handelt sich um einen dedizierten Dynmap-Webhost.

Beenden!

Ja wirklich! Sie sind fertig.

Bonus-Tutorials

Wenn Sie Ihren eigenen NGINX-Webserver installiert haben, können Sie diesen Teil des Bonus-Tutorials befolgen, um Ihren Webserver mit Dynmap-Logins zu sichern. SIE SOLLTEN IMMER mit den Zugangsdaten des Benutzers

Sie können einer der drei Optionen folgen, um Ihren Webserver sicher zu machen

Installieren eines KOSTENLOSEN SSL-Zertifikats mit CertBot

Sie können einfach diesen Anweisungen auf der certbot-Website

Beachten Sie, dass die Zertifizierungen von certbot schneller ablaufen als bei anderen Anbietern, aber sie haben eine automatische Möglichkeit, Ihre Zertifizierungen zu erneuern, wenn Sie deren Anweisungen dazu befolgen.

Installieren eines SSL-Zertifikats von einem anderen Anbieter

Alternativ können Sie ein SSL-Zertifikat von einem anderen Anbieter wie NameCheap beziehen. Laden Sie die öffentliche Zertifizierung und den privaten Schlüssel vom Anbieter herunter. SIE SOLLTEN DEN PRIVATEN SCHLÜSSEL NIE MIT EINER ANDEREN PERSON TEILEN ODER ÖFFENTLICH MACHEN . Es ist ausschließlich für Ihren Webserver gedacht und sollte nicht nur zum Greifen nah sein.

Legen Sie die Zertifizierungsdatei in /etc/ssl/certs/<certification_file>.pem
und lege den privaten Schlüssel in /etc/ssl/private/<private_key_file>.pem

Erstellen Sie ein Backup der Website-Konfiguration, bevor wir Änderungen vornehmen

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

Wenn Sie einen Oopsie machen und zurückkehren müssen, führen Sie diesen Befehl aus

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

Sehen Sie sich in der NGINX-Website-Konfiguration die Unterschiede zwischen Ihrer aktuellen Konfiguration an und fügen Sie die Änderungen hinzu, die Sie in dieser Beispielkonfiguration sehen.

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;
        }
}

Dann müssen Sie nur noch den NGINX-Webserver neu starten.

sudo service nginx restart

Gehen Sie zu Ihrer dynmap-Website und sie sollte jetzt sicher sein!
Very secure

Einrichten von NGINX mit dem Proxy von Cloudflare (zuletzt aktualisiert am 19. September 2019)

Eine gute Sache am Proxy von Cloudflare ist, dass sie eine spezielle Zertifizierung haben, die nur für die Kommunikation zwischen Ihrem Webserver und ihren Diensten dient. Sie können die Zertifizierung auch bis zu 15 Jahre dauern lassen. Es ist jedoch nur eine Alternative zu einer "echten" SSL-Zertifizierung.

Melden Sie sich zuerst bei cloudflare an und gehen Sie zu der Domäne, mit der Sie den Proxy einrichten möchten. Dann gehen Sie zum Abschnitt "SSL/TLS"
cloudflare dashboard

Klicken Sie im Abschnitt Origin Certificates auf "Zertifikat erstellen".
Wählen Sie Let Cloudflare generate a private key and a CSR und setzen Sie Private key type auf ECDSA

Fügen Sie den Hostnamen map.YOURDOMAIN.com wenn Sie die Dynmap-Website auf map.YOURDOMAIN.com platzieren möchten.

Stellen Sie die Gültigkeit des Zertifikats auf einen beliebigen Wert ein (15 Jahre klingt gut, Amirit?).

Klicken Sie auf Weiter und Sie sollten ein neues SSL-Zertifikat und einen privaten Schlüssel auf Ihrem Bildschirm sehen. Jetzt kopieren wir den Text und fügen ihn über das Terminal in eine Datei ein.

Zuerst erstellen wir eine Zertifikatsdatei und fügen den Text ein. Der Text sollte mit -----BEGIN CERTIFICATE----- und mit -----END CERTIFICATE----- enden

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

Als nächstes erstellen wir eine private Schlüsseldatei und fügen den Text ein. Der Text sollte mit -----BEGIN PRIVATE KEY----- und mit -----END PRIVATE KEY----- enden

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

Jetzt werden wir die NGINX-Website-Konfiguration bearbeiten. Erstellen Sie ein Backup der Website-Konfiguration, bevor wir Änderungen vornehmen

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

Wenn Sie einen Oopsie machen und zurückkehren müssen, führen Sie diesen Befehl aus

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

Sehen Sie sich in der NGINX-Website-Konfiguration die Unterschiede zwischen Ihrer aktuellen Konfiguration an und fügen Sie die Änderungen hinzu, die Sie in dieser Beispielkonfiguration sehen.

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;
        }
}

Dann müssen Sie nur noch den NGINX-Webserver neu starten.

sudo service nginx restart

Gehen Sie zu Ihrer dynmap-Website und sie sollte jetzt sicher sein!
Very secure

FAQs

Wie mache ich Linux?

Sehr vorsichtig.

Aber hier ist die ernsthafte Antwort.
Sie können sich mit etwas Beliebtem wie PuTTY oder einem anderen SSH-Client Ihrer Wahl mit Ihrem Linux-Server verbinden. Sie können sich am Terminal anmelden, wenn Sie den Benutzer/das Passwort haben.

Im Internet finden Sie leicht Anleitungen/Tutorials zur Verwendung von Linux. Aber Sie sollten immer überprüfen, was ein Befehl macht, bevor Sie ihn ausführen!

Meine Website wird nicht angezeigt (NGINX)
Stellen Sie sicher, dass Ihre Website port-forwarded ist.

Der Standardport wäre 80, aber wenn Sie das Tutorial zur Installation einer SSL-Zertifizierung befolgt haben, wäre der Port 443.

Aber wenn das nicht funktioniert, überprüfen Sie, ob NGINX ausgeführt wird, indem Sie den Befehl ausführen

sudo service nginx status

und es sollte Ihnen sagen, was falsch sein könnte. Sie können die Konfigurationsdatei auch testen, indem Sie den Befehl ausführen

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


Ich sehe keine Bilder auf der dynmap-Website!

Da wir mit einer frischen neuen Datenbank ohne Daten begonnen haben. Es kann einige Zeit dauern, bis Bilder auf Dynmap angezeigt werden.

Sie können den Befehl im Spiel ausführen, um eine Welt vollständig zu rendern, wenn Sie möchten /dynmap fullrender <worldname>

Wie kommt es, dass es kein Tutorial mit Windows oder Apache gibt?

Ich beschloss, die Einrichtung eines eigenständigen Webservers mit Windows oder Apache nicht zu behandeln, da die meisten Leute heutzutage Linux und NGINX verwenden werden. Aber wenn genug Leute fragen, könnte ich Fenster und/oder Apache abdecken

Ich habe meine Meinung geändert, kann ich von SQL zurück konvertieren?

Ja, Sie sollten in der Lage sein, zur vorherigen Methode zurückzukehren, wenn Sie aus den vorherigen Schritten eine Sicherungsdatei configuration.txt.backup .

Einfach configuration.txt löschen und configuration.txt.backup in configuration.txt umbenennen und schon kann es losgehen!

Wieso den?

Weil warum nicht?

Es gibt mehr Möglichkeiten, wenn dynmap SQL verwendet. Es wäre schneller zu sichern, die Leute können die Dynmap-Website auch dann verwenden, wenn der Server ausgefallen ist, und mehr!

Zeigt es immer noch Spielersymbole und/oder Chat an?

Ja, das Player-Symbol sollte auf der Webseite noch aktualisiert werden.

Die Chatbox sollte auch gut funktionieren.

Hinterlassen Sie einen Kommentar, wenn Sie Fragen oder Probleme haben!

Doc improvement Feature

Hilfreichster Kommentar

Danke für die Anleitung! Ich konnte meine 2 Forge-Server auf die eigenständige Webserver-Konfiguration migrieren. Und ich möchte auf ein paar Dinge hinweisen:

  • Forge enthält keinen JDBC-Treiber für MySQL (wie Bukkit und Cauldron). Sie müssen es von https://mvnrepository.com/artifact/mysql/mysql-connector-java herunterladen und im Mods-Verzeichnis ablegen. Siehe #1674.

  • Es wäre besser, im Tutorial zu erwähnen, dass /etc/nginx/sites-available/ und /etc/nginx/sites-enabled nur in den nginx-Implementierungen von Debian/Ubuntu existieren. In der Upstream-Implementierung ist die einzige Konfigurationsdatei /etc/nginx/nginx.conf .

  • Ich würde davon abraten, MySQL für die Kartenspeicherung zu verwenden, es sei denn, Sie haben dedizierte Hardware, die als MySQL-Server fungiert. Ich habe 2 Forge-Server auf meinem Home-Server. Der mit MySQL konfigurierte hat aufgrund von Transaktionen mit der Datenbank deutlich mehr CPU-, RAM- und Festplatten-I/O-Overhead. Tatsächlich wurde MySQL nicht zum Speichern von BLOBs entwickelt, die fast den gesamten Kartenspeicher von dynmap ausmachen. Durch die Verwendung von MySQL als Kartenspeicher werden zusätzliche CPU-Zyklen durch SQL-Transaktionen verbraucht. Und da Dynmap Kartendaten als Bild-BLOBs speichert, führt die Verwendung von MySQL tatsächlich zu einer viel schlechteren Leistung als die Dateispeicherung, wie auf meinem Heimserver beobachtet. Siehe auch https://stackoverflow.com/questions/5285857/when-is-using-mysql-blob-recommended

  • Ratet mal, welcher DB-Typ zum Speichern einer großen Anzahl von BLOBs entwickelt wurde? Das Dateisystem! Ich möchte vorschlagen, das Tutorial zu bearbeiten, um nginx + php-fpm + Dateispeicher zu empfehlen. Für einen eigenständigen Webserver mit Dateispeicher sollte der Abschnitt url: wie folgt geändert werden:

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/'

Alle 38 Kommentare

Beachten Sie, dass Dynmapforge-Benutzer kein plugins/dynmap/web Verzeichnis haben. Auf einem meiner Server gibt es zum Beispiel:

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

(Ich filtere dynmap/web/tiles/ heraus, weil ich dort 1500 Verzeichnisse habe...)

Ich würde das selbst ausprobieren, aber meine Nginx- und Minecraft-Dienste befinden sich auf verschiedenen Maschinen. :sweat_smile:

Ich habe das durchgezogen, aber ohne Glück. Ich habe Apache auf demselben Server wie dynmap und habe den Webordner dorthin verschoben. Obwohl in der Konsole keine Fehler auftreten, wird beim Navigieren zur URL nur ein schwarzer Hintergrund angezeigt. Ich verwende auch SQLite, das bereits gerendert wurde. Habe ich vielleicht etwas übersehen?

Vielleicht überprüfen Sie die Konsole Ihres Browsers, um nach Fehlern und/oder fehlgeschlagenen Anfragen zu suchen?

@miiichael
Ja, das große Problem beim Wechsel vom Dateisystem zu einer Datenbank ist, dass Dynmap die Kacheln nicht in eine Datenbank importiert. Sie würden also Ihren gesamten Rendering-Fortschritt verlieren. Es ist immer noch möglich, den Webserver auf einem anderen Computer als dem Minecraft-Server zu installieren, aber Sie müssen mysql anstelle des Dateisystems verwenden.

@MrLogano
Dies liegt daran, dass Apache die SQLite-Datenbankdatei nicht finden kann, da sie sich nicht im Webordner befindet. Es ist wahrscheinlich besser, Apache auf den Webordner zu verweisen, der sich im Dynmap-Ordner befindet, anstatt den Webordner an einen anderen Ort zu kopieren. Oder bearbeiten Sie die PHP-Dateien (aus dem kopierten Webordner) manuell, um die SQLite-DB-Datei von einem anderen Speicherort abzurufen.

Ich werde ein ausführlicheres Tutorial schreiben, sobald ich etwas Freizeit habe, da ich ziemlich beschäftigt bin.

@haloflooder
Die PHP-Datei "dynmap_access" verlinkt auf die SQLite-Datenbankdatei im dynmap-Verzeichnis. Ich habe es noch ein paar Mal versucht, und immer wenn ich den URL-Abschnitt in der Konfiguration ändere, erhalte ich nur eine komplett leere Seite. Wenn wir das weglassen, funktioniert der Dateibaum einwandfrei, aber wenn er auf SQLite verweist, wird ein 500-Fehler ausgegeben. Das Überprüfen des Apache-Protokolls sagt, dass die Datenbankdatei nicht geöffnet werden kann, und es zeigt einen Fehler in Zeile 79 in SQLite_tiles.php an. Ich habe die Berechtigungen auch auf 775 geändert, ohne Glück.

Ich folge Ihrem Tutorial, aber auf der Webseite stand "Konfiguration konnte nicht abgerufen werden: Interner Serverfehler"
wie kann ich?

Ich habe das gleiche Problem wie @gundami. Weitere Untersuchungen zeigen diese Fehlermeldung in /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 Haben Sie eine Lösung gefunden? Sorry für die späte Antwort, ich war die letzten Monate unglaublich beschäftigt.

@gundami @ads103 Können Sie die Konfiguration für Dynmap auf Pastebin bereitstellen? Vergessen Sie nicht, sensible Informationen wie die MySQL-Anmeldeinformationen zu zensieren.

Sicher! Hier gehts: https://pastebin.com/1xQ2Unjb

@ads103 Habe gerade festgestellt, dass in Ihrem Zugriffsprotokoll http://dragonmc/ . Was hast du in deiner nginx-Konfiguration?

Da es auch schon eine Weile her ist, dass dynmap aktualisiert wurde. Ich werde eine neue Version auf dynmap auf meinem Testserver installieren und meiner eigenen Anleitung folgen, um zu sehen, ob sich seit September etwas geändert hat.

Ja, Dragonmc ist der Hostname meines Minecraft-Servers. Ich habe es auf einem lokalen DNS-Server, also kann ich einfach "dragonmc" in meinen Webbrowser eingeben und dorthin navigieren. Hier ist meine Apache-Konfiguration und das Verzeichnis, in das ich meine Dynmap-Dateien kopiert habe.
https://pastebin.com/NQ8fNjqa

@ads103 Ich

Ja! Das ist richtig. Alles ist nur eine lokale IP entfernt!

@haloflooder hatten Sie die Möglichkeit, eine neue Version auf Ihrem

Leider kenne ich kein Javascript. Ich kann sehen, dass diese Fehlermeldung von dieser Funktion in map.js generiert wird, aber ich kann nicht finden, wo der Variablen "configuration" ein Wert zugewiesen wird.

`Funktion DynMap(Optionen) {

    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 Entschuldigung, ich bin mit der Arbeit beschäftigt, da ich eine Frist für etwas

Haben Sie die Webdateien auf den Webserver kopiert, nachdem Dynmap die Konfigurationswerte mit der geänderten Konfiguration ändern ließ?

Ja, habe ich. Ich habe sogar gesehen, dass der Netzwerkverkehr zu meinem Datenbankserver anstieg, als er mit dem Rendern begann, sodass die Konfigurationswerte zumindest richtig genug sind, um Kacheln _in_ die Datenbank zu bekommen.

Hier ist eine Frage. In der Anleitung haben Sie diese Anleitung zum Kopieren des Inhalts des web Ordners auf den Webserver eingefügt:
sudo cp -r /home/MyUsername/minecraft/servers/creative/plugins/dynmap/web/ /var/www/dynmap/
Wollten Sie den Ordner web in den Ordner dynmap kopieren, _oder_ den _contents_ des Ordners web Ordner dynmap ?

@ads103 Oooo, das ist ein guter Fang. Hätte die Linux-Befehle nach etwa 12 Stunden Arbeit an der Anleitung Korrektur lesen sollen.

Ich wollte einen Befehl einfügen, um den Inhalt des Webordners in den Dynmap-Webserverordner zu kopieren. Ich werde heute meinen eigenen Leitfaden mit der neuesten Version von dynmap später durchgehen.

Irgendein Update zu den MySQL-Zugriffseinstellungen? Nachdem ich dieser Anleitung zum T gefolgt und versucht habe, auf die Karte zuzugreifen, erhalte ich einen schwarzen Bildschirm und die Fehlermeldung "Konfiguration konnte nicht abgerufen werden: Bad Gateway".

EDIT: Ich bin ein Idiot und habe vergessen, PHP zu installieren, alles ist gut

Erstmal eine tolle Anleitung! Ich versuche schon seit einiger Zeit so etwas zu finden. Ich habe jedoch das gleiche Problem wie bei @WearisomelyVerbose, bei dem ich nur die Meldung "Konfiguration konnte nicht abgerufen werden: Bad Gateway"

Einige Infos zu meinem Build: Mein Minecraft-Server befindet sich auf einem separaten Server und verwendet einen Mysql-Server, um alles zu speichern. Ich habe darauf geachtet, das /web-Verzeichnis von Dynmap zu kopieren, nachdem ich die Konfigurationen geändert und den Server neu gestartet habe.

Eine Sache, die mir aufgefallen ist, wenn ich die Datei Dynmap.conf in Nginx teste, erhalte ich diese Fehlermeldung:
sudo nginx -t -c /etc/nginx/sites-available/dynmap
nginx: [emerg] "server"-Direktive ist hier in /etc/nginx/sites-available/ dynmap:2 nicht erlaubt
nginx: Konfigurationsdatei /etc/nginx/sites-available/dynmap-Test fehlgeschlagen

@ads103 @gundami
Ich glaube, ich habe den gleichen Fehler: "Konnte Konfiguration nicht abrufen: Fehler" nach dem Öffnen der Karte über den Webserver.

Bei mir hat das Ändern der Datei "...\standalone\MySQL_config.php" auf dem Webserver das Problem gelöst:
...
$dbhost = 'localhost';
...
statt der IP-Adresse. Aber ich kenne die Details nicht, hoffentlich hilft es jemandem.

Mein Setup ist übrigens 2 Raspberry Pis. RP4B(4GB) hostet Minecraft (unter anderem) und ein RP3B+ hostet DynMap (Apache+SQL)

Danke für die tolle Anleitung!! :)

Ich konnte meine Probleme lösen.

Zumindest meine waren im Nachhinein ziemlich einfach. Ich habe Abhängigkeiten vermisst.

Insbesondere fehlten mir php-json und php-mysqlnd. (Ich verwende ein Fedora 31-System und die Ubuntu-Paketnamen sind etwas anders.)

Ich fand heraus, dass mir diese Pakete fehlten, indem ich erkannte, dass php-fpm eine separate Anwendung mit eigenen Protokolldateien war, die sich in /var/log/php-fpm . Beim Auschecken von www-error.log wurden diese beiden Protokollzeilen gefunden:

[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

Eine kurze Google-Suche nach den Funktionen json_decode() und mysqli_connect() führte mich zu diesen beiden fehlenden Paketen. Nachdem ich sie installiert und Dynmap in meinem Browser aktualisiert hatte, funktionierte es einfach. Es hat einfach funktioniert.

Danke für die Anleitung! Ich konnte meine 2 Forge-Server auf die eigenständige Webserver-Konfiguration migrieren. Und ich möchte auf ein paar Dinge hinweisen:

  • Forge enthält keinen JDBC-Treiber für MySQL (wie Bukkit und Cauldron). Sie müssen es von https://mvnrepository.com/artifact/mysql/mysql-connector-java herunterladen und im Mods-Verzeichnis ablegen. Siehe #1674.

  • Es wäre besser, im Tutorial zu erwähnen, dass /etc/nginx/sites-available/ und /etc/nginx/sites-enabled nur in den nginx-Implementierungen von Debian/Ubuntu existieren. In der Upstream-Implementierung ist die einzige Konfigurationsdatei /etc/nginx/nginx.conf .

  • Ich würde davon abraten, MySQL für die Kartenspeicherung zu verwenden, es sei denn, Sie haben dedizierte Hardware, die als MySQL-Server fungiert. Ich habe 2 Forge-Server auf meinem Home-Server. Der mit MySQL konfigurierte hat aufgrund von Transaktionen mit der Datenbank deutlich mehr CPU-, RAM- und Festplatten-I/O-Overhead. Tatsächlich wurde MySQL nicht zum Speichern von BLOBs entwickelt, die fast den gesamten Kartenspeicher von dynmap ausmachen. Durch die Verwendung von MySQL als Kartenspeicher werden zusätzliche CPU-Zyklen durch SQL-Transaktionen verbraucht. Und da Dynmap Kartendaten als Bild-BLOBs speichert, führt die Verwendung von MySQL tatsächlich zu einer viel schlechteren Leistung als die Dateispeicherung, wie auf meinem Heimserver beobachtet. Siehe auch https://stackoverflow.com/questions/5285857/when-is-using-mysql-blob-recommended

  • Ratet mal, welcher DB-Typ zum Speichern einer großen Anzahl von BLOBs entwickelt wurde? Das Dateisystem! Ich möchte vorschlagen, das Tutorial zu bearbeiten, um nginx + php-fpm + Dateispeicher zu empfehlen. Für einen eigenständigen Webserver mit Dateispeicher sollte der Abschnitt url: wie folgt geändert werden:

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/'

Ein weiteres Dankeschön @haloflooder für die Erstellung des Tutorials! Ich bin auch migriert und es funktioniert gut.

Ich fand auch das von Frumple freundlicherweise geteilte Setup für den MRT-Server nützlich: https://github.com/Frumple/mrt-docker-services/blob/master/containers/dynmap-main/docker-compose.yml

@database64128 Vielen Dank für die Informationen zu den json-Konfigurationsdateien. Eine Änderung jedoch: Die json-Konfigurationsdateien werden nur erstellt, wenn login-enabled: false in der configuration.txt von Dynmap festgelegt ist.

Insekt? Absicht? Ich weiß nicht. Weitere Informationen zu dem von mir erstellten Problem hier: https://github.com/webbukkit/dynmap/issues/2848.

Ich dachte, ich erwähne es hier, weil ich lange gebraucht habe, um herauszufinden, warum die JSON-Konfigurationsdateien nicht erstellt wurden!

Ich habe das von @MrLogano beschriebene Problem mit dem schwarzen Bildschirm. Ich verwende MySQL und nginx auf einem separaten Server. Ich führe gerade einen Fullrender durch und kann sehen, wie die Zeilenanzahl in der Tabelle "Tiles" in MySQL wächst, also weiß ich, dass die Verbindung zu MySQL einwandfrei funktioniert.

In der Browserkonsole sehe ich die folgenden Fehler:

Das Skript von „ https://REDACTED/standalone/config.js?_=3.0-beta-10-257 “ wurde geladen, obwohl sein MIME-Typ („text/html“) kein gültiger JavaScript-MIME-Typ ist.
Laden fehlgeschlagen für die

Ich habe herausgefunden, was mein Problem war. Der Hostname, den ich für den MySQL-Server verwendet habe, war von meinem Minecraft-Server auflösbar, aber nicht von meinem Nginx-Server. Ich habe den Hostnamen in etwas geändert, das von beiden auflösbar war und jetzt funktioniert es.

Nun, ich habe einen Minecraft-Server, der auf einem Host gehostet wird und eine Website, die auf einem anderen Host gehostet wird (der Apache verwendet und keine Reverse-Proxys unterstützt) Wie richte ich eine Dynmap auf meiner Website ohne Iframe ein? weil ich kein Tutorial dafür sehe

@alex17lol Dieses Handbuch verwendet keinen Reverse-Proxy. Sie sollten in der Lage sein, Ihre eigene Apache-Konfiguration anstelle der hier vorgeschlagenen Nginx-Konfigurationen zu verwenden.

@alex17lol Dieses Handbuch verwendet keinen Reverse-Proxy. Sie sollten in der Lage sein, Ihre eigene Apache-Konfiguration anstelle der hier vorgeschlagenen Nginx-Konfigurationen zu verwenden.

Ich habe keinen Zugriff auf Sudo-Befehle Ich verwende einen Webhost, das ist mein Problem

_ Kann das jemand dem Wiki hinzufügen? _

Vielen Dank, dass Sie das gemacht haben!

SELinux kann alle Arten von Kummer verursachen. Am offensichtlichsten sind diejenigen, die jeglichen Zugriff auf Webinhalte komplett blockieren. Diese werden im Fehlerprotokoll des Webservers angezeigt. Subtilere Probleme können im php-fpm-Fehlerprotokoll auftauchen. Nachdem ich alle Fehler im Webserver-Log behoben hatte, hatte ich immer noch Probleme mit dem schwarzen Bildschirm und den gefürchteten Fehler beim Lesen der Konfiguration. Beispielsweise:

[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;

Was dieses letzte Rätsel für mich gelöst hat, war:

# setsebool -P httpd_can_network_connect_db=1

Ich fand, dass rsync VIEL schneller ist als scp -r . scp trottete mit einer abgrundtief langsamen Geschwindigkeit, also habe ich es mit ungefähr 300 MB gelöscht und dann stattdessen den folgenden Befehl verwendet. 2 TB wurden unglaublich schnell übertragen, verglichen mit dem Versuch von scp . Ich habe rsync einige Male gemacht, als ich versuchte, Probleme zu lösen, und rsync aktualisierte, ohne jedes Mal das ganze Durcheinander zu senden.

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

Hat das schon mal jemand mit einer DB2-Datenbank versucht?

Ich könnte wirklich etwas Hilfe bei diesem ^^^ Problem Nr. 3125 gebrauchen. kann jemand bei diesem Problem helfen? Ich habe diese Anleitung dreimal überprüft. mehrfach von vorne angefangen. Ich habe mehrere Hosting-Lösungen ausprobiert, aber ich habe jedes Mal das gleiche Problem. Ich habe einige in den Kommentaren vermerkte Lösungen ausprobiert, aber sie waren letztendlich nicht hilfreich.
Ich habe es auch mit Discord versucht, aber mehrmals keine Antwort erhalten.

@arkD Zum

Hat bei mir nicht funktioniert - ich musste PHP auf NGINX mit dieser Anleitung aktivieren
https://www.digitalocean.com/community/tutorials/how-to-install-linux-nginx-mysql-php-lemp-stack-in-ubuntu-16-04

Jetzt erscheint der Fehler "Konnte Konfiguration nicht abrufen" nicht mehr, aber ich erhalte immer noch einen schwarzen Bildschirm , keine Seitenleiste, keine Uhr. 😢.

DB ist für sqlite konfiguriert und alles hat funktioniert und gerendert, bevor die Anleitung gestartet wurde

Außerdem: Ich habe diesen Fehler in der Konsole. Es hängt sehr wahrscheinlich zusammen
image

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen

Verwandte Themen

ThorinEk picture ThorinEk  ·  5Kommentare

Lachney picture Lachney  ·  3Kommentare

MissFox0810 picture MissFox0810  ·  3Kommentare

uncovery picture uncovery  ·  7Kommentare

thetakodev picture thetakodev  ·  4Kommentare