Dynmap: [Tutorial] Configuración de un servidor web independiente con MySQL / SQLite

Creado en 14 sept. 2019  ·  38Comentarios  ·  Fuente: webbukkit/dynmap

No he visto instrucciones claras sobre cómo hacer que un servidor independiente se ejecute con MySQL / SQLite. La página wiki sobre cómo configurar el servidor web independiente también está desactualizada por mucho.

Después de un par de horas de hurgar en dynmap. Aquí hay un tutorial sobre cómo hacer que el servidor web independiente se ejecute en NGINX en un servidor * nix.

🔴 ADVERTENCIA 🔴
Si sigue esta guía, se restablecerán todos los datos si _actualmente no_ está utilizando una base de datos SQL con dynmap.

El uso de MySQL con Dynmap no está completamente probado por la comunidad.

Este tutorial asume que conoces un poco de Linux. Si no sabe usar Linux, ¡nunca es demasiado tarde para aprender!

Si está utilizando un "servidor de servidor de Minecraft". En la mayoría de los casos, no podrá configurar un servidor web independiente con su servidor de servidor de Minecraft. Tendrá que conseguir un servidor web o un vps para alojar un servidor web independiente para Dynmap.

Notas

  • Le recomendaría encarecidamente que utilice MySQL en lugar de SQLite si tiene la opción. Es posible que requiera algunos pasos adicionales, pero mire el lado positivo. Puede usar MySQL con otros complementos :)

  • Este tutorial también requiere que uses sudo. Si no tienes sudo permanente, entonces no tienes suerte o puedes alquilar un VPS.

  • Si está utilizando SQLite, no puede alojar el servidor web independiente en un servidor / vps diferente. Tendrá que migrar la base de datos SQLite a un servidor MySQL / MariaDB para alojar el servidor independiente en un servidor / vps diferente. Pero eso es completamente opcional, seguiremos cubriendo cómo configurar un servidor web independiente en el mismo servidor que el servidor de Minecraft con SQLite.
  • No cubriré cómo configurar un servidor web independiente con Windows o Apache a menos que haya algún interés. Como alternativa, puede obtener un VPS barato y alojar un servidor web allí si está utilizando MySQL (no SQLite).

Nota para los contribuyentes

Si me da permiso para editar wiki. Con mucho gusto haré una contribución a la wiki sobre cómo configurar un servidor web independiente y mantenerlo;)

Tutoriales de bonificación

Cubro cómo hacer que el servidor web independiente funcione con el proxy de cloudflare, que es completamente opcional. Esto es MUY recomendable si va a permitir que los usuarios inicien sesión en el sitio web de dynmap. Si va a instalar un certificado SSL con certbot, no siga esta parte del tutorial adicional.

También cubriré cómo instalar un certificado SSL en el servidor web NGINX con certbot u otro proveedor, que es completamente opcional. Esto es MUY recomendable si va a permitir que los usuarios inicien sesión en el sitio web de dynmap. Si desea utilizar el proxy cloudflare en su lugar, no siga esta parte del tutorial adicional.

Pros y contras

Pros:

  • El sitio web de Dynmap estará disponible incluso si el servidor de Minecraft está inactivo / reiniciando
  • Ponga menos carga en el servidor de Minecraft
  • NGINX tiene un mejor rendimiento que el servidor web interno

Contras:

  • Un poco molesto de configurar
  • Necesito saber un poco de linux

Que vamos a cubrir

Cubriremos las siguientes cosas

  • Configuración de MySQL / MariaDB (opcional)
  • Configuración de NGINX con soporte PHP y SQL
  • Preparación del complemento Dynmap para usar con MySQL / SQLite
  • Configuración del servidor independiente para MySQL / SQLite
  • Bonificación : configuración de un proxy cloudflare con el servidor web NGINX (opcional)
  • Bono : configuración de NGINX con certificaciones ssl (opcional)
  • Las preguntas frecuentes se encuentran al final de esta guía.

Configuración de MySQL / MariaDB y NGINX con soporte PHP y SQL en su servidor

Para comenzar, debe instalar un servidor web en el servidor en el que desea alojar el sitio web independiente de dynmap. Esta parte del tutorial también cubre la instalación de MySQL en el servidor.

Si desea utilizar SQLite por alguna razón, puede instalar NGINX sin MySQL / MariaDB. PERO NGINX debe estar en el mismo servidor donde está alojado el servidor de Minecraft.

Si está utilizando un servidor de sitio web o un servidor de Minecraft. Vea las notas debajo de los enlaces del tutorial.

¿Dónde debería instalar MySQL / MariaDB?

Por lo general, debe instalar MySQL en el mismo servidor que el servidor de Minecraft. Puede usar el mismo servidor MySQL con complementos que usan MySQL. El complemento Dynmap utilizará MySQL para guardar / cargar datos en los que el servidor web también leerá / escribirá.

Generalmente, hay más beneficios si el servidor MySQL / MariaDB está en el mismo servidor / red que el servidor de Minecraft, ya que la latencia sería menor.

Tutoriales

Hay innumerables tutoriales sobre cómo configurar nginx / MySQL / MariaDB en Internet. Aquí hay algunos enlaces de tutoriales sobre cómo configurarlos con algunos sistemas operativos Linux.

No se preocupe si el tutorial le dice que instale MariaDB, ya que es prácticamente lo mismo que MySQL.

Enlaces a tutoriales

1 fuente

Pruebe para ver si su servidor web está sirviendo una página web ingresando la IP de su servidor web en su navegador web. Si no aparece nada, entonces su firewall podría estar bloqueando el puerto o no inició el servidor nginx.

notas

  • Si ya tiene un servidor web, puede omitir este paso. PERO todavía necesita un servidor MySQL si aún no tiene uno.
  • Si está utilizando un servidor de sitio web, como se indicó anteriormente. Puede omitir este paso, PERO aún necesita un servidor MySQL.
  • Si está utilizando un host de Minecraft, deberá obtener un host de VPS / sitio web. Con suerte, su host de Minecraft también incluye un servidor MySQL con su paquete. Si no es así, supongo que puede instalar el servidor MySQL en el VPS, PERO ASEGÚRESE DE QUE TIENE MUCHO ESPACIO .

Configuración de MySQL (omita este paso si está utilizando SQLite)

Ahora, para configurar el servidor MySQL / MariaDB.

Se recomienda crear un nuevo usuario / contraseña con permisos limitados para cada aplicación.

Si está configurando un servidor web externo, también puede configurar un firewall (iptables / firewalld / ufw / etc) para permitir que solo el servidor web se conecte a la base de datos.

Configurando la base de datos MySQL / MariaDB

Usando una terminal en el servidor que aloja el servidor de Minecraft, crearemos una nueva base de datos y agregaremos algunos usuarios de la base de datos.

Creando una nueva base de datos en MySQL / MariaDB

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

Ejemplo (haga clic para expandir)

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

Agregar nuevos usuarios

Nota
Si el servidor MySQL está en el mismo servidor que el servidor de Minecraft. <minecraftserver_ip> debería ser 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

Ejemplo si el servidor web y el servidor de Minecraft están en el mismo servidor (haz clic en mí para expandir)

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 hizo un oopsie y necesita eliminar el usuario de mysql. Así es como eliminas un usuario.

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

Después de crear un nuevo usuario, intente iniciar sesión en el usuario. (después de cerrar la sesión del usuario root de mysql a través de "salir")

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

Privilegios / permisos de MySQL

MySQL tiene estos permisos disponibles para configurar a los usuarios de MySQL.

  • TODOS LOS PRIVILEGIOS : conceda todos los privilegios al usuario
  • CREAR : permite al usuario crear bases de datos / tablas
  • ELIMINAR : permite al usuario eliminar filas (datos) de una tabla
  • DROP : permite al usuario eliminar bases de datos y tablas
  • INSERTAR : permite al usuario insertar filas (datos) en una tabla
  • SELECCIONAR : permite al usuario leer de una base de datos
  • ACTUALIZAR : permite al usuario actualizar datos en una tabla

Preparando el complemento Dynmap

Ahora para cambiar algunas configuraciones en la configuración del complemento.

Instalar Dynmap

Instale la última versión de dynmap en el servidor. La última versión aún debería funcionar con la versión de Minecraft de 1.10 a 1.14

Enciéndelo y apágalo.

Encienda el servidor de Minecraft y luego detenga el servidor. Debería haber una nueva carpeta llamada dynmap en la carpeta plugins .

¡HAGA UNA COPIA DE SEGURIDAD del archivo configuration.txt ! Simplemente haga una copia y asígnele un nombre como configuration.txt.backup .

Abra el archivo de configuración configuration.txt para que podamos cambiar algunas configuraciones.

Cambiar el almacenamiento

Cambie la sección de almacenamiento en la configuración 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"

a

Ejemplo de MySQL (haga clic para expandir)

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"


Ejemplo de SQLite (haga clic para expandir)

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"

Cambio de la configuración de algunos componentes

Justo debajo de la sección de almacenamiento, debería haber una sección llamada
- class: org.dynmap.InternalClientUpdateComponent que estaremos comentando.

Entonces se vería así:

Antes (haga clic para expandir)

  - 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


Después (haga clic para expandir)

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

Inmediatamente después de hacer eso , eliminará los comentarios de la sección justo debajo.
Entonces se verá así.

Antes (haga clic para expandir)

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


Después (haga clic para expandir)

  - 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

Deshabilitar el servidor web interno

Ahora vamos a deshabilitar el servidor web interno ya que ya no lo necesitamos.

Busque disable-webserver en el archivo de configuración y cambie el valor de false a true .

Cambiar algunas URL para el servidor web

Vamos a cambiar algunas URL necesarias para que funcione el servidor web independiente de dynmap. Esta es la parte más importante con la que la mayoría de la gente ha tenido problemas, hasta donde yo sé.

Busque la sección url: en el archivo de configuración. Debe tener un aspecto como este.

Antes (haga clic para expandir)

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


Después del [Ejemplo de MySQL] (haga clic para expandir)

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


Después de [Ejemplo de SQLite] (haga clic para expandir)

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

Encenderlo y apagarlo de nuevo

Inicie el servidor de Minecraft, ¡PERO NO LO APAGUE TODAVÍA!
Compruebe y vea si hay algún problema con dynmap consultando el registro más reciente. Si no hay problemas, apague el servidor.

AVISO

La razón principal por la que necesita iniciar y detener el servidor al final es porque Dynmap crea archivos de configuración para que los utilice el servidor web. Si cambió alguna configuración en configuration.txt , entonces existe la posibilidad de que se modifiquen los archivos de configuración en plugins/dynmap/web .

AVISO AÚN MÁS GRANDE

Si va a permitir que los usuarios inicien sesión en dynmap. ¡ DEFINITIVAMENTE debe instalar un certificado SSL o usar el proxy de cloudflare para hacer que las credenciales de inicio de sesión sean seguras de los malos!

Opciones sobre cómo se debe configurar el servidor web

¡Ahora vamos al asunto serio!

A continuación se muestran algunas opciones:

Alojamiento en el mismo servidor con el servidor de Minecraft (MySQL / SQLite)

Opción 1 : puede vincular el servidor web a la carpeta web de dynmap en la carpeta del complemento (más fácil)
Opción 2 : Copie la carpeta web en una ubicación diferente en el servidor (más segura)

Alojar en un servidor diferente que no es el mismo servidor que el servidor de Minecraft (MySQL)

Única opción : Su única opción es copiar la carpeta web al servidor que tiene el servidor web.

Alojamiento con un servidor web (MySQL)

Si está utilizando un servidor web como hostgator, namecheap, 000webhost, etc. Su única opción es copiar la carpeta web al servidor web.
No agregaré detalles sobre cómo hacer esto, ya que hay demasiados servidores web que cubrir.

Configuración general con el servidor web NGINX

Antes de pasar a las siguientes secciones con las opciones de configuración. Cubriremos la configuración general de los servidores web NGINX.

Eliminar la configuración predeterminada del sitio web

Si instaló un servidor web NGINX nuevo. Queremos eliminar la configuración predeterminada del sitio web y agregar nuestra propia configuración. Si ya tiene un NGINX antes de este tutorial y sabe lo que está haciendo. Vaya a la siguiente sección con opciones sobre cómo debe configurarse el sitio web de dynmap.

La configuración predeterminada generalmente se encuentra en /etc/nginx/sites-available/ y /etc/nginx/sites-enabled .

Desea hacer una copia del predeterminado ya que lo usaremos.

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

Ahora elimine la configuración predeterminada de sites-enabled para deshabilitar la configuración predeterminada del sitio y reiniciar el servidor web nginx

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

Configurando el servidor web que está en el mismo servidor que el servidor de Minecraft

Si está alojando su propio servidor web NGINX en el mismo servidor que el servidor de Minecraft. ¡Esta es la sección adecuada para ti!

Nota
Asegúrese de seguir la configuración general con NGINX antes de continuar con este tutorial

Opción 1: vincular el servidor web a la carpeta dynmap (haga clic para expandir)

Si desea configurar el servidor web de forma fácil (pero no demasiado segura). ¡Esta es la opción adecuada para ti! Pero aún así te recomiendo encarecidamente que sigas la opción 2, ya que es una opción más segura que la opción 1.

Pros:

  • Un comando menos para ejecutar (si te gustan ese tipo de cosas)
  • No es necesario copiar los archivos de configuración si cambia la configuración de dynmap

Contras:

  • Menos seguro en comparación con la Opción 2 (discutible)

Editar el archivo de configuración del sitio web

Comience a editar el archivo de configuración de dynmap en /etc/nginx/sites-available/dynmap

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

El archivo de configuración debería verse así. Cambia los valores en la configuración a tu gusto.

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;
        }
}
  • No te olvides de cambiaral nombre de usuario de Linux que tiene la carpeta del servidor de Minecraft.
  • No te olvides de cambiara la carpeta en la que tienes el servidor de Minecraft

Ejemplo:

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

Opción 2: copiar la carpeta web a una ubicación diferente

Si desea configurar el servidor web de la manera más segura. ¡Esta es la opción adecuada para ti!

Pros:

  • Más seguro que la opción 1 (debatible)

Contras:

  • Necesita copiar algunos archivos de configuración a una nueva ubicación si cambió la configuración de dynmap

Copiar los archivos a una nueva ubicación

Copie los archivos web de dynmap en una ubicación diferente

sudo cp -r /home/<USERNAME>/<MINECRAFTSERVER>/plugins/dynmap/web/ /var/www/dynmap/
  • No te olvides de cambiaral nombre de usuario de Linux que tiene la carpeta del servidor de Minecraft.
  • No te olvides de cambiara la carpeta en la que tienes el servidor de Minecraft

Ejemplo:

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

Editar el archivo de configuración del sitio web

Comience a editar el archivo de configuración de dynmap en /etc/nginx/sites-available/dynmap

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

El archivo de configuración debería verse así. Cambia los valores en la configuración a tu gusto.

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

¡Ahora hagamos público el servidor dynmap! (para ambas opciones 1 y 2)

Después de seguir los pasos de la Opción 1/2. Vamos a hacer un acceso directo a la configuración del servidor web dynmap y ponerlo en una carpeta.

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

¡Asegúrese de que los archivos de configuración estén libres de errores!

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

y reinicie el servidor si no hay problemas.

sudo service nginx restart

¡Y eso debería ser todo!

Coloque la ip del servidor web en su navegador web, debería ver dynmap. Como estará vacío, puede comenzar a renderizar mosaicos uniéndose al servidor y ejecutando el comando /dynmap fullrender <worldname>

Configurar el servidor web que está alojado en un servidor diferente

Si está alojando su propio servidor web NGINX en un servidor diferente al servidor que aloja el servidor de Minecraft. ¡Esta es la sección adecuada para ti!

Nota

  • Asegúrese de seguir la configuración general con NGINX antes de continuar con este tutorial
  • Las configuraciones del sitio web deben estar en el servidor que aloja el servidor web NGINX, no en el servidor que aloja el servidor de Minecraft.

Pros:

  • Incluso más seguro que los otros métodos

Contras:

  • Necesita copiar algunos archivos de configuración a una nueva ubicación si cambió la configuración de dynmap

Copiar los archivos a una nueva ubicación

Copie los archivos web de dynmap en una ubicación diferente

Ejecute este comando en el servidor que aloja el servidor de Minecraft. Este comando copiará la carpeta del servidor de Minecraft al servidor web. Le pedirá la contraseña del servidor web.

sudo scp -r /home/<USERNAME>/<MINECRAFTSERVER>/plugins/dynmap/web <WEBSERVER_USERNAME>@<WEBSERVER_IP>:/var/www/dynmap
  • No te olvides de cambiaral nombre de usuario de Linux del servidor que tiene la carpeta del servidor de Minecraft.
  • No te olvides de cambiara la carpeta en la que tienes el servidor de Minecraft
  • No para

Ejemplo:

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

Editar el archivo de configuración del sitio web

Comience a editar el archivo de configuración de dynmap en /etc/nginx/sites-available/dynmap

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

El archivo de configuración debería verse así. Cambia los valores en la configuración a tu gusto.

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

¡Ahora hagamos público el servidor dynmap!

Después de seguir los pasos. Vamos a hacer un acceso directo a la configuración del servidor web dynmap y ponerlo en una carpeta.

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

¡Asegúrese de que los archivos de configuración estén libres de errores!

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

y reinicie el servidor si no hay problemas.

sudo service nginx restart

¡Y eso debería ser todo!

Coloque la ip del servidor web en su navegador web, debería ver dynmap. Como estará vacío, puede comenzar a renderizar mosaicos uniéndose al servidor y ejecutando el comando /dynmap fullrender <worldname>

Configurar el servidor web alojado por un proveedor de alojamiento web

Si está utilizando un proveedor de alojamiento web, ya que no desea configurar uno usted mismo. ¡Esta es la sección adecuada para ti!

Copiar la carpeta web al servidor web

Copie los archivos del servidor de Minecraft en una carpeta en su computadora. Los archivos que va a copiar deben estar en plugins/dynmap/web en el servidor de Minecraft.

Copie los archivos a su servidor web preferiblemente en un nuevo directorio a menos que sea un servidor web dynmap dedicado.

¡Terminar!

¡Si, en serio! Ya terminaste.

Tutoriales de bonificación

Si instaló su propio servidor web NGINX, puede seguir esta parte del tutorial adicional para hacer que su servidor web sea seguro con los inicios de sesión de dynmap. SIEMPRE DEBE manejar las credenciales del usuario con cuidado si habilita los inicios de sesión con Dynmap.

Puede seguir una de las tres opciones para hacer que su servidor web sea seguro

Instalación de un certificado SSL GRATUITO con CertBot

Puede seguir estas instrucciones del sitio web de certbot. Es la forma más sencilla de obtener un certificado SSL para un sitio web.

Como nota, las certificaciones de certbot caducan más rápido que otros proveedores, pero tienen una forma automatizada de renovar sus certificaciones si sigue sus instrucciones sobre cómo hacerlo.

Instalación de un certificado SSL de un proveedor diferente

Como alternativa, puede obtener un certificado SSL de un proveedor diferente, como NameCheap. Descargue la certificación pública y la clave privada del proveedor. NUNCA DEBE COMPARTIR LA CLAVE PRIVADA CON OTRA PERSONA NI HACERLA PÚBLICA . Es estrictamente para su servidor web y no debería estar solo en juego.

Coloque el archivo de certificación en /etc/ssl/certs/<certification_file>.pem
y coloque la clave privada en /etc/ssl/private/<private_key_file>.pem

Haga una copia de seguridad de la configuración del sitio web antes de realizar cambios

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

Si hace un oopsie y necesita revertir, ejecute este comando

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

En la configuración del sitio web de NGINX, observe las diferencias entre su configuración actual y agregue los cambios que ve en esta configuración de ejemplo.

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

Entonces solo necesita reiniciar el servidor web NGINX.

sudo service nginx restart

Vaya a su sitio web dynmap y ahora debería ser seguro.
Very secure

Configuración de NGINX con el proxy de Cloudflare (última actualización el 19 de septiembre de 2019)

Lo bueno del proxy de Cloudflare es que tiene una certificación especial que es solo para comunicarse entre su servidor web y sus servicios. También puede dejar que la certificación dure hasta 15 años. Sin embargo, es solo una alternativa a tener una certificación SSL "real".

Primero, inicie sesión en cloudflare y vaya al dominio con el que desea configurar el proxy. Luego vaya a la sección "SSL / TLS"
cloudflare dashboard

En la sección Origin Certificates , haga clic en "Crear certificado".
Seleccione Let Cloudflare generate a private key and a CSR y establezca Private key type en ECDSA

Agregue el nombre map.YOURDOMAIN.com host

Establezca la validez del certificado como desee (¿15 años suena bien, amirite?).

Haga clic en siguiente y debería ver un certificado SSL nuevo y una clave privada en su pantalla. Ahora vamos a copiar el texto y pegarlo en un archivo a través de la terminal.

Primero, creemos un archivo de certificado y peguemos el texto. El texto debe comenzar con -----BEGIN CERTIFICATE----- y terminar con -----END CERTIFICATE-----

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

A continuación, creemos un archivo de clave privada y peguemos el texto. El texto debe comenzar con -----BEGIN PRIVATE KEY----- y terminar con -----END PRIVATE KEY-----

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

Ahora vamos a editar la configuración del sitio web de NGINX. Haga una copia de seguridad de la configuración del sitio web antes de realizar cambios

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

Si hace un oopsie y necesita revertir, ejecute este comando

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

En la configuración del sitio web de NGINX, observe las diferencias entre su configuración actual y agregue los cambios que ve en esta configuración de ejemplo.

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

Entonces solo necesita reiniciar el servidor web NGINX.

sudo service nginx restart

Vaya a su sitio web dynmap y ahora debería ser seguro.
Very secure

Preguntas frecuentes

¿Cómo hago Linux?

Muy cuidadosamente.

Pero aquí está la respuesta seria.
Puede conectarse a su servidor Linux con algo popular como PuTTY o cualquier otro cliente SSH de su elección. Puede iniciar sesión en la terminal si tiene el usuario / contraseña.

Puede encontrar fácilmente guías / tutoriales sobre cómo usar Linux en Internet. ¡Pero siempre debe verificar lo que hace un comando antes de ejecutarlo!

Mi sitio web no aparece (NGINX)
Asegúrese de que el puerto de su sitio web esté reenviado.

El puerto predeterminado sería 80, pero si siguió el tutorial sobre la instalación de una certificación SSL, el puerto sería 443.

Pero si eso no funciona, verifique si NGINX se está ejecutando ejecutando el comando

sudo service nginx status

y debería decirle qué podría estar mal. También puede probar el archivo de configuración ejecutando el comando

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


¡No veo ninguna imagen en el sitio web de dynmap!

Desde que comenzamos con una nueva base de datos nueva sin ningún dato en ella. Puede llevar algún tiempo ver las imágenes en dynmap.

Puedes ejecutar el comando en el juego para renderizar completamente un mundo si quieres /dynmap fullrender <worldname>

¿Cómo es que no hay un tutorial con Windows o Apache?

Decidí no cubrir la configuración de un servidor web independiente con Windows o Apache, ya que la mayoría de la gente va a utilizar Linux y NGINX hoy en día. Pero si hay suficientes personas preguntando, podría cubrir ventanas y / o apache

Cambié de opinión, ¿puedo volver a convertir de SQL?

Sí, debería poder volver a convertir al método anterior si creó un archivo de respaldo configuration.txt.backup de los pasos anteriores.

Simplemente elimine configuration.txt y cambie el nombre de configuration.txt.backup a configuration.txt y estará listo.

¿Por qué?

¿Porque, porque no?

Hay más posibilidades cuando dynmap usa sql. Sería más rápido hacer una copia de seguridad, las personas aún pueden usar el sitio web dynmap incluso si el servidor está inactivo, ¡y más!

¿Sigue mostrando iconos de jugador y / o chat?

Sí, el ícono del reproductor aún debería estar actualizado en la página web.

El chatbox también debería funcionar bien.

¡Deje un comentario si tiene alguna pregunta o problema!

Doc improvement Feature

Comentario más útil

¡Gracias por el tutorial! Pude migrar mis 2 servidores Forge a la configuración del servidor web independiente. Y me gustaría señalar algunas cosas:

  • Forge no incluye el controlador JDBC para MySQL (como lo hacen Bukkit y Cauldron). Debe obtenerlo de https://mvnrepository.com/artifact/mysql/mysql-connector-java y colocarlo en el directorio de mods. Vea el n. ° 1674.

  • Sería mejor mencionar en el tutorial que /etc/nginx/sites-available/ y /etc/nginx/sites-enabled solo existen en las implementaciones nginx de Debian / Ubuntu. En la implementación ascendente, el único archivo de configuración es /etc/nginx/nginx.conf .

  • Recomendaría no usar MySQL para el almacenamiento de mapas, a menos que tenga hardware dedicado que actúe como servidor MySQL. Tengo 2 servidores Forge ejecutándose en mi servidor doméstico. El configurado con MySQL tiene una sobrecarga significativamente mayor de CPU, RAM y E / S de disco debido a las transacciones con la base de datos. De hecho, MySQL no fue diseñado para almacenar BLOB, que constituyen casi todo el almacenamiento de mapas de dynmap. Al usar MySQL como almacenamiento de mapas, las transacciones SQL consumen ciclos adicionales de CPU. Y debido a que dynmap almacena datos de mapas como BLOB de imágenes, el uso de MySQL en realidad da como resultado un rendimiento mucho peor que el almacenamiento de archivos, como se observa en mi servidor doméstico. Consulte también https://stackoverflow.com/questions/5285857/when-is-using-mysql-blob-recommended

  • ¿Adivina qué tipo de base de datos se diseñó para almacenar una gran cantidad de BLOB? ¡El sistema de archivos! Me gustaría proponer editar el tutorial para recomendar el almacenamiento de archivos nginx + php-fpm +. Para un servidor web independiente con almacenamiento de archivos, la sección url: debe cambiarse así:

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

Todos 38 comentarios

Tenga en cuenta que los usuarios de dynmapforge no tendrán un directorio plugins/dynmap/web . Por ejemplo, en uno de mis servidores hay:

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

(Estoy filtrando dynmap / web / tiles / porque tengo 1500 directorios allí ...)

Probaría esto yo mismo, pero mis servicios nginx y minecraft están en máquinas diferentes. : sweat_smile:

Seguí esto, pero sin suerte. Tengo Apache en el mismo servidor que dynmap y moví la carpeta web allí. Aunque no hay ningún error en la consola, si navego a la URL, solo muestra un fondo negro. También estoy usando SQLite, que ya fue renderizado. ¿Me he perdido algo quizás?

¿Quizás verifique la consola de su navegador para buscar errores y / o solicitudes fallidas?

@miiichael
Sí, el gran problema al pasar del sistema de archivos a una base de datos es que dynmap no importa los mosaicos a una base de datos. Por lo tanto, perdería todo su progreso de renderizado. Todavía es posible colocar el servidor web en una máquina diferente del servidor de Minecraft, pero requiere que uses mysql en lugar del sistema de archivos.

@MrLogano
Es porque Apache no puede encontrar el archivo de base de datos SQLite porque no está en la carpeta web. Probablemente sea mejor que apunte Apache a la carpeta web que está en la carpeta dynmap en lugar de copiar la carpeta web a una ubicación diferente. O edite manualmente los archivos php (de la carpeta web copiada) para obtener el archivo db SQLite desde una ubicación diferente.

Escribiré un tutorial más detallado una vez que tenga algo de tiempo libre, ya que estoy bastante ocupado en el cajero automático.

@haloflooder
El archivo php "dynmap_access" se vincula al archivo de base de datos SQLite en el directorio dynmap. Lo intenté unas cuantas veces más, y cada vez que cambio la sección de URL en la configuración, obtengo una página completamente en blanco. Dejando eso fuera, el árbol de archivos funciona bien, pero apuntarlo al SQLite arroja un error 500. Verificar el registro de Apache dice que algo no puede abrir el archivo de la base de datos, y muestra un error en la línea 79 en SQLite_tiles.php. También cambié los permisos a 775, sin suerte.

Sigo su tutorial, pero la página web decía "No se pudo recuperar la configuración: Error interno del servidor"
¿Como lo puedo hacer?

Tengo el mismo problema que @gundami. Una investigación más profunda revela este mensaje de error en /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 ¿Ha encontrado una solución? Perdón por la respuesta tardía, he estado increíblemente ocupado durante los últimos meses.

@gundami @ ads103 ¿Puede proporcionar la configuración de dynmap en pastebin? No olvide censurar cualquier información confidencial como las credenciales de mysql.

¡Seguro! Aquí tienes: https://pastebin.com/1xQ2Unjb

@ ads103 Acabo de notar que su registro de acceso dice http://dragonmc/ . ¿Qué tienes en tu configuración de nginx?

Dado que también ha pasado un tiempo desde la actualización de dynmap. Instalaré una nueva versión en dynmap en mi servidor de prueba y seguiré mi propia guía para ver si algo ha cambiado desde septiembre.

Sí, dragonmc es el nombre de host de mi servidor de Minecraft. Lo tengo en un servidor DNS local, así que puedo escribir "dragonmc" en mi navegador web y buscarlo. Aquí está mi configuración de apache y el directorio en el que copié mis archivos dynmap.
https://pastebin.com/NQ8fNjqa

@ ads103 Supongo que su servidor también está alojado localmente en su red.

¡Sí! Eso es correcto. ¡Todo está a solo una IP local de distancia!

@haloflooder , ¿tuvo la oportunidad de instalar una nueva versión en su servidor de prueba?

Desafortunadamente, no conozco javascript. Puedo ver que esta función está generando este mensaje de error en map.js , pero no puedo encontrar dónde se asigna un valor a la variable "configuration" .

`function DynMap (opciones) {

    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 Lo siento, he estado ocupado con el trabajo desde que tuve que cumplir una fecha límite para algo. La configuración proviene de MySQL_configuration.php de forma independiente.

¿Copió los archivos web al servidor web después de permitir que dynmap cambiara los valores de configuración con la configuración modificada?

Sí, lo hice. Incluso vi que el tráfico de red hacia mi servidor de base de datos aumentaba a medida que comenzaba a renderizarse, por lo que los valores de configuración son al menos lo suficientemente correctos para obtener mosaicos _en_ ​​la base de datos.

He aquí una pregunta. En la guía, incluyó estas instrucciones para copiar el contenido de la carpeta web al servidor web:
sudo cp -r /home/MyUsername/minecraft/servers/creative/plugins/dynmap/web/ /var/www/dynmap/
¿Tenía la intención de copiar la carpeta web en la carpeta dynmap , _o_ el _contenido_ de la carpeta web carpeta dynmap ?

@ ads103 Oooo, esa es una buena captura. Debería haber leído los comandos de Linux después de trabajar en la guía durante aproximadamente 12 horas.

Quería poner un comando para copiar el contenido de la carpeta web en la carpeta del servidor web dynmap. Hoy repasaré mi propia guía con la versión más reciente de dynmap.

¿Alguna actualización sobre la configuración de acceso de MySQL? Después de seguir esta guía a la T e intentar acceder al mapa, aparece una pantalla negra y el error "No se pudo recuperar la configuración: Puerta de enlace incorrecta".

EDITAR: Soy un idiota y olvidé instalar php, todo está bien

En primer lugar, ¡guía increíble! He estado tratando de encontrar algo como esto por un tiempo. Sin embargo, tengo el mismo problema que @WearisomelyVerbose donde solo recibo un mensaje que dice "No se pudo recuperar la configuración: Puerta de enlace incorrecta"

Algo de información sobre mi compilación: Mi servidor de Minecraft está en un servidor separado y usa un servidor Mysql para almacenar todo. Me aseguré de copiar el directorio / web de Dynmap después de cambiar las configuraciones y reiniciar el servidor.

Una cosa que sí noté, cada vez que pruebo el archivo Dynmap.conf en Nginx, aparece este error:
sudo nginx -t -c / etc / nginx / sites-available / dynmap
nginx: [emerg] la directiva "servidor" no está permitida aquí en / etc / nginx / sites-available / dynmap: 2
nginx: la prueba del archivo de configuración / etc / nginx / sites-available / dynmap falló

@ ads103 @gundami
Creo que tengo el mismo error: "No se pudo recuperar la configuración: error" después de abrir el mapa en el servidor web.

Para mí, cambiar el archivo "... \ standalone \ MySQL_config.php" en el servidor web resolvió el problema:
...
$ dbhost = 'localhost';
...
en lugar de la dirección IP. Pero no conozco los detalles, ojalá ayude a alguien.

Mi configuración por cierto es 2 Raspberry Pis. RP4B (4GB) aloja Minecraft (entre otros servicios) y RP3B + aloja DynMap (Apache + SQL)

¡¡Gracias por el gran tutorial!! :)

Pude resolver mis problemas.

Los míos, al menos, eran bastante simples en retrospectiva. Me faltaban dependencias.

Específicamente, me faltaba php-json y php-mysqlnd. (Estoy en un sistema Fedora 31 y los nombres de los paquetes de Ubuntu son un poco diferentes).

Descubrí que me faltaban estos paquetes al darme cuenta de que php-fpm era una aplicación separada con sus propios archivos de registro ubicados en /var/log/php-fpm . La comprobación de www-error.log reveló estas dos líneas de registro:

[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

Una búsqueda rápida en Google de las funciones json_decode() y mysqli_connect() me lleva a estos dos paquetes faltantes. Después de instalarlos y actualizar Dynmap en mi navegador, ... simplemente funcionó. Simplemente funcionó.

¡Gracias por el tutorial! Pude migrar mis 2 servidores Forge a la configuración del servidor web independiente. Y me gustaría señalar algunas cosas:

  • Forge no incluye el controlador JDBC para MySQL (como lo hacen Bukkit y Cauldron). Debe obtenerlo de https://mvnrepository.com/artifact/mysql/mysql-connector-java y colocarlo en el directorio de mods. Vea el n. ° 1674.

  • Sería mejor mencionar en el tutorial que /etc/nginx/sites-available/ y /etc/nginx/sites-enabled solo existen en las implementaciones nginx de Debian / Ubuntu. En la implementación ascendente, el único archivo de configuración es /etc/nginx/nginx.conf .

  • Recomendaría no usar MySQL para el almacenamiento de mapas, a menos que tenga hardware dedicado que actúe como servidor MySQL. Tengo 2 servidores Forge ejecutándose en mi servidor doméstico. El configurado con MySQL tiene una sobrecarga significativamente mayor de CPU, RAM y E / S de disco debido a las transacciones con la base de datos. De hecho, MySQL no fue diseñado para almacenar BLOB, que constituyen casi todo el almacenamiento de mapas de dynmap. Al usar MySQL como almacenamiento de mapas, las transacciones SQL consumen ciclos adicionales de CPU. Y debido a que dynmap almacena datos de mapas como BLOB de imágenes, el uso de MySQL en realidad da como resultado un rendimiento mucho peor que el almacenamiento de archivos, como se observa en mi servidor doméstico. Consulte también https://stackoverflow.com/questions/5285857/when-is-using-mysql-blob-recommended

  • ¿Adivina qué tipo de base de datos se diseñó para almacenar una gran cantidad de BLOB? ¡El sistema de archivos! Me gustaría proponer editar el tutorial para recomendar el almacenamiento de archivos nginx + php-fpm +. Para un servidor web independiente con almacenamiento de archivos, la sección url: debe cambiarse así:

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

¡Otro gracias @haloflooder por hacer el tutorial! Yo también migré y funciona bien.

También encontré útil la configuración amablemente compartida por Frumple para el servidor MRT: https://github.com/Frumple/mrt-docker-services/blob/master/containers/dynmap-main/docker-compose.yml

@ database64128 Gracias por la información sobre los archivos de configuración json. Sin embargo, una enmienda: los archivos de configuración json solo se crean si login-enabled: false se establece dentro del archivo configuration.txt de Dynmap.

¿Bicho? ¿Intencional? No sé. Más información sobre el problema que creé aquí: https://github.com/webbukkit/dynmap/issues/2848.

¡Pensé en mencionarlo aquí porque me tomó mucho tiempo rastrear por qué no se estaban creando los archivos de configuración json!

Tengo el problema de la pantalla negra que describió @MrLogano . Estoy usando MySQL y nginx en un servidor separado. Estoy realizando una reproducción completa en este momento y puedo ver el recuento de filas en la tabla "Tiles" en MySQL creciendo, así que sé que se está conectando a MySQL sin problemas.

En la consola del navegador, veo los siguientes errores:

El script de " https: //REDACTED/standalone/config.js? _ = 3.0-beta-10-257 " se cargó aunque su tipo MIME ("text / html") no es un tipo MIME de JavaScript válido.
Error al cargar el

Descubrí cuál era mi problema. El nombre de host que usé para el servidor MySQL se pudo resolver desde mi servidor Minecraft pero no desde mi servidor nginx. Cambié el nombre de host a algo que se pudiera resolver desde ambos y ahora está funcionando.

Bueno, tengo un servidor de Minecraft alojado en un host y un sitio web alojado en otro host (que usa apache y no admite proxies inversos) ¿Cómo configuro un dynmap en mi sitio web sin iframe? porque no veo ningún tutorial para eso

@ alex17lol Esta guía no utiliza un proxy inverso. Debería poder usar su propia configuración de Apache en lugar de las configuraciones de Nginx sugeridas aquí.

@ alex17lol Esta guía no utiliza un proxy inverso. Debería poder usar su propia configuración de Apache en lugar de las configuraciones de Nginx sugeridas aquí.

No tengo acceso a los comandos de sudo, uso un servidor web, ese es mi problema

_ ¿Alguien puede agregar esto a la wiki? _

¡Muchas gracias por hacer esto!

SELinux puede causar todo tipo de dolor. Los más obvios son los que bloquean por completo todo acceso al contenido web. Estos aparecen en el registro de errores del servidor web. Pueden aparecer problemas más sutiles en el registro de errores de php-fpm. Después de lidiar con todos los errores en el registro del servidor web, todavía tenía problemas con la pantalla negra y la temida falla al leer la configuración. Por ejemplo:

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

Lo que solucionó este rompecabezas final para mí fue:

# setsebool -P httpd_can_network_connect_db=1

Encontré que rsync es MUCHO más rápido que scp -r . scp avanzaba pesadamente a un ritmo abismalmente lento, así que lo maté a 300 MB más o menos y luego usé el siguiente comando en su lugar. 2 TB se transfirieron increíblemente rápido en comparación con el intento de scp . Hice rsync bastantes veces mientras trataba de resolver problemas, y rsync actualicé sin enviar todo el lío cada vez.

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

¿Alguien ha probado esto con una base de datos DB2 todavía?

Realmente me vendría bien un poco de ayuda con este problema ^^^ # 3125. ¿Alguien puede ayudar con este problema? Revisé esta guía tres veces. Empezó desde cero varias veces. He probado varias soluciones de alojamiento, pero siempre tengo el mismo problema. Probé algunas de las soluciones señaladas en los comentarios, pero al final no fueron útiles.
También probé la discordia pero no obtuve respuesta varias veces.

@arkD Afortunadamente, revisaré esta guía en las próximas semanas, ya que estoy configurando otra configuración independiente pero usando la última versión de vanguardia de Dynmap para 1.16.3 que aún no se ha publicado públicamente en la página de spigot. una actualización.

No funcionaba para mí, tuve que habilitar php en NGINX usando esta guía
https://www.digitalocean.com/community/tutorials/how-to-install-linux-nginx-mysql-php-lemp-stack-in-ubuntu-16-04

Ahora el error "No se pudo recuperar la configuración" dejó de aparecer, pero todavía aparece una pantalla negra , sin barra lateral, sin reloj. 😢

DB está configurado para sqlite y todo estaba funcionando y renderizado antes de comenzar la guía

Además: tengo este error en la consola. Es muy probable que esté relacionado
image

¿Fue útil esta página
0 / 5 - 0 calificaciones

Temas relacionados

idlenexusgaming picture idlenexusgaming  ·  4Comentarios

ThybeVB picture ThybeVB  ·  6Comentarios

Blueeyestar picture Blueeyestar  ·  3Comentarios

TomberWolf picture TomberWolf  ·  4Comentarios

wtchappell picture wtchappell  ·  4Comentarios