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.
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 mir die Erlaubnis geben, Wiki zu bearbeiten. Ich werde gerne einen Beitrag zum Wiki leisten, wie man einen eigenständigen Webserver einrichtet und pflegt ;)
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.
Vorteile:
Nachteile:
Wir werden diese folgenden Dinge behandeln
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.
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
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.
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.
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.
Mit einem Terminal auf dem Server, der den Minecraft-Server hostet, erstellen wir eine neue Datenbank und fügen einige Datenbankbenutzer hinzu.
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
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 verfügt über diese Berechtigungen, die MySQL-Benutzern zugewiesen werden können.
Um nun einige Einstellungen in der Konfiguration über das Plugin zu ändern.
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 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 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"
zuMySQL-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"
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
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
.
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="
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.
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.
Wenn Sie Benutzern ermöglichen, sich bei dynmap. Sie sollten UNBEDINGT ein SSL-
Jetzt kommen wir zum ernsten Geschäft!
Hier sind einige Optionen:
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)
Einzige Option : Ihre einzige Möglichkeit besteht darin, den Webordner auf den Server zu kopieren, der den Webserver hat.
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.
Bevor Sie zu den nächsten Abschnitten mit den Einrichtungsoptionen gehen. Wir werden die allgemeine Einrichtung für die NGINX-Webserver behandeln.
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
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
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:
Nachteile:
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;
}
}
Beispiel:
root /home/someuser/minecraft/servers/creative/plugins/dynmap/web;
Wenn Sie den Webserver sicherer einrichten möchten. Dies ist die richtige Option für Sie!
Vorteile:
Nachteile:
Kopieren Sie die Dynmap-Webdateien an einen anderen Ort
sudo cp -r /home/<USERNAME>/<MINECRAFTSERVER>/plugins/dynmap/web/ /var/www/dynmap/
Beispiel:
sudo cp -r /home/MyUsername/minecraft/servers/creative/plugins/dynmap/web/ /var/www/dynmap/
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;
}
}
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>
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
Vorteile:
Nachteile:
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
Beispiel:
sudo scp -r /home/SomeUserName1/minecraft/servers/creative/plugins/dynmap/web [email protected]:/var/www/dynmap
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;
}
}
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>
Wenn Sie einen Webhost verwenden, da Sie keinen selbst einrichten möchten. Dies ist die richtige Rubrik für Sie!
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.
Ja wirklich! Sie sind fertig.
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
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.
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!
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"
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!
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 abdeckenIch 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.
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
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: