Dynmap: [Tutorial] Configurando um servidor da web autônomo com MySQL / SQLite

Criado em 14 set. 2019  ·  38Comentários  ·  Fonte: webbukkit/dynmap

Eu não vi nenhuma instrução clara sobre como obter um servidor autônomo executando com MySQL / SQLite. A página wiki sobre como configurar o servidor web autônomo também está desatualizada.

Depois de algumas horas cutucando o dynmap. Aqui está um tutorial sobre como fazer o servidor da web autônomo rodar em NGINX em um servidor * nix.

🔴 AVISO 🔴
Seguir este guia irá redefinir todos os dados se você _não estiver usando um banco de dados SQL com dynmap.

O uso do MySQL com Dynmap não foi totalmente testado pela comunidade.

Este tutorial presume que você conheça um pouco de Linux. Se você não sabe Linux, nunca é tarde para aprender!

Se você estiver usando um "host de servidor minecraft". Na maioria dos casos, você não poderá configurar um servidor da web autônomo com o host do servidor do minecraft. Você terá que obter o host do site ou um vps para hospedar um servidor da web autônomo para o Dynmap.

Notas

  • É altamente recomendável que você use o MySQL em vez de SQLite se você tiver a opção. Pode exigir algumas etapas extras, mas olhe pelo lado bom. Você pode usar o MySQL com outros plug-ins :)

  • Este tutorial também requer o uso de sudo. Se você não tem sudo permanentes, então você está sem sorte ou pode alugar um VPS.

  • Se você estiver usando o SQLite, não poderá hospedar o servidor da Web independente em um servidor / vps diferente. Você terá que migrar o banco de dados SQLite para um servidor MySQL / MariaDB para hospedar o servidor autônomo em um servidor / vps diferente. Mas isso é totalmente opcional, ainda vamos abordar como configurar um servidor da web autônomo no mesmo servidor que o servidor minecraft com SQLite.
  • Não vou abordar como configurar um servidor web autônomo com windows ou apache, a menos que haja algum interesse. Como alternativa, você pode obter um VPS barato e hospedar um servidor web lá se estiver usando MySQL (não SQLite).

Nota para contribuidores

Se você me der permissão para editar o wiki. Terei o prazer de fazer uma contribuição ao wiki sobre como configurar um servidor da web autônomo e mantê-lo;)

Tutoriais de bônus

Abordo como fazer com que o servidor da web autônomo funcione com o proxy do cloudflare, que é totalmente opcional. Isso é ALTAMENTE recomendado se você for permitir que os usuários façam login no site do dynmap. Se, em vez disso, for instalar um certificado SSL com certbot, não siga esta parte do tutorial de bônus.

Também cobrirei como instalar um certificado SSL no servidor da web NGINX com certbot ou outro provedor que é totalmente opcional. Isso é ALTAMENTE recomendado se você for permitir que os usuários façam login no site do dynmap. Se você quiser usar o proxy cloudflare, não siga esta parte do tutorial de bônus.

Prós e contras

Prós:

  • O site Dynmap estará disponível mesmo se o servidor do minecraft estiver inativo / reiniciando
  • Coloque menos carga no servidor minecraft
  • NGINX tem melhor desempenho do que o servidor da web interno

Contras:

  • Meio chato de configurar
  • Preciso saber um pouco de linux

O que vamos cobrir

Estaremos cobrindo as seguintes coisas

  • Configurando MySQL / MariaDB (opcional)
  • Configurando NGINX com suporte a PHP e SQL
  • Preparando o plugin Dynmap para usar com MySQL / SQLite
  • Configurando o servidor autônomo para MySQL / SQLite
  • Bônus : configurar um proxy cloudflare com o servidor da web NGINX (opcional)
  • Bônus : Configurando NGINX com certificações SSL (opcional)
  • As perguntas frequentes estão localizadas na parte inferior deste guia.

Configurando MySQL / MariaDB e NGINX com suporte a PHP e SQL em seu servidor

Para começar, você precisa instalar um servidor web no servidor em que deseja hospedar o site dynmap autônomo. Esta parte do tutorial também cobre a instalação do MySQL no servidor.

Se você quiser usar o SQLite por algum motivo, basta instalar o NGINX sem MySQL / MariaDB. MAS NGINX deve estar no mesmo servidor onde o servidor do minecraft está hospedado.

Se você estiver usando um host de site ou um host de minecraft. Veja as notas abaixo dos links do tutorial.

Onde devo instalar o MySQL / MariaDB?

Geralmente, você deve instalar o MySQL no mesmo servidor que o servidor do minecraft. Você pode usar o mesmo servidor MySQL com plug-ins que usam MySQL. O MySQL será usado pelo plugin Dynmap para salvar / carregar dados que o servidor web irá ler / escrever também.

Geralmente, há mais benefícios se o servidor MySQL / MariaDB estiver no mesmo servidor / rede que o servidor minecraft, pois a latência seria menor

Tutoriais

Existem inúmeros tutoriais sobre como configurar o nginx / MySQL / MariaDB na internet. Aqui estão alguns links de tutoriais sobre como configurá-los com alguns sistemas operacionais Linux.

Não se preocupe se o tutorial disser para você instalar o MariaDB, pois é praticamente a mesma coisa que o MySQL.

Links para tutoriais

1 fonte

Teste para ver se o seu servidor da web está servindo uma página da web, colocando o ip do servidor da web em seu navegador da web. Se nada aparecer, seu firewall pode estar bloqueando a porta ou você não iniciou o servidor nginx.

notas

  • Se você já tem um servidor web, pode pular esta etapa. MAS você ainda precisa de um servidor MySQL, se ainda não tiver um.
  • Se você estiver usando um host de site, conforme indicado acima. Você pode pular esta etapa, mas ainda precisa de um servidor MySQL.
  • Se estiver usando um host de minecraft, você precisará obter um host de VPS / site. Esperançosamente, o host do minecraft também inclui um servidor MySQL com o seu pacote. Se não, acho que você pode instalar o servidor MySQL no VPS MAS CERTIFIQUE-SE DE QUE TEM MUITO ESPAÇO .

Configurando o MySQL (pule esta etapa se estiver usando SQLite)

Agora, para configurar o servidor MySQL / MariaDB.

Recomenda-se criar um novo usuário / senha com permissões limitadas para cada aplicativo.

Se estiver configurando um servidor web externo, você também pode configurar um firewall (iptables / firewalld / ufw / etc) para permitir que apenas o servidor web se conecte ao banco de dados.

Configurando o banco de dados MySQL / MariaDB

Usando um terminal no servidor que hospeda o servidor do minecraft, criaremos um novo banco de dados e adicionaremos alguns usuários do banco de dados.

Criação de um novo banco de dados em MySQL / MariaDB

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

Exemplo (clique para expandir)

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

Adicionar novos usuários

Nota
Se o servidor MySQL estiver no mesmo servidor que o servidor minecraft. <minecraftserver_ip> deve ser apenas 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

Exemplo se o servidor da web e o servidor do minecraft estiverem no mesmo servidor (clique 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

Se você fez um oopsie e precisa deletar o usuário mysql. É assim que você exclui um usuário.

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

Depois de criar um novo usuário, tente fazer login nele. (depois de sair do usuário root do mysql por meio de "sair")

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

Privilégios / permissões do MySQL

O MySQL tem essas permissões disponíveis para definir para usuários do MySQL.

  • TODOS OS PRIVILÉGIOS - Concede todos os privilégios ao usuário
  • CRIAR - Permite ao usuário criar bancos de dados / tabelas
  • DELETE - Permite ao usuário excluir linhas (dados) de uma tabela
  • DROP - Permite ao usuário eliminar bancos de dados e tabelas
  • INSERT - Permite ao usuário inserir linhas (dados) em uma tabela
  • SELECT - Permite ao usuário ler de um banco de dados
  • ATUALIZAÇÃO - Permite que o usuário atualize os dados em uma tabela

Preparando o plugin Dynmap

Agora, para alterar algumas configurações do plugin.

Instale Dynmap

Instale a versão mais recente do dynmap no servidor. A versão mais recente ainda deve funcionar com a versão do minecraft de 1.10 a 1.14

Ligue e desligue

Ligue o servidor do minecraft e pare o servidor. Deve haver uma nova pasta chamada dynmap na pasta plugins .

FAÇA UM BACKUP do arquivo configuration.txt ! Basta fazer uma cópia e nomear algo como configuration.txt.backup .

Abra o arquivo de configuração configuration.txt para que possamos alterar algumas configurações.

Mudando o Armazenamento

Altere a seção de armazenamento na configuração 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"

para

Exemplo de MySQL (clique 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"


Exemplo de SQLite (clique 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"

Alteração de algumas configurações de componentes

Logo abaixo da seção de armazenamento, deve haver uma seção chamada
- class: org.dynmap.InternalClientUpdateComponent que estaremos comentando.

Seria assim:

Antes (clique 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


Depois (clique 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

Logo depois de fazer isso , você descomente a seção logo abaixo disso.
Então vai ficar assim.

Antes (clique 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


Depois (clique 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

Desativando o servidor web interno

Agora vamos desabilitar o servidor web interno, já que não precisamos mais dele.

Encontre disable-webserver no arquivo de configuração e altere o valor de false para true .

Alterar alguns urls para o servidor web

Vamos alterar alguns urls necessários para o funcionamento do servidor da web autônomo dynmap. Esta é a grande parte com a qual a maioria das pessoas tem problemas, pelo que eu sei.

Encontre a seção url: no arquivo de configuração. Deve ser assim.

Antes (clique 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/"


Depois de [Exemplo de MySQL] (clique 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="


Depois de [Exemplo de SQLite] (clique 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="

Ligue e desligue novamente

Inicie o servidor minecraft, MAS NÃO O DESLIGUE AINDA!
Verifique e veja se há algum problema com o dynmap verificando o log mais recente. Se não houver problemas, desligue o servidor.

PERCEBER

A principal razão pela qual você precisa iniciar e parar o servidor bem no final é porque o Dynmap cria arquivos de configuração para o servidor da web usar. Se você alterou qualquer configuração em configuration.txt , é possível que os arquivos de configuração em plugins/dynmap/web tenham sido alterados.

AVISO AINDA MAIOR

Se você vai permitir que os usuários façam login no dynmap. Você deve DEFINITIVAMENTE instalar um certificado SSL ou usar o proxy do cloudflare para tornar as credenciais de login protegidas contra bandidos!

Opções sobre como o servidor web deve ser configurado

Agora vamos ao que interessa!

Aqui estão algumas opções:

Hospedando no mesmo servidor com o servidor minecraft (MySQL / SQLite)

Opção 1 : você pode vincular o servidor da web à pasta da web do dynmap na pasta do plugin (mais fácil)
Opção 2 : copie a pasta da web para um local diferente no servidor (mais seguro)

Hospedar em um servidor diferente que não é o mesmo servidor do servidor minecraft (MySQL)

Única opção : sua única opção é copiar a pasta da web para o servidor que possui o servidor da web.

Hospedagem com um host da web (MySQL)

Se você estiver usando um host da web, como hostgator, namecheap, 000webhost, etc. Sua única opção é copiar a pasta da web para o host da web.
Não vou adicionar detalhes sobre como fazer isso, pois há muitos hosts da web para cobrir.

Configuração geral com o servidor da web NGINX

Antes de ir para as próximas seções com as opções de configuração. Cobriremos a configuração geral dos servidores da web NGINX.

Removendo a configuração do site padrão

Se você instalou um novo servidor da web NGINX. Queremos remover a configuração padrão do site e adicionar nossa própria configuração. Se você já possui um NGINX antes deste tutorial e sabe o que está fazendo. Vá para a próxima seção com opções sobre como o site dynmap deve ser configurado.

A configuração padrão geralmente está localizada em /etc/nginx/sites-available/ e /etc/nginx/sites-enabled .

Você deseja fazer uma cópia do padrão, pois iremos usá-lo.

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

Agora remova a configuração padrão de sites-enabled para desabilitar a configuração padrão do site e reinicie o servidor web nginx

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

Configurando o servidor da web que está no mesmo servidor que o servidor do minecraft

Se você estiver hospedando seu próprio servidor da web NGINX no mesmo servidor que o servidor do minecraft. Esta é a seção certa para você!

Observação
Certifique-se de seguir a configuração geral com NGINX antes de continuar com este tutorial

Opção 1: vincular o servidor da web à pasta dynmap (clique para expandir)

Se você deseja configurar o servidor da web da maneira fácil (mas não muito segura). Esta é a opção certa para você! Mas eu ainda recomendo que você siga a opção 2, pois é uma opção mais segura do que a opção 1.

Prós:

  • Um comando a menos para executar (se você gosta desse tipo de coisa)
  • Não é necessário copiar os arquivos de configuração se você alterar a configuração do dynmap

Contras:

  • Menos seguro em comparação com a Opção 2 (discutível)

Editando o arquivo de configuração do site

Comece a editar o arquivo de configuração do dynmap em /etc/nginx/sites-available/dynmap

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

O arquivo de configuração deve ser parecido com isto. Altere os valores na configuração ao seu gosto

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ão se esqueça de mudarpara o nome de usuário do Linux que contém a pasta do servidor do minecraft.
  • Não se esqueça de mudarpara a pasta em que você tem o servidor do minecraft

Exemplo:

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

Opção 2: copiar a pasta da web para um local diferente

Se você deseja configurar o servidor web da maneira mais segura. Esta é a opção certa para você!

Prós:

  • Mais seguro do que a opção 1 (discutível)

Contras:

  • É necessário copiar alguns arquivos de configuração para um novo local se você alterou a configuração do dynmap

Copiando os arquivos para um novo local

Copie os arquivos da web do dynmap para um local diferente

sudo cp -r /home/<USERNAME>/<MINECRAFTSERVER>/plugins/dynmap/web/ /var/www/dynmap/
  • Não se esqueça de mudarpara o nome de usuário do Linux que contém a pasta do servidor do minecraft.
  • Não se esqueça de mudarpara a pasta em que você tem o servidor do minecraft

Exemplo:

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

Editando o arquivo de configuração do site

Comece a editar o arquivo de configuração do dynmap em /etc/nginx/sites-available/dynmap

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

O arquivo de configuração deve ser parecido com isto. Altere os valores na configuração ao seu gosto

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

Agora vamos tornar o servidor dynmap público! (para ambas as opções 1 e 2)

Depois de seguir as etapas da Opção 1/2. Vamos fazer um atalho da configuração do servidor da web do dynmap e colocá-lo em uma pasta.

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

Certifique-se de que os arquivos de configuração estejam livres de erros!

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

e reinicie o servidor se não houver problemas.

sudo service nginx restart

E deve ser isso!

Coloque o ip do servidor web em seu navegador, você deverá ver o dynmap. Já que ficará vazio, você pode começar a renderizar os blocos entrando no servidor e executando o comando /dynmap fullrender <worldname>

Configurando o servidor web que está hospedado em um servidor diferente

Se você estiver hospedando seu próprio servidor da web NGINX em um servidor diferente do servidor que está hospedando o servidor do minecraft. Esta é a seção certa para você!

Observação

  • Certifique-se de seguir a configuração geral com NGINX antes de continuar com este tutorial
  • As configurações do site devem estar no servidor que hospeda o servidor da web NGINX, não no servidor que hospeda o servidor do minecraft!

Prós:

  • Ainda mais seguro do que os outros métodos

Contras:

  • É necessário copiar alguns arquivos de configuração para um novo local se você alterou a configuração do dynmap

Copiando os arquivos para um novo local

Copie os arquivos da web do dynmap para um local diferente

Execute este comando no servidor que hospeda o servidor minecraft. Este comando irá copiar a pasta do servidor do minecraft para o servidor da web. Ele pedirá a senha do servidor web.

sudo scp -r /home/<USERNAME>/<MINECRAFTSERVER>/plugins/dynmap/web <WEBSERVER_USERNAME>@<WEBSERVER_IP>:/var/www/dynmap
  • Não se esqueça de mudarpara o nome de usuário do Linux do servidor que contém a pasta do servidor do minecraft.
  • Não se esqueça de mudarpara a pasta em que você tem o servidor do minecraft
  • Não para

Exemplo:

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

Editando o arquivo de configuração do site

Comece a editar o arquivo de configuração do dynmap em /etc/nginx/sites-available/dynmap

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

O arquivo de configuração deve ser parecido com isto. Altere os valores na configuração ao seu gosto

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

Agora vamos tornar o servidor dynmap público!

Depois de seguir os passos. Vamos fazer um atalho da configuração do servidor da web do dynmap e colocá-lo em uma pasta.

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

Certifique-se de que os arquivos de configuração estejam livres de erros!

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

e reinicie o servidor se não houver problemas.

sudo service nginx restart

E deve ser isso!

Coloque o ip do servidor web em seu navegador, você deverá ver o dynmap. Uma vez que estará vazio, você pode começar a renderizar os blocos entrando no servidor e executando o comando /dynmap fullrender <worldname>

Configurando o servidor da web que é hospedado por um host da web

Se você estiver usando um host da Web, pois não deseja configurar um. Esta é a seção certa para você!

Copiando a pasta da web para o host da web

Copie os arquivos do servidor minecraft em uma pasta em seu computador. Os arquivos que você vai copiar devem estar em plugins/dynmap/web no servidor do minecraft.

Copie os arquivos para o seu host, de preferência em um novo diretório, a menos que seja um host dynmap dedicado.

Terminar!

Sim, sério! Você Terminou.

Tutoriais bônus

Se você instalou seu próprio servidor da web NGINX, você pode seguir esta parte do tutorial de bônus para tornar seu servidor da web seguro com logins do dynmap. VOCÊ DEVE SEMPRE lidar com as credenciais do usuário com cuidado se habilitar logins com o Dynmap.

Você pode seguir uma das três opções para tornar seu servidor da web seguro

Instalando um certificado SSL GRÁTIS com CertBot

Você pode simplesmente seguir estas instruções do site do certbot. É a maneira mais fácil de obter um certificado SSL para um site.

Como observação, as certificações do certbot expiram mais rápido do que outros provedores, mas eles têm uma maneira automatizada de renovar suas certificações se você seguir as instruções sobre como fazer isso.

Instalando um certificado SSL de um provedor diferente

Como alternativa, você pode obter um certificado SSL de um provedor diferente, como NameCheap. Baixe a certificação pública e a chave privada do provedor. VOCÊ NUNCA DEVE COMPARTILHAR A CHAVE PRIVADA COM OUTRA PESSOA OU TORNÁ-LO PÚBLICA . É estritamente para o seu servidor da web e não deve ser apenas para ganhar.

Coloque o arquivo de certificação em /etc/ssl/certs/<certification_file>.pem
e coloque a chave privada em /etc/ssl/private/<private_key_file>.pem

Faça um backup da configuração do site antes de fazer qualquer alteração

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

Se você fizer um oopsie e precisar reverter, execute este comando

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

Na configuração do site NGINX, observe as diferenças entre sua configuração atual e adicione as alterações que você vê nesta configuração de exemplo.

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

Em seguida, você só precisa reiniciar o servidor da web NGINX.

sudo service nginx restart

Vá para o site do seu mapa dinâmico e agora deve estar seguro!
Very secure

Configurando o NGINX com o proxy do Cloudflare (última atualização em 19 de setembro de 2019)

Uma coisa boa sobre o proxy da Cloudflare é que eles têm uma certificação especial que serve apenas para comunicação entre o seu servidor web e seus serviços. Você também pode deixar a certificação durar até 15 anos. No entanto, é apenas uma alternativa para ter uma certificação SSL "real".

Primeiro, faça login no cloudflare e vá para o domínio com o qual deseja configurar o proxy. Em seguida, vá para a seção "SSL / TLS"
cloudflare dashboard

Na seção Origin Certificates , clique em "Criar certificado".
Selecione Let Cloudflare generate a private key and a CSR e defina Private key type como ECDSA

Adicione o nome de host map.YOURDOMAIN.com se quiser colocar o site dynmap em map.YOURDOMAIN.com.

Defina a validade do certificado para o que quiser (15 anos parece um bom amirite?).

Clique em Avançar e você verá um novo certificado SSL e uma chave privada na tela. Agora vamos copiar o texto e colá-lo em um arquivo via terminal.

Primeiro, vamos criar um arquivo de certificado e colar o texto. O texto deve começar com -----BEGIN CERTIFICATE----- e terminar com -----END CERTIFICATE-----

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

Em seguida, vamos criar um arquivo de chave privada e colar o texto. O texto deve começar com -----BEGIN PRIVATE KEY----- e terminar com -----END PRIVATE KEY-----

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

Agora vamos editar a configuração do site NGINX. Faça um backup da configuração do site antes de fazer qualquer alteração

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

Se você fizer um oopsie e precisar reverter, execute este comando

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

Na configuração do site NGINX, observe as diferenças entre sua configuração atual e adicione as alterações que você vê nesta configuração de exemplo.

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

Em seguida, você só precisa reiniciar o servidor da web NGINX.

sudo service nginx restart

Vá para o site do seu mapa dinâmico e agora deve estar seguro!
Very secure

FAQ's

Como faço para Linux?

Muito cuidado.

Mas aqui está a resposta séria.
Você pode se conectar ao seu servidor Linux com algo popular como PuTTY ou qualquer outro cliente SSH de sua escolha. Você pode fazer o login no terminal se tiver o usuário / senha.

Você pode encontrar facilmente guias / tutoriais sobre como usar o Linux na internet. Mas você deve sempre verificar o que um comando faz antes de executá-lo!

Meu site não está aparecendo (NGINX)
Certifique-se de que a porta do seu site seja encaminhada.

A porta padrão seria 80, mas se você seguisse o tutorial sobre como instalar uma certificação SSL, a porta seria 443.

Mas se isso não funcionar, verifique se o NGINX está sendo executado executando o comando

sudo service nginx status

e deve informar o que pode estar errado. Você também pode testar o arquivo de configuração executando o comando

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


Não vejo nenhuma imagem no site do dynmap!

Desde que começamos com um novo banco de dados sem quaisquer dados nele. Pode levar algum tempo para ver as imagens no mapa dinâmico.

Você pode executar o comando no jogo para renderizar totalmente um mundo se quiser /dynmap fullrender <worldname>

Como é que não há tutorial com windows ou apache?

Decidi não cobrir a configuração de um servidor web autônomo com windows ou apache, já que a maioria das pessoas usará Linux e NGINX hoje em dia. Mas se houver gente suficiente perguntando, posso cobrir as janelas e / ou apache

Mudei de ideia, posso converter de volta do sql?

Sim, você deve conseguir converter de volta para o método anterior se tiver criado um arquivo de backup configuration.txt.backup partir das etapas anteriores.

Basta excluir configuration.txt e renomear configuration.txt.backup para configuration.txt e pronto!

Por quê?

Porque porque não?

Existem mais possibilidades quando dynmap usa sql. Seria mais rápido fazer o backup, as pessoas ainda podem usar o site dynmap mesmo se o servidor estiver fora do ar, e muito mais!

Ainda mostra os ícones dos jogadores e / ou bate-papo?

Sim, o ícone do player ainda deve ser atualizado na página da web.

O chatbox também deve funcionar bem.

Deixe um comentário se você tiver dúvidas ou problemas!

Doc improvement Feature

Comentários muito úteis

Obrigado pelo tutorial! Consegui migrar meus 2 servidores Forge para a configuração de servidor web autônomo. E eu gostaria de apontar algumas coisas:

  • O Forge não inclui o driver JDBC para MySQL (como o Bukkit e o Cauldron fazem). Você precisa obtê-lo em https://mvnrepository.com/artifact/mysql/mysql-connector-java e colocá-lo no diretório mods. Veja # 1674.

  • Seria melhor mencionar no tutorial que /etc/nginx/sites-available/ e /etc/nginx/sites-enabled só existem em implementações nginx do Debian / Ubuntu. Na implementação upstream, o único arquivo de configuração é /etc/nginx/nginx.conf .

  • Eu não recomendaria usar MySQL para armazenamento de mapas, a menos que você tenha um hardware dedicado atuando como servidor MySQL. Tenho 2 servidores Forge em execução no meu servidor doméstico. Aquele configurado com MySQL tem significativamente mais CPU, RAM e sobrecarga de E / S de disco devido às transações com o banco de dados. Na verdade, o MySQL não foi projetado para armazenar BLOBs, que constituem quase todo o armazenamento de mapas do dynmap. Usando o MySQL como armazenamento de mapa, ciclos extras de CPU são consumidos por transações SQL. E como o dynmap armazena dados de mapa como BLOBs de imagem, usar o MySQL na verdade resulta em um desempenho muito pior do que o armazenamento de arquivos, conforme observado em meu servidor doméstico. Veja também https://stackoverflow.com/questions/5285857/when-is-using-mysql-blob-recommended

  • Adivinhe que tipo de banco de dados foi projetado para armazenar um grande número de BLOBs? O sistema de arquivos! Eu gostaria de propor a edição do tutorial para recomendar o armazenamento de arquivos nginx + php-fpm +. Para um servidor da web autônomo com armazenamento de arquivos, a seção url: deve ser alterada assim:

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 comentários

Observe que os usuários do dynmapforge não terão um diretório plugins/dynmap/web . Por exemplo, em um de meus servidores há:

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

(Estou filtrando dynmap / web / tiles / porque tenho 1500 diretórios lá ...)

Eu tentaria fazer isso sozinho, mas meus serviços nginx e minecraft estão em máquinas diferentes. : sweat_smile:

Eu segui até o fim, mas sem sorte. Eu tenho o Apache no mesmo servidor que o dynmap e movi a pasta da web para lá. Embora não haja erros no console, se eu navegar até o url, ele apenas mostra um fundo preto. Também estou usando SQLite, que já foi renderizado. Perdi alguma coisa, talvez?

Talvez você verifique o console do seu navegador para procurar erros e / ou solicitações com falha.

@miiichael
Sim, o grande problema em ir de um sistema de arquivos para um banco de dados é que o dynmap não importa os blocos para um banco de dados. Então você perderia todo o seu progresso de renderização. Ainda é possível colocar o servidor da web em uma máquina diferente do servidor do minecraft, mas requer que você use mysql em vez do sistema de arquivos.

@MrLogano
É porque o apache não consegue encontrar o arquivo de banco de dados SQLite, pois ele não está na pasta da web. Provavelmente, é melhor apontar o apache para a pasta da web que está na pasta dynmap em vez de copiar a pasta da web para um local diferente. Ou edite manualmente os arquivos php (da pasta da web copiada) para obter o arquivo db SQLite de um local diferente.

Vou escrever um tutorial mais detalhado assim que tiver algum tempo livre, pois estou muito ocupado com o caixa eletrônico.

@haloflooder
O arquivo php "dynmap_access" é vinculado ao arquivo de banco de dados SQLite no diretório dynmap. Tentei mais algumas vezes e, sempre que altero a seção de URL na configuração, vejo uma página completamente em branco. Deixando isso de fora, o filetree funciona bem, mas apontá-lo para o SQLite gera um erro 500. Verificar o log do apache diz que algo não foi possível abrir o arquivo de banco de dados, mostrando um erro na linha 79 em SQLite_tiles.php. Eu mudei as permissões para 775 também, sem sorte.

Eu sigo seu tutorial, mas a página da web disse "Não foi possível recuperar a configuração: Erro interno do servidor"
Como eu posso fazer?

Estou tendo o mesmo problema que @gundami. Uma investigação mais aprofundada revela esta mensagem de erro em /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 Você descobriu uma solução? Desculpe pelo atraso na resposta, estou extremamente ocupado nos últimos meses.

@gundami @ ads103 Você pode fornecer a configuração para o dynmap no pastebin? Não se esqueça de censurar qualquer informação sensível, como as credenciais do mysql.

Certo! Aqui está: https://pastebin.com/1xQ2Unjb

@ ads103 Acabei de notar que seu log de acesso diz http://dragonmc/ . O que você tem em sua configuração nginx?

Já que também faz um tempo desde que o dynmap foi atualizado. Vou instalar uma nova versão no dynmap no meu servidor de teste e seguir meu próprio guia para ver se algo mudou desde setembro.

Sim, dragonmc é o nome do host do meu servidor minecraft. Eu o tenho em um servidor DNS local, então posso simplesmente digitar "dragonmc" no meu navegador e navegar até ele. Aqui está minha configuração do apache e o diretório para o qual copiei meus arquivos dynmap.
https://pastebin.com/NQ8fNjqa

@ ads103 Suponho que seu servidor também esteja hospedado localmente em sua rede.

Sim! Está correto. Tudo está a apenas um IP local de distância!

@haloflooder você teve a chance de instalar uma nova versão em seu servidor de teste?

Infelizmente, não sei javascript. Posso ver que esta mensagem de erro está sendo gerada por esta função em map.js , mas não consigo encontrar onde a variável "configuration" recebeu um valor.

`função DynMap (opções) {

    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 Desculpe, estou ocupado com o trabalho desde que cumpri um prazo para algo. A configuração vem de MySQL_configuration.php em standalone.

Você copiou os arquivos da web para o servidor da web depois de permitir que o dynmap alterasse os valores de configuração com a configuração modificada?

Sim eu fiz. Eu até vi o tráfego de rede para o meu servidor de banco de dados aumentar quando ele começou a renderizar, então os valores de configuração estão pelo menos corretos o suficiente para colocar os blocos _ no_ banco de dados.

Aqui está uma pergunta. No guia, você incluiu esta instrução para copiar o conteúdo da pasta web para o servidor da web:
sudo cp -r /home/MyUsername/minecraft/servers/creative/plugins/dynmap/web/ /var/www/dynmap/
Você pretendia copiar a pasta web para a pasta dynmap , _ou_ os _contents_ da pasta web pasta dynmap ?

@ ads103 Oooo, essa é uma boa pegada. Deveria ter lido os comandos do Linux depois de trabalhar no guia por cerca de 12 horas.

Eu queria colocar um comando para copiar o conteúdo da pasta da web para a pasta do servidor da web do dynmap. Vou revisar meu próprio guia hoje com a versão mais recente do dynmap ainda hoje.

Alguma atualização nas configurações de acesso do MySQL? Depois de seguir este guia para o T e tentar acessar o mapa, recebo uma tela preta e o erro "Não foi possível recuperar a configuração: Gateway inválido".

EDIT: Sou um idiota e esqueci de instalar o php, está tudo bem

Em primeiro lugar, guia incrível! Estou tentando encontrar algo assim há um tempo. No entanto, estou tendo o mesmo problema que @WearisomelyVerbose, em que apenas recebo uma mensagem dizendo "Não foi possível recuperar a configuração: Gateway inválido"

Algumas informações sobre minha construção: Meu servidor Minecraft está em um servidor separado e usa um servidor Mysql para armazenar tudo. Fiz questão de copiar o diretório / web do Dynmap depois de alterar as configurações e reiniciar o servidor.

Uma coisa que percebi é que sempre que testo o arquivo Dynmap.conf no Nginx, recebo este erro:
sudo nginx -t -c / etc / nginx / sites-available / dynmap
nginx: [emerg] A diretiva "server" não é permitida aqui em / etc / nginx / sites-available / dynmap: 2
nginx: falha no teste do arquivo de configuração / etc / nginx / sites-available / dynmap

@ ads103 @gundami
Acho que tenho o mesmo erro: "Não foi possível recuperar a configuração: erro" após abrir o mapa no servidor web.

Para mim, alterar o arquivo "... \ standalone \ MySQL_config.php" no servidor da web resolveu o problema:
...
$ dbhost = 'localhost';
...
em vez do endereço IP. Mas não sei os detalhes, espero que ajude alguém.

Minha configuração é 2 Raspberry Pis. RP4B (4GB) hospeda minecraft (entre outros serviços) e RP3B + hospeda DynMap (Apache + SQL)

Valeu pelo ótimo tutorial!! :)

Consegui resolver meus problemas.

Os meus, pelo menos, eram bem simples em retrospectiva. Eu estava perdendo dependências.

Especificamente, faltava php-json e php-mysqlnd. (Estou em um sistema Fedora 31 e os nomes dos pacotes do Ubuntu são um pouco diferentes.)

Eu descobri que estava faltando esses pacotes ao perceber que php-fpm era um aplicativo separado com seus próprios arquivos de log localizados em /var/log/php-fpm . A verificação de www-error.log revelou estas duas linhas 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

Uma rápida pesquisa no Google pelas funções json_decode() e mysqli_connect() me levou a esses dois pacotes ausentes. Depois de instalá-los e atualizar o Dynmap no meu navegador, ele ... funcionou. Simplesmente funcionou.

Obrigado pelo tutorial! Consegui migrar meus 2 servidores Forge para a configuração de servidor web autônomo. E eu gostaria de apontar algumas coisas:

  • O Forge não inclui o driver JDBC para MySQL (como o Bukkit e o Cauldron fazem). Você precisa obtê-lo em https://mvnrepository.com/artifact/mysql/mysql-connector-java e colocá-lo no diretório mods. Veja # 1674.

  • Seria melhor mencionar no tutorial que /etc/nginx/sites-available/ e /etc/nginx/sites-enabled só existem em implementações nginx do Debian / Ubuntu. Na implementação upstream, o único arquivo de configuração é /etc/nginx/nginx.conf .

  • Eu não recomendaria usar MySQL para armazenamento de mapas, a menos que você tenha um hardware dedicado atuando como servidor MySQL. Tenho 2 servidores Forge em execução no meu servidor doméstico. Aquele configurado com MySQL tem significativamente mais CPU, RAM e sobrecarga de E / S de disco devido às transações com o banco de dados. Na verdade, o MySQL não foi projetado para armazenar BLOBs, que constituem quase todo o armazenamento de mapas do dynmap. Usando o MySQL como armazenamento de mapa, ciclos extras de CPU são consumidos por transações SQL. E como o dynmap armazena dados de mapa como BLOBs de imagem, usar o MySQL na verdade resulta em um desempenho muito pior do que o armazenamento de arquivos, conforme observado em meu servidor doméstico. Veja também https://stackoverflow.com/questions/5285857/when-is-using-mysql-blob-recommended

  • Adivinhe que tipo de banco de dados foi projetado para armazenar um grande número de BLOBs? O sistema de arquivos! Eu gostaria de propor a edição do tutorial para recomendar o armazenamento de arquivos nginx + php-fpm +. Para um servidor da web autônomo com armazenamento de arquivos, a seção url: deve ser alterada assim:

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

Mais um obrigado @haloflooder por fazer o tutorial! Eu migrei também e funciona bem.

Também achei a configuração gentilmente compartilhada por Frumple para o servidor MRT útil: https://github.com/Frumple/mrt-docker-services/blob/master/containers/dynmap-main/docker-compose.yml

@ database64128 Obrigado pelas informações sobre os arquivos de configuração json. Porém, uma alteração: os arquivos de configuração json são criados apenas se login-enabled: false estiver definido dentro do arquivo de configuração do Dynmap.

Erro? Intencional? Eu não sei. Mais informações sobre o problema que criei aqui: https://github.com/webbukkit/dynmap/issues/2848.

Pensei em mencioná-lo aqui porque levei muito tempo para rastrear por que os arquivos de configuração json não estavam sendo criados!

Estou tendo o problema de tela preta descrito por @MrLogano . Estou usando MySQL e nginx em um servidor separado. Estou executando um fullrender agora e posso ver a contagem de linhas na tabela "Tiles" no MySQL crescendo, então sei que ele está se conectando ao MySQL perfeitamente.

No console do navegador, vejo os seguintes erros:

O script de “ https: //REDACTED/standalone/config.js? _ = 3.0-beta-10-257 ” foi carregado, embora seu tipo MIME (“text / html”) não seja um tipo MIME JavaScript válido.
O carregamento falhou para o

Eu descobri qual era o meu problema. O nome de host que usei para o servidor MySQL foi resolvido no meu servidor Minecraft, mas não no meu servidor nginx. Mudei o nome do host para algo que pudesse ser resolvido de ambos e agora está funcionando.

Bem, eu tenho um servidor minecraft hospedado em um host e um site hospedado em outro host (que usa apache e não suporta proxies reversos). Como faço para configurar um dynmap no meu site sem iframe? porque não vejo nenhum tutorial para isso

@ alex17lol Este guia não usa um proxy reverso. Você deve ser capaz de usar sua própria configuração Apache em vez das configurações Nginx sugeridas aqui.

@ alex17lol Este guia não usa um proxy reverso. Você deve ser capaz de usar sua própria configuração Apache em vez das configurações Nginx sugeridas aqui.

Não tenho acesso aos comandos sudo. Uso um host que é o meu problema

_ Alguém pode adicionar isso ao wiki? _

Muito obrigado por fazer isso!

O SELinux pode causar todos os tipos de sofrimento. Mais óbvios são aqueles que bloqueiam completamente todo o acesso ao conteúdo da web. Eles aparecem no log de erros do servidor da web. Problemas mais sutis podem aparecer no log de erros do php-fpm. Depois de lidar com todos os erros no log do servidor da web, eu ainda tinha problemas de tela preta e a temida falha ao ler a configuração. Por exemplo:

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

O que consertou esse quebra-cabeça final para mim foi:

# setsebool -P httpd_can_network_connect_db=1

Descobri que rsync é MUITO mais rápido do que scp -r . scp estava se arrastando a uma taxa abissalmente lenta, então eu o matei a 300 MB ou mais e usei o seguinte comando em seu lugar. 2 TB transferidos incrivelmente rápido em comparação com a tentativa de scp . Eu fiz rsync algumas vezes enquanto tentava resolver problemas e rsync atualizei sem enviar toda a bagunça todas as vezes.

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

Alguém já tentou fazer isso com um banco de dados DB2?

Eu realmente poderia usar um pouco de ajuda com este problema ^^^ # 3125. Alguém pode ajudar com esse problema? Eu verifiquei três vezes este guia. começou do zero várias vezes. tentei várias soluções de hospedagem, mas sempre recebo o mesmo problema. Tentei algumas soluções mencionadas nos comentários, mas acabaram sendo inúteis.
Também tentei discórdia, mas não obtive resposta várias vezes.

@arkD Por sorte, revisarei este guia nas próximas semanas, já que estou configurando outra configuração autônoma, mas usando a versão mais recente do Dynmap para 1.16.3 que não foi lançada publicamente na página spigot ainda como uma atualização.

Não estava funcionando para mim - eu tive que habilitar o php no NGINX usando este guia
https://www.digitalocean.com/community/tutorials/how-to-install-linux-nginx-mysql-php-lemp-stack-in-ubuntu-16-04

Agora o erro "Não foi possível recuperar a configuração" parou de aparecer, mas ainda recebo uma tela preta , sem barra lateral, sem relógio. 😢

DB está configurado para sqlite e tudo estava funcionando e renderizado antes de iniciar o guia

Além disso: eu tenho esse erro no console. É muito provável que esteja relacionado
image

Esta página foi útil?
0 / 5 - 0 avaliações