Dynmap: [Tutoriel] Configurer un serveur web autonome avec MySQL/SQLite

Créé le 14 sept. 2019  ·  38Commentaires  ·  Source: webbukkit/dynmap

Je n'ai pas vu d'instructions claires sur l'exécution d'un serveur autonome avec MySQL/SQLite. La page wiki expliquant comment configurer le serveur Web autonome est également obsolète de loin.

Après quelques heures à piquer sur dynmap. Voici un tutoriel sur la façon de faire fonctionner le serveur Web autonome sur NGINX sur un serveur * nix.

ATTENTION
Suivre ce guide réinitialisera toutes les données si vous n'utilisez _actuellement pas_ une base de données SQL avec dynmap.

L'utilisation de MySQL avec Dynmap n'est pas entièrement testée par la communauté.

Ce tutoriel suppose que vous connaissez un peu Linux. Si vous ne savez pas utiliser Linux, il n'est jamais trop tard pour apprendre !

Si vous utilisez un "hôte de serveur minecraft". Dans la plupart des cas, vous ne pourrez pas configurer un serveur Web autonome avec votre hôte de serveur minecraft. Vous devrez obtenir un hébergeur de site Web ou un vps pour héberger un serveur Web autonome pour Dynmap.

Remarques

  • Je vous recommande fortement d'utiliser MySQL au lieu de SQLite si vous avez le choix. Cela peut nécessiter quelques étapes supplémentaires, mais regardez du bon côté. Vous pouvez utiliser MySQL avec d'autres plugins :)

  • Ce tutoriel nécessite également que vous utilisiez sudo. Si vous n'avez pas de perm sudo, vous n'avez pas de chance ou vous pouvez louer un VPS.

  • Si vous utilisez SQLite, vous ne pouvez pas héberger le serveur Web autonome sur un autre serveur/vps. Vous devrez migrer la base de données SQLite vers un serveur MySQL/MariaDB afin d'héberger le serveur autonome sur un autre serveur/vps. Mais c'est complètement facultatif, nous verrons toujours comment configurer un serveur Web autonome sur le même serveur que le serveur minecraft avec SQLite.
  • Je ne parlerai pas de la configuration d'un serveur Web autonome avec Windows ou Apache, à moins que cela ne suscite un certain intérêt. Comme alternative, vous pouvez obtenir un VPS bon marché et y héberger un serveur Web si vous utilisez MySQL (pas SQLite).

Note aux contributeurs

Si vous me donnez la permission de modifier le wiki. Je serai ravi d'apporter une contribution au wiki sur la façon de configurer un serveur Web autonome et de le maintenir ;)

Tutoriels bonus

Je explique comment faire fonctionner le serveur Web autonome avec le proxy de cloudflare, qui est totalement facultatif. Ceci est FORTEMENT recommandé si vous voulez permettre aux utilisateurs de se connecter au site Web dynmap. Si vous souhaitez installer un certificat SSL avec certbot à la place, ne suivez pas cette partie du didacticiel bonus.

Je vais également expliquer comment installer un certificat SSL sur le serveur Web NGINX avec certbot ou un autre fournisseur qui est complètement facultatif. Ceci est FORTEMENT recommandé si vous voulez permettre aux utilisateurs de se connecter au site Web dynmap. Si vous souhaitez utiliser le proxy cloudflare à la place, ne suivez pas cette partie du didacticiel bonus.

Avantages et inconvénients

Avantages:

  • Le site Web Dynmap sera disponible même si le serveur minecraft est arrêté/redémarré
  • Mettre moins de charge sur le serveur minecraft
  • NGINX a de meilleures performances que le serveur Web interne

Les inconvénients:

  • Un peu ennuyeux à configurer
  • Besoin de connaitre un peu linux

Ce que nous allons couvrir

Nous couvrirons les choses suivantes

  • Configuration de MySQL/MariaDB (facultatif)
  • Configuration de NGINX avec le support PHP et SQL
  • Préparation du plugin Dynmap à utiliser avec MySQL/SQLite
  • Configuration du serveur autonome pour MySQL/SQLite
  • Bonus : Configuration d'un proxy cloudflare avec le serveur Web NGINX (facultatif)
  • Bonus : Configuration de NGINX avec des certifications ssl (facultatif)
  • Les FAQ se trouvent tout en bas de ce guide.

Configuration de MySQL/MariaDB et NGINX avec le support PHP et SQL sur votre serveur

Pour commencer, vous devez installer un serveur Web sur le serveur sur lequel vous souhaitez héberger le site Web autonome dynmap. Cette partie du didacticiel couvre également l'installation de MySQL sur le serveur.

Si vous souhaitez utiliser SQLite pour une raison quelconque, vous pouvez simplement installer NGINX sans MySQL/MariaDB. MAIS NGINX doit être sur le même serveur où le serveur minecraft est hébergé.

Si vous utilisez un hébergeur de site Web ou un hébergeur minecraft. Voir les notes sous les liens du didacticiel.

Où dois-je installer MySQL/MariaDB ?

Vous devez généralement installer MySQL sur le même serveur que le serveur minecraft. Vous pouvez utiliser le même serveur MySQL avec des plugins qui utilisent MySQL. MySQL sera utilisé par le plugin Dynmap pour enregistrer/charger des données que le serveur Web lira/écrira également.

Généralement, il y a plus d'avantages si le serveur MySQL/MariaDB est sur le même serveur/réseau que le serveur minecraft car la latence serait plus faible

Tutoriels

Il existe d'innombrables tutoriels sur la configuration de nginx/MySQL/MariaDB sur Internet. Voici quelques liens de tutoriels sur leur configuration avec certains systèmes d'exploitation Linux.

Ne vous inquiétez pas si le tutoriel vous dit d'installer MariaDB car c'est à peu près la même chose que MySQL.

Liens vers des tutoriels

1 source

Testez pour voir si votre serveur Web sert une page Web en insérant l'adresse IP de votre serveur Web dans votre navigateur Web. Si rien ne s'affiche, votre pare-feu bloque peut-être le port ou vous n'avez pas démarré le serveur nginx.

Remarques

  • Si vous disposez déjà d'un serveur Web, vous pouvez ignorer cette étape. MAIS vous avez toujours besoin d'un serveur MySQL si vous n'en avez pas déjà un.
  • Si vous utilisez un hébergeur de site Web, comme indiqué ci-dessus. Vous pouvez sauter cette étape MAIS vous avez toujours besoin d'un serveur MySQL.
  • Si vous utilisez un hébergeur minecraft, vous devrez vous procurer un hébergeur VPS/site Web. Espérons que votre hôte minecraft inclut également un serveur MySQL avec votre package. Sinon, je suppose que vous pouvez installer le serveur MySQL sur le VPS MAIS ASSUREZ-VOUS D'AVOIR BEAUCOUP D'ESPACE .

Configuration de MySQL (ignorez cette étape si vous utilisez SQLite)

Maintenant, pour configurer le serveur MySQL/MariaDB.

Il est recommandé de créer un nouvel utilisateur/mot de passe avec des autorisations limitées pour chaque application.

Si vous configurez un serveur Web externe, vous pouvez également configurer un pare-feu (iptables/firewalld/ufw/etc) pour autoriser uniquement le serveur Web à se connecter à la base de données.

Configuration de la base de données MySQL/MariaDB

En utilisant un terminal sur le serveur qui héberge le serveur minecraft, nous allons créer une nouvelle base de données et ajouter des utilisateurs de base de données.

Création d'une nouvelle base de données dans MySQL/MariaDB

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

Exemple (cliquez pour agrandir)

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

Ajouter de nouveaux utilisateurs

Remarque
Si le serveur MySQL est sur le même serveur que le serveur minecraft. <minecraftserver_ip> devrait juste être 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

Exemple si le serveur web et le serveur minecraft sont sur le même serveur (cliquez sur moi pour développer)

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

Si vous avez fait un oopsie et que vous devez supprimer l'utilisateur mysql. C'est ainsi que vous supprimez un utilisateur.

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

Après avoir créé un nouvel utilisateur, essayez de vous connecter à l'utilisateur. (après vous être déconnecté de l'utilisateur root mysql via "exit")

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

Privilèges/Autorisations MySQL

MySQL a ces autorisations disponibles pour les utilisateurs MySQL.

  • TOUS LES PRIVILÈGES - Accorder tous les privilèges à l'utilisateur
  • CREATE - Permet à l'utilisateur de créer des bases de données/tables
  • SUPPRIMER - Permet à l'utilisateur de supprimer des lignes (données) d'une table
  • DROP - Permet à l'utilisateur de supprimer des bases de données et des tables
  • INSERT - Permet à l'utilisateur d'insérer des lignes (données) dans une table
  • SELECT - Permet à l'utilisateur de lire à partir d'une base de données
  • MISE À JOUR - Permet à l'utilisateur de mettre à jour les données d'une table

Préparation du plugin Dynmap

Maintenant, modifiez certains paramètres dans la configuration du plugin.

Installer Dynmap

Installez la dernière version de dynmap sur le serveur. La dernière version devrait toujours fonctionner avec la version minecraft de 1.10 à 1.14

Allumez-le et éteignez-le

Allumez le serveur minecraft puis arrêtez le serveur. Il devrait y avoir un nouveau dossier appelé dynmap dans le dossier plugins .

FAIRE UNE SAUVEGARDE du fichier configuration.txt ! Faites simplement une copie et nommez-la quelque chose comme configuration.txt.backup .

Ouvrez le fichier de configuration configuration.txt afin que nous puissions modifier certains paramètres.

Changer le stockage

Modifiez la section de stockage dans la configuration de

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"

à

Exemple MySQL (Cliquez pour développer)

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"


Exemple SQLite (Cliquez pour développer)

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"

Modification de certains paramètres de composants

Juste sous la section de stockage, il devrait y avoir une section appelée
- class: org.dynmap.InternalClientUpdateComponent que nous allons commenter.

Donc ça ressemblerait à ça :

Avant (cliquez pour agrandir)

  - 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


Après (cliquez pour agrandir)

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

Juste après cela , vous décommenterez la section juste en dessous.
Donc ça ressemblera à ça.

Avant (cliquez pour agrandir)

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


Après (cliquez pour agrandir)

  - 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

Désactiver le serveur Web interne

Nous allons maintenant désactiver le serveur Web interne car nous n'en avons plus besoin.

Recherchez disable-webserver dans le fichier de configuration et modifiez la valeur de false à true .

Modification de certaines URL du serveur Web

Nous allons modifier certaines URL nécessaires au fonctionnement du serveur Web autonome dynmap. C'est l'énorme partie avec laquelle la plupart des gens ont eu des problèmes pour autant que je sache.

Recherchez la section url: dans le fichier de configuration. Ça devrait ressembler à ça.

Avant (cliquez pour agrandir)

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


Après [Exemple MySQL] (cliquez pour développer)

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


Après [Exemple SQLite] (cliquez pour développer)

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

Allumez-le et éteignez-le à nouveau

Démarrez le serveur minecraft MAIS NE LE DÉSACTIVEZ PAS ENCORE !
Vérifiez et voyez s'il y a des problèmes avec dynmap en consultant le dernier journal. S'il n'y a pas de problèmes, éteignez le serveur.

REMARQUER

La principale raison pour laquelle vous devez démarrer et arrêter le serveur à la toute fin est que Dynmap crée des fichiers de configuration à utiliser par le serveur Web. Si vous avez modifié des paramètres dans configuration.txt , il est possible que les fichiers de configuration dans plugins/dynmap/web soient modifiés.

AVIS ENCORE PLUS IMPORTANT

Si vous autorisez les utilisateurs à se connecter à dynmap. Vous devez CERTAINEMENT installer un certificat SSL ou utiliser le proxy de cloudflare pour sécuriser les informations de connexion contre les méchants !

Options sur la façon dont le serveur Web doit être configuré

Passons maintenant aux choses sérieuses !

Voici quelques options :

Hébergement sur le même serveur que le serveur minecraft (MySQL/SQLite)

Option 1 : Vous pouvez lier le serveur web au dossier web dynmap dans le dossier plugin (plus simple)
Option 2 : Copiez le dossier Web vers un autre emplacement sur le serveur (plus sécurisé)

Hébergement sur un serveur différent qui n'est pas le même serveur que le serveur minecraft (MySQL)

Seule option : votre seule option est de copier le dossier Web sur le serveur qui possède le serveur Web.

Hébergement chez un hébergeur (MySQL)

Si vous utilisez un hébergeur tel que hostgator, namecheap, 000webhost, etc. Votre seule option est de copier le dossier web sur l'hébergeur.
Je n'ajouterai pas de détails sur la façon de procéder, car il y a trop d'hébergeurs Web à couvrir.

Configuration générale avec le serveur Web NGINX

Avant de passer aux sections suivantes avec les options de configuration. Nous couvrirons la configuration générale des serveurs Web NGINX.

Suppression de la configuration de site Web par défaut

Si vous avez installé un nouveau serveur Web NGINX. Nous voulons supprimer la configuration de site Web par défaut et ajouter notre propre configuration. Si vous possédez déjà un NGINX avant ce tutoriel et savez ce que vous faites. Passez à la section suivante avec des options sur la configuration du site Web dynmap.

La configuration par défaut est généralement située à /etc/nginx/sites-available/ et /etc/nginx/sites-enabled .

Vous voulez faire une copie de la valeur par défaut puisque nous l'utiliserons.

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

Supprimez maintenant la configuration par défaut de sites-enabled pour désactiver la configuration du site par défaut et redémarrer le serveur Web nginx

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

Configurer le serveur Web qui se trouve sur le même serveur que le serveur minecraft

Si vous hébergez votre propre serveur Web NGINX sur le même serveur que le serveur minecraft. Cette rubrique est faite pour vous !

Noter
Assurez-vous d'avoir suivi la configuration générale avec NGINX avant de continuer avec ce didacticiel

Option 1 : Lier le serveur Web au dossier dynmap (cliquez pour développer)

Si vous souhaitez configurer le serveur Web de manière simple (mais pas trop sécurisée). C'est la bonne option pour vous! Mais je vous recommande tout de même fortement de suivre l'option 2 car c'est une option plus sûre que l'option 1.

Avantages:

  • Une commande de moins à exécuter (si vous aimez ce genre de chose)
  • Pas besoin de copier les fichiers de configuration si vous modifiez la configuration dynmap

Les inconvénients:

  • Moins sécurisé par rapport à l'option 2 (discutable)

Modification du fichier de configuration du site Web

Commencez à éditer le fichier de configuration dynmap dans /etc/nginx/sites-available/dynmap

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

Le fichier de configuration devrait ressembler à ceci. Modifiez les valeurs dans la configuration à votre guise

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;
        }
}
  • N'oubliez pas de changerau nom d'utilisateur Linux qui contient le dossier du serveur minecraft.
  • N'oubliez pas de changerdans le dossier dans lequel vous avez le serveur minecraft

Exemple:

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

Option 2 : copier le dossier Web vers un autre emplacement

Si vous souhaitez configurer le serveur Web de la manière la plus sécurisée. C'est la bonne option pour vous!

Avantages:

  • Plus sécurisé que l'option 1 (Discutable)

Les inconvénients:

  • Besoin de copier certains fichiers de configuration vers un nouvel emplacement si vous avez modifié la configuration dynmap

Copier les fichiers vers un nouvel emplacement

Copiez les fichiers Web dynmap vers un autre emplacement

sudo cp -r /home/<USERNAME>/<MINECRAFTSERVER>/plugins/dynmap/web/ /var/www/dynmap/
  • N'oubliez pas de changerau nom d'utilisateur Linux qui contient le dossier du serveur minecraft.
  • N'oubliez pas de changerdans le dossier dans lequel vous avez le serveur minecraft

Exemple:

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

Modification du fichier de configuration du site Web

Commencez à éditer le fichier de configuration dynmap dans /etc/nginx/sites-available/dynmap

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

Le fichier de configuration devrait ressembler à ceci. Modifiez les valeurs dans la configuration à votre guise

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

Maintenant rendons le serveur dynmap public ! (pour les deux options 1 et 2)

Après avoir suivi les étapes de l'option 1/2. Nous allons créer un raccourci de la configuration du serveur Web dynmap et le mettre dans un dossier.

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

Assurez-vous que les fichiers de configuration sont sans erreur !

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

et redémarrez le serveur s'il n'y a pas de problème.

sudo service nginx restart

Et ça devrait être ça !

Mettez l'adresse IP du serveur Web dans votre navigateur Web, vous devriez voir dynmap. Comme il va être vide, vous pouvez commencer à rendre les tuiles en rejoignant le serveur et en exécutant la commande /dynmap fullrender <worldname>

Configuration du serveur Web hébergé sur un autre serveur

Si vous hébergez votre propre serveur Web NGINX sur un serveur différent de celui qui héberge le serveur minecraft. Cette rubrique est faite pour vous !

Noter

  • Assurez-vous d'avoir suivi la configuration générale avec NGINX avant de continuer avec ce didacticiel
  • Les configurations de site Web doivent se trouver sur le serveur hébergeant le serveur Web NGINX, et non sur le serveur hébergeant le serveur minecraft !

Avantages:

  • Encore plus sûr que les autres méthodes

Les inconvénients:

  • Besoin de copier certains fichiers de configuration vers un nouvel emplacement si vous avez modifié la configuration dynmap

Copier les fichiers vers un nouvel emplacement

Copiez les fichiers Web dynmap vers un autre emplacement

Exécutez cette commande sur le serveur qui héberge le serveur minecraft. Cette commande copiera le dossier du serveur minecraft sur le serveur Web. Il vous demandera le mot de passe du serveur Web.

sudo scp -r /home/<USERNAME>/<MINECRAFTSERVER>/plugins/dynmap/web <WEBSERVER_USERNAME>@<WEBSERVER_IP>:/var/www/dynmap
  • N'oubliez pas de changerau nom d'utilisateur Linux du serveur qui contient le dossier du serveur minecraft.
  • N'oubliez pas de changerdans le dossier dans lequel vous avez le serveur minecraft
  • Ne pas pour

Exemple:

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

Modification du fichier de configuration du site Web

Commencez à éditer le fichier de configuration dynmap dans /etc/nginx/sites-available/dynmap

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

Le fichier de configuration devrait ressembler à ceci. Modifiez les valeurs dans la configuration à votre guise

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

Maintenant rendons le serveur dynmap public !

Après avoir suivi les étapes. Nous allons créer un raccourci de la configuration du serveur Web dynmap et le mettre dans un dossier.

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

Assurez-vous que les fichiers de configuration sont sans erreur !

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

et redémarrez le serveur s'il n'y a pas de problème.

sudo service nginx restart

Et ça devrait être ça !

Mettez l'adresse IP du serveur Web dans votre navigateur Web, vous devriez voir dynmap. Comme il va être vide, vous pouvez commencer à rendre les tuiles en rejoignant le serveur et en exécutant la commande /dynmap fullrender <worldname>

Configuration du serveur Web hébergé par un hébergeur

Si vous utilisez un hébergeur car vous ne voulez pas en créer un vous-même. Cette rubrique est faite pour vous !

Copie du dossier Web sur l'hôte Web

Copiez les fichiers du serveur minecraft dans un dossier sur votre ordinateur. Les fichiers que vous allez copier doivent être dans plugins/dynmap/web sur le serveur minecraft.

Copiez les fichiers sur votre hébergeur de préférence dans un nouveau répertoire, à moins qu'il ne s'agisse d'un hébergeur dédié à dynmap.

Finir!

Ouais vraiment! Vous avez terminé.

Tutoriels bonus

Si vous avez installé votre propre serveur Web NGINX, vous pouvez suivre cette partie du didacticiel bonus pour sécuriser votre serveur Web avec des connexions dynmap. VOUS DEVEZ TOUJOURS manipuler les informations d'identification de l'utilisateur avec soin si vous activez les connexions avec Dynmap.

Vous pouvez suivre l'une des trois options pour sécuriser votre serveur Web

Installer un certificat SSL GRATUIT avec CertBot

Vous pouvez simplement suivre ces instructions à partir du site Web de certbot. C'est le moyen le plus simple d'obtenir un certificat SSL pour un site Web.

À noter que les certifications de certbot expirent plus rapidement que celles des autres fournisseurs, mais ils disposent d'un moyen automatisé de renouveler vos certifications si vous suivez leurs instructions pour le faire.

Installer un certificat SSL d'un autre fournisseur

Comme alternative, vous pouvez obtenir un certificat SSL auprès d'un autre fournisseur tel que NameCheap. Téléchargez la certification publique et la clé privée du fournisseur. VOUS NE DEVEZ JAMAIS PARTAGER LA CLÉ PRIVÉE AVEC UNE AUTRE PERSONNE OU LA RENDRE PUBLIQUE . Il est strictement réservé à votre serveur Web et ne devrait pas être uniquement à gagner.

Placer le dossier de certification dans /etc/ssl/certs/<certification_file>.pem
et placez la clé privée dans /etc/ssl/private/<private_key_file>.pem

Faites une sauvegarde de la configuration du site Web avant d'apporter des modifications

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

Si vous faites un oopsie et que vous devez revenir en arrière, exécutez cette commande

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

Dans la configuration du site Web NGINX, examinez les différences entre votre configuration actuelle et ajoutez les modifications que vous voyez dans cet exemple de configuration.

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

Ensuite, il vous suffit de redémarrer le serveur Web NGINX.

sudo service nginx restart

Rendez-vous sur votre site Web dynmap et il devrait maintenant être sécurisé !
Very secure

Configuration de NGINX avec le proxy de Cloudflare (dernière mise à jour le 19 septembre 2019)

Une bonne chose à propos du proxy de Cloudflare est qu'ils ont une certification spéciale qui ne sert qu'à communiquer entre votre serveur Web et leurs services. Vous pouvez également laisser la certification durer jusqu'à 15 ans. Cependant, ce n'est qu'une alternative à une "vraie" certification ssl.

Tout d'abord, connectez-vous à cloudflare et accédez au domaine avec lequel vous souhaitez configurer le proxy. Rendez-vous ensuite dans la rubrique "SSL/TLS"
cloudflare dashboard

Dans la section Origin Certificates , cliquez sur "Créer un certificat".
Sélectionnez Let Cloudflare generate a private key and a CSR et réglez le Private key type sur ECDSA

Ajoutez le nom d'hôte map.YOURDOMAIN.com si vous souhaitez mettre le site Web dynmap sur map.YOURDOMAIN.com.

Réglez la validité du certificat sur ce que vous voulez (15 ans, ça sonne bien comme amirite ?).

Cliquez sur Suivant et vous devriez voir un nouveau certificat SSL et une clé privée sur votre écran. Maintenant, nous allons copier le texte et le coller dans un fichier via un terminal.

Créons d'abord un fichier de certificat et collez-le dans le texte. Le texte doit commencer par -----BEGIN CERTIFICATE----- et se terminer par -----END CERTIFICATE-----

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

Ensuite, créons un fichier de clé privée et collez-le dans le texte. Le texte doit commencer par -----BEGIN PRIVATE KEY----- et se terminer par -----END PRIVATE KEY-----

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

Nous allons maintenant modifier la configuration du site Web NGINX. Faites une sauvegarde de la configuration du site Web avant d'apporter des modifications

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

Si vous faites un oopsie et que vous devez revenir en arrière, exécutez cette commande

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

Dans la configuration du site Web NGINX, examinez les différences entre votre configuration actuelle et ajoutez les modifications que vous voyez dans cet exemple de configuration.

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

Ensuite, il vous suffit de redémarrer le serveur Web NGINX.

sudo service nginx restart

Rendez-vous sur votre site Web dynmap et il devrait maintenant être sécurisé !
Very secure

FAQ

Comment puis-je Linux?

Très soigneusement.

Mais voici la réponse sérieuse.
Vous pouvez vous connecter à votre serveur Linux avec quelque chose de populaire comme PuTTY ou tout autre client SSH de votre choix. Vous pouvez vous connecter au terminal si vous avez l'utilisateur/mot de passe.

Vous pouvez facilement trouver des guides/tutoriels sur l'utilisation de Linux sur Internet. Mais vous devriez toujours vérifier ce que fait une commande avant de l'exécuter !

Mon site Web ne s'affiche pas (NGINX)
Assurez-vous que votre site Web est transféré vers le port.

Le port par défaut serait 80 mais si vous suiviez le tutoriel sur l'installation d'une certification SSL, le port serait 443.

Mais si cela ne fonctionne pas, vérifiez si NGINX est en cours d'exécution en exécutant la commande

sudo service nginx status

et il devrait vous dire ce qui ne va pas. Vous pouvez également tester le fichier de configuration en exécutant la commande

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


Je ne vois aucune image sur le site dynmap !

Depuis que nous avons commencé avec une nouvelle base de données sans aucune donnée. Cela peut prendre un certain temps pour voir des images sur dynmap.

Vous pouvez exécuter la commande dans le jeu pour rendre complètement un monde si vous le souhaitez /dynmap fullrender <worldname>

Comment se fait-il qu'il n'y ait pas de tutoriel avec Windows ou Apache ?

J'ai décidé de ne pas couvrir la configuration d'un serveur Web autonome avec Windows ou Apache, car la plupart des gens vont utiliser Linux et NGINX de nos jours. Mais s'il y a assez de gens qui demandent, je pourrais couvrir windows et/ou apache

J'ai changé d'avis, puis-je reconvertir à partir de SQL ?

Oui, vous devriez pouvoir reconvertir à la méthode précédente si vous avez créé un fichier de sauvegarde configuration.txt.backup partir des étapes précédentes.

Supprimez simplement configuration.txt et renommez configuration.txt.backup en configuration.txt et vous êtes prêt à partir !

Pourquoi?

Parce que pourquoi pas ?

Il y a plus de possibilités lorsque dynmap utilise sql. La sauvegarde serait plus rapide, les gens peuvent toujours utiliser le site Web dynmap même si le serveur est en panne, et plus encore !

Affiche-t-il toujours les icônes des joueurs et/ou le chat ?

Oui, l'icône du lecteur doit toujours être mise à jour sur la page Web.

La boîte de discussion devrait également fonctionner correctement.

Laissez un commentaire si vous avez des questions ou des problèmes !

Doc improvement Feature

Commentaire le plus utile

Merci pour le tuto ! J'ai pu migrer mes 2 serveurs Forge vers la configuration de serveur web autonome. Et je voudrais souligner quelques points :

  • Forge n'inclut pas le pilote JDBC pour MySQL (comme le font Bukkit et Cauldron). Vous devez le récupérer sur https://mvnrepository.com/artifact/mysql/mysql-connector-java et le déposer dans le répertoire mods. Voir #1674.

  • Il serait préférable de mentionner dans le didacticiel que /etc/nginx/sites-available/ et /etc/nginx/sites-enabled n'existent que dans les implémentations nginx de Debian/Ubuntu. Dans l'implémentation en amont, le seul fichier de configuration est /etc/nginx/nginx.conf .

  • Je vous déconseille d'utiliser MySQL pour le stockage de cartes, sauf si vous disposez d'un matériel dédié faisant office de serveur MySQL. J'ai 2 serveurs Forge en cours d'exécution sur mon serveur domestique. Celui configuré avec MySQL a beaucoup plus de temps système CPU, RAM et E/S disque en raison des transactions avec la base de données. En fait, MySQL n'a pas été conçu pour stocker les BLOB, qui constituent la quasi-totalité du stockage de cartes de dynmap. En utilisant MySQL comme stockage de carte, des cycles CPU supplémentaires sont consommés par les transactions SQL. Et parce que dynmap stocke les données cartographiques sous forme de BLOB d'image, l'utilisation de MySQL entraîne en fait des performances bien pires que le stockage de fichiers, comme observé sur mon serveur domestique. Voir aussi https://stackoverflow.com/questions/5285857/when-is-using-mysql-blob-recommended

  • Devinez quel type de base de données a été conçu pour stocker un grand nombre de BLOB ? Le système de fichiers ! Je voudrais proposer d'éditer le tutoriel pour recommander nginx + php-fpm + stockage de fichiers. Pour un serveur Web autonome avec stockage de fichiers, la section url: doit être modifiée comme suit :

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

Tous les 38 commentaires

Notez que les utilisateurs de dynmapforge n'auront pas de répertoire plugins/dynmap/web . Par exemple, sur un de mes serveurs il y a :

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

(Je filtre dynmap/web/tiles/ car j'y ai 1500 répertoires...)

J'essayerais cela moi-même, mais mes services nginx et minecraft sont sur des machines différentes. :sweat_smile:

J'ai suivi, mais sans succès. J'ai Apache sur le même serveur que dynmap et j'y ai déplacé le dossier Web. Bien qu'il n'y ait pas d'erreurs dans la console, si je navigue jusqu'à l'URL, elle affiche simplement un fond noir. J'utilise également SQLite, qui a déjà été rendu. Ai-je raté quelque chose peut-être ?

Peut-être vérifier la console de votre navigateur pour rechercher des erreurs et/ou des requêtes ayant échoué ?

@miiichael
Oui, le gros problème avec le passage d'un système de fichiers à une base de données est que dynmap n'importe pas les tuiles dans une base de données. Vous perdriez donc toute votre progression de rendu. Il est toujours possible de mettre le serveur Web sur une machine différente du serveur minecraft, mais cela vous oblige à utiliser mysql au lieu du système de fichiers.

@MrLogano
C'est parce qu'Apache ne peut pas trouver le fichier de base de données SQLite car il ne se trouve pas dans le dossier Web. Vous feriez probablement mieux de pointer Apache vers le dossier Web qui se trouve dans le dossier dynmap au lieu de copier le dossier Web vers un emplacement différent. Ou modifiez manuellement les fichiers php (à partir du dossier Web copié) pour obtenir le fichier db SQLite à partir d'un emplacement différent.

J'écrirai un tutoriel plus détaillé une fois que j'aurai un peu de temps libre car je suis assez occupé au guichet automatique.

@haloflooder
Le fichier php "dynmap_access" renvoie au fichier de base de données SQLite dans le répertoire dynmap. Je l'ai essayé encore quelques fois, et chaque fois que je modifie la section URL dans la configuration, j'obtiens une page complètement vierge. Laissant cela de côté, l'arbre de fichiers fonctionne bien, mais le pointer vers le SQLite génère une erreur 500. La vérification du journal Apache indique que quelque chose ne peut pas ouvrir le fichier de base de données, avec une erreur à la ligne 79 dans SQLite_tiles.php. J'ai également modifié les autorisations en 775, sans succès.

Je suis votre tutoriel, mais la page Web dit "Impossible de récupérer la configuration : erreur du serveur interne"
Comment puis-je faire?

J'ai le même problème que @gundami. Une enquête plus approfondie révèle ce message d'erreur dans /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 Avez-vous trouvé une solution ? Désolé pour la réponse tardive, j'ai été incroyablement occupé ces derniers mois.

@gundami @ads103 Pouvez-vous fournir la configuration de dynmap sur pastebin ? N'oubliez pas de censurer toute information sensible comme les informations d'identification mysql.

Sûr! Et voilà : https://pastebin.com/1xQ2Unjb

@ads103 Je viens de remarquer que votre journal d'accès indique http://dragonmc/ . Qu'est-ce que tu as dans ta config nginx ?

Comme cela fait aussi un moment que dynmap n'a pas été mis à jour. Je vais installer une nouvelle version sur dynmap sur mon serveur de test et suivre mon propre guide pour voir si quelque chose a changé depuis septembre.

Oui, dragonmc est le nom d'hôte de mon serveur minecraft. Je l'ai sur un serveur DNS local, je peux donc simplement taper "dragonmc" dans mon navigateur Web et y accéder. Voici ma configuration apache et le répertoire dans lequel j'ai copié mes fichiers dynmap.
https://pastebin.com/NQ8fNjqa

@ ads103 Je suppose que votre serveur est également hébergé localement sur votre réseau ?

Ouais! C'est correct. Tout est juste à une adresse IP locale !

@haloflooder avez-vous eu la chance d'installer une nouvelle version sur votre serveur de test ?

Malheureusement, je ne connais pas le javascript. Je peux voir que ce message d'erreur est généré par cette fonction dans map.js , mais je ne trouve pas où la variable "configuration" est affectée d'une valeur.

`function DynMap(options) {

    var me = this;

    if(me.checkForSavedURL())

            return;

    me.options = options;

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

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

                    me.saveURL();

                    window.location = 'login.html';

            }

            else if(configuration.error) {

                    alert(configuration.error);

            }

            else {

                    me.configure(configuration);

                    me.initialize();

            }

    }, function(status, statusMessage) {

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

    });

}

`

@ ads103 Désolé, j'ai été occupé avec le travail depuis que je devais respecter une date limite pour quelque chose. La configuration vient de MySQL_configuration.php en standalone.

Avez-vous copié les fichiers Web sur le serveur Web après avoir laissé dynmap modifier les valeurs de configuration avec la configuration modifiée ?

Oui je l'ai fait. J'ai même vu le trafic réseau vers mon serveur de base de données augmenter au fur et à mesure que le rendu commençait, donc les valeurs de configuration sont au moins suffisamment correctes pour que les tuiles _dans_ la base de données.

Voici une question. Dans le guide, vous avez inclus cette instruction pour copier le contenu du dossier web sur le serveur Web :
sudo cp -r /home/MyUsername/minecraft/servers/creative/plugins/dynmap/web/ /var/www/dynmap/
Aviez-vous l'intention de copier le dossier web dans le dossier dynmap , _ou_ le _contenu_ du dossier web dossier dynmap ?

@ ads103 Oooo , c'est une bonne prise. J'aurais dû relire les commandes Linux après avoir travaillé sur le guide pendant environ 12 heures.

Je voulais mettre une commande pour copier le contenu du dossier Web dans le dossier du serveur Web dynmap. Je passerai en revue mon propre guide aujourd'hui avec la dernière version de dynmap plus tard dans la journée.

Une mise à jour sur les paramètres d'accès MySQL ? Après avoir suivi ce guide du T et tenté d'accéder à la carte, j'obtiens un écran noir et l'erreur "Impossible de récupérer la configuration : Bad Gateway".

EDIT : je suis un idiot et j'ai oublié d'installer php, tout va bien

Tout d'abord, guide incroyable! J'essaie de trouver quelque chose comme ça depuis un moment maintenant. J'ai cependant le même problème que @WearisomelyVerbose où je ne reçois qu'un message disant "Impossible de récupérer la configuration: Bad Gateway"

Quelques informations sur ma version : Mon serveur Minecraft est sur un serveur séparé et utilise un serveur Mysql pour tout stocker. Je me suis assuré de copier le répertoire /web de Dynmap après avoir modifié les configurations et redémarré le serveur.

Une chose que j'ai remarquée, chaque fois que je teste le fichier Dynmap.conf dans Nginx, j'obtiens cette erreur :
sudo nginx -t -c /etc/nginx/sites-available/dynmap
nginx : [emerg] la directive "server" n'est pas autorisée ici dans /etc/nginx/sites-available/ dynmap:2
nginx : le test du fichier de configuration /etc/nginx/sites-available/dynmap a échoué

@ads103 @gundami
Je pense avoir la même erreur : "Impossible de récupérer la configuration : erreur" après avoir ouvert la carte sur le serveur Web.

Pour moi, changer le fichier "...\standalone\MySQL_config.php" sur le serveur Web a résolu le problème :
...
$dbhost = 'localhost';
...
au lieu de l'adresse IP. Mais je ne connais pas les détails, j'espère que cela aidera quelqu'un.

Ma configuration est d'ailleurs 2 Raspberry Pis. RP4B (4 Go) héberge minecraft (entre autres services) et un RP3B+ héberge DynMap (Apache+SQL)

Merci pour le super tuto !! :)

J'ai pu résoudre mes problèmes.

Les miens, au moins, étaient assez simples avec le recul. Il me manquait des dépendances.

Plus précisément, il me manquait php-json et php-mysqlnd. (Je suis sur un système Fedora 31, et les noms des packages Ubuntu sont un peu différents.)

J'ai découvert qu'il me manquait ces packages en réalisant que php-fpm était une application distincte avec ses propres fichiers journaux situés dans /var/log/php-fpm . La vérification de www-error.log a révélé ces deux lignes de journal :

[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

Une recherche rapide sur Google des fonctions json_decode() et mysqli_connect() m'amène à ces deux packages manquants. Après les avoir installés et actualisé Dynmap dans mon navigateur, cela... a juste fonctionné. Cela a juste fonctionné.

Merci pour le tuto ! J'ai pu migrer mes 2 serveurs Forge vers la configuration de serveur web autonome. Et je voudrais souligner quelques points :

  • Forge n'inclut pas le pilote JDBC pour MySQL (comme le font Bukkit et Cauldron). Vous devez le récupérer sur https://mvnrepository.com/artifact/mysql/mysql-connector-java et le déposer dans le répertoire mods. Voir #1674.

  • Il serait préférable de mentionner dans le didacticiel que /etc/nginx/sites-available/ et /etc/nginx/sites-enabled n'existent que dans les implémentations nginx de Debian/Ubuntu. Dans l'implémentation en amont, le seul fichier de configuration est /etc/nginx/nginx.conf .

  • Je vous déconseille d'utiliser MySQL pour le stockage de cartes, sauf si vous disposez d'un matériel dédié faisant office de serveur MySQL. J'ai 2 serveurs Forge en cours d'exécution sur mon serveur domestique. Celui configuré avec MySQL a beaucoup plus de temps système CPU, RAM et E/S disque en raison des transactions avec la base de données. En fait, MySQL n'a pas été conçu pour stocker les BLOB, qui constituent la quasi-totalité du stockage de cartes de dynmap. En utilisant MySQL comme stockage de carte, des cycles CPU supplémentaires sont consommés par les transactions SQL. Et parce que dynmap stocke les données cartographiques sous forme de BLOB d'image, l'utilisation de MySQL entraîne en fait des performances bien pires que le stockage de fichiers, comme observé sur mon serveur domestique. Voir aussi https://stackoverflow.com/questions/5285857/when-is-using-mysql-blob-recommended

  • Devinez quel type de base de données a été conçu pour stocker un grand nombre de BLOB ? Le système de fichiers ! Je voudrais proposer d'éditer le tutoriel pour recommander nginx + php-fpm + stockage de fichiers. Pour un serveur Web autonome avec stockage de fichiers, la section url: doit être modifiée comme suit :

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

Encore un merci @haloflooder pour avoir fait le tuto ! J'ai migré aussi, et ça marche bien.

J'ai également trouvé utile la configuration gentiment partagée par Frumple pour le serveur MRT : https://github.com/Frumple/mrt-docker-services/blob/master/containers/dynmap-main/docker-compose.yml

@database64128 Merci pour les informations sur les fichiers de configuration json. Un amendement cependant : les fichiers de configuration json ne sont créés que si login-enabled: false est défini dans le fichier configuration.txt de Dynmap.

Punaise? Intentionnel? Je ne sais pas. Plus d'informations sur le problème que j'ai créé ici : https://github.com/webbukkit/dynmap/issues/2848.

J'ai pensé le mentionner ici car il m'a fallu beaucoup de temps pour savoir pourquoi les fichiers de configuration json n'étaient pas créés !

J'ai le problème d'écran noir décrit par @MrLogano . J'utilise MySQL et nginx sur un serveur séparé. J'effectue actuellement un rendu complet et je peux voir le nombre de lignes dans la table "Tiles" dans MySQL augmenter, donc je sais qu'il se connecte très bien à MySQL.

Dans la console du navigateur, je vois les erreurs suivantes :

Le script de « https://REDACTED/standalone/config.js?_=3.0-beta-10-257 » a été chargé même si son type MIME (« text/html ») n'est pas un type JavaScript MIME valide.
Le chargement a échoué pour le

J'ai découvert quel était mon problème. Le nom d'hôte que j'ai utilisé pour le serveur MySQL pouvait être résolu depuis mon serveur Minecraft mais pas depuis mon serveur nginx. J'ai changé le nom d'hôte en quelque chose qui pouvait être résolu à partir des deux et maintenant cela fonctionne.

Eh bien, j'ai un serveur minecraft hébergé sur un hôte et un site Web hébergé sur un autre hôte (qui utilise Apache et ne prend pas en charge les proxy inverses) Comment configurer un dynmap sur mon site Web sans iframe? car je ne vois aucun tuto pour ça

@alex17lol Ce guide n'utilise pas de proxy inverse. Vous devriez pouvoir utiliser votre propre configuration Apache au lieu des configurations Nginx suggérées ici.

@alex17lol Ce guide n'utilise pas de proxy inverse. Vous devriez pouvoir utiliser votre propre configuration Apache au lieu des configurations Nginx suggérées ici.

Je n'ai pas accès aux commandes sudo j'utilise un hébergeur c'est mon problème

_ Quelqu'un peut-il ajouter ceci au wiki ? _

Merci beaucoup d'avoir fait ça !

SELinux peut causer toutes sortes de problèmes. Les plus évidents sont ceux qui bloquent carrément tout accès au contenu Web. Ceux-ci apparaissent dans le journal des erreurs du serveur Web. Des problèmes plus subtils peuvent apparaître dans le journal des erreurs php-fpm. Après avoir traité toutes les erreurs dans le journal du serveur Web, j'avais toujours des problèmes d'écran noir et l'échec redouté de lire la configuration. Par example:

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

Ce qui a résolu ce dernier casse-tête pour moi était :

# setsebool -P httpd_can_network_connect_db=1

J'ai trouvé que rsync était BEAUCOUP plus rapide que scp -r . scp avançait à un rythme extrêmement lent, alors je l'ai tué à environ 300 Mo, puis j'ai utilisé la commande suivante à la place. 2 To transférés incroyablement rapidement par rapport à la tentative de scp . J'ai fait rsync plusieurs fois en essayant de résoudre des problèmes, et rsync mis

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

Est-ce que n'importe qui a déjà essayé ceci avec une base de données DB2 ?

J'aurais vraiment besoin d'aide pour ce problème ^^^ #3125. quelqu'un peut-il aider avec ce problème? J'ai vérifié trois fois ce guide. commencé à partir de zéro plusieurs fois. J'ai essayé plusieurs solutions d'hébergement mais j'ai le même problème à chaque fois. J'ai essayé quelques solutions notées dans les commentaires mais elles n'ont finalement pas été utiles.
J'ai aussi essayé Discord mais je n'ai pas eu de réponse plusieurs fois.

@arkD Heureusement, je réviserai ce guide au cours des deux prochaines semaines car je mets en place une autre configuration autonome mais en utilisant la dernière version à la pointe de la technologie de Dynmap pour 1.16.3 qui n'est pas encore publiée sur la page de spigot car une mise à jour.

Ne fonctionnait pas pour moi - j'ai dû activer php sur NGINX à l'aide de ce guide
https://www.digitalocean.com/community/tutorials/how-to-install-linux-nginx-mysql-php-lemp-stack-in-ubuntu-16-04

Maintenant, l'erreur "Impossible de récupérer la configuration" a cessé d'apparaître, mais j'ai toujours un écran noir , pas de barre latérale, pas d'horloge. ??

DB est configuré pour sqlite et tout fonctionnait et était rendu avant de commencer le guide

Aussi: j'ai cette erreur dans la console. C'est très probablement lié
image

Cette page vous a été utile?
0 / 5 - 0 notes

Questions connexes

MissFox0810 picture MissFox0810  ·  3Commentaires

DraxxisGH picture DraxxisGH  ·  3Commentaires

TomberWolf picture TomberWolf  ·  4Commentaires

wtchappell picture wtchappell  ·  4Commentaires

Marbel picture Marbel  ·  3Commentaires