Dynmap: [チュートリアル] MySQL / SQLiteを使用したスタンドアロンWebサーバーのセットアップ

作成日 2019年09月14日  ·  38コメント  ·  ソース: webbukkit/dynmap

MySQL / SQLiteでスタンドアロンサーバーを実行するための明確な手順を見たことがありません。 スタンドアロンのWebサーバーのセットアップ方法に関するwikiページも、長い目で見れば時代遅れです。

dynmapで数時間突っついた後。 これは、スタンドアロンWebサーバーを* nixサーバー上のNGINXで実行する方法に関するチュートリアルです。

🔴警告🔴
このガイドに従うと、dynmapでSQLデータベースを使用していない場合は、すべてのデータがリセットされます。

DynmapでのMySQLの使用は、コミュニティによって完全にはテストされていません。

このチュートリアルは、Linuxについて少し知っていることを前提としています。 Linuxの使い方がわからなくても、学ぶのに遅すぎることはありません。

「minecraftサーバーホスト」を使用している場合。 ほとんどの場合、Minecraftサーバーホストを使用してスタンドアロンのWebサーバーをセットアップすることはできません。 DynmapのスタンドアロンWebサーバーをホストするには、Webサイトホストまたはvpsを取得する必要があります。

ノート

  • 選択肢があれば、SQLiteの代わりにMySQLを使用することを強くお勧めします。 いくつかの追加の手順が必要になる場合がありますが、明るい面を見てください。 MySQLを他のプラグインで使用できます:)

  • このチュートリアルでは、sudoを使用する必要もあります。 sudoパーマがない場合は、運が悪いか、VPSを借りることができます。

  • SQLiteを使用している場合、スタンドアロンWebサーバーを別のサーバー/ vpsでホストすることはできません。 別のサーバー/ vpsでスタンドアロンサーバーをホストするには、SQLiteデータベースをMySQL / MariaDBサーバーに移行する必要があります。 ただし、これは完全にオプションです。SQLiteを使用してminecraftサーバーと同じサーバーにスタンドアロンWebサーバーをセットアップする方法についても説明します。
  • 興味がない限り、WindowsまたはApacheを使用してスタンドアロンのWebサーバーをセットアップする方法については説明しません。 別の方法として、MySQL(SQLiteではない)を使用している場合は、安価なVPSを入手して、そこでWebサーバーをホストすることができます。

寄稿者への注意

あなたが私にウィキを編集する許可を与えたら。 スタンドアロンのウェブサーバーをセットアップして維持する方法について、ウィキに喜んで貢献します;)

ボーナスチュートリアル

完全にオプションであるcloudflareのプロキシでスタンドアロンWebサーバーを動作させる方法について説明します。 ユーザーがdynmapWebサイトにログインできるようにする場合は、これを強くお勧めします。 代わりにcertbotを使用してSSL証明書をインストールする場合は、ボーナスチュートリアルのこの部分に従わないでください。

また、certbotまたは完全にオプションの別のプロバイダーを使用してNGINXWebサーバーにSSL証明書をインストールする方法についても説明します。 ユーザーがdynmapWebサイトにログインできるようにする場合は、これを強くお勧めします。 代わりにcloudflareプロキシを使用したい場合は、ボーナスチュートリアルのこの部分に従わないでください。

長所と短所

長所:

  • Dynmap Webサイトは、Minecraftサーバーがダウン/再起動している場合でも利用できます
  • minecraftサーバーにかける負荷を減らす
  • NGINXは内部Webサーバーよりも優れたパフォーマンスを発揮します

短所:

  • セットアップが面倒です
  • Linuxについて少し知る必要があります

カバーする内容

以下のことをカバーします

  • MySQL / MariaDBのセットアップ(オプション)
  • PHPとSQLをサポートするNGINXのセットアップ
  • MySQL / SQLiteで使用するためのDynmapプラグインの準備
  • MySQL / SQLite用のスタンドアロンサーバーのセットアップ
  • ボーナス:NGINX Webサーバーでcloudflareプロキシを設定する(オプション)
  • ボーナス:SSL認証を使用したNGINXのセットアップ(オプション)
  • FAQは、このガイドの一番下にあります。

サーバーでPHPとSQLをサポートするMySQL / MariaDBとNGINXをセットアップする

開始するには、スタンドアロンのdynmapWebサイトをホストするサーバーにWebサーバーをインストールする必要があります。 チュートリアルのこの部分では、サーバーへのMySQLのインストールについても説明します。

何らかの理由でSQLiteを使用したい場合は、MySQL / MariaDBなしでNGINXをインストールできます。 しかしnginxのはMinecraftのサーバーがホストされている同じサーバー上にある必要があります。

Webサイトのホストを使用している場合、またはMinecraftのホストを使用している場合。 チュートリアルリンクの下の注を参照してください。

MySQL / MariaDBはどこにインストールすればよいですか?

通常、MySQLはMinecraftサーバーと同じサーバーにインストールする必要があります。 MySQLを使用するプラグインで同じMySQLサーバーを使用できます。 MySQLはDynmapプラグインによって使用され、Webサーバーが読み取り/書き込みするデータも保存/ロードします。

一般に、MySQL / MariaDBサーバーがMinecraftサーバーと同じサーバー/ネットワーク上にある場合は、待ち時間が短くなるため、より多くのメリットがあります。

チュートリアル

インターネット上でnginx / MySQL / MariaDBをセットアップする方法に関するチュートリアルは無数にあります。 いくつかのLinuxOSでそれらを設定するためのチュートリアルのいくつかのリンクがあります。

チュートリアルでMariaDBをインストールするように指示されていても心配しないでください。これは、MySQLとほとんど同じです。

チュートリアルへのリンク

1出典

WebサーバーのIPをWebブラウザーに入力して、WebサーバーがWebページを提供しているかどうかをテストします。 何も表示されない場合は、ファイアウォールがポートをブロックしているか、nginxサーバーを起動していない可能性があります。

ノート

  • すでにWebサーバーを使用している場合は、この手順をスキップできます。 ただし、MySQLサーバーがまだない場合は、MySQLサーバーが必要です。
  • 上記のように、ウェブサイトのホストを使用している場合。 この手順はスキップできますが、MySQLサーバーが必要です。
  • Minecraftホストを使用している場合は、VPS /ウェブサイトホストを取得する必要があります。 うまくいけば、MinecraftホストにはMySQLサーバーもパッケージに含まれています。 そうでない場合は、MySQLサーバーをVPSにインストールできると思いますが、十分なスペースがあることを確認してください

MySQLのセットアップ(SQLiteを使用している場合は、この手順をスキップしてください)

次に、MySQL / MariaDBサーバーをセットアップします。

アプリケーションごとに制限付きの権限を持つ新しいユーザー/パスワードを作成することをお勧めします。

外部Webサーバーをセットアップする場合は、ファイアウォール(iptables / firewalld / ufw / etc)をセットアップして、Webサーバーのみがデータベースに接続できるようにすることもできます。

MySQL / MariaDBデータベースの構成

minecraftサーバーをホストしているサーバー上のターミナルを使用して、新しいデータベースを作成し、いくつかのデータベースユーザーを追加します。

MySQL / MariaDBでの新しいデータベースの作成

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

例(クリックして展開)

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

新しいユーザーを追加する

ノート
MySQLサーバーがMinecraftサーバーと同じサーバー上にある場合。 <minecraftserver_ip>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

WebサーバーとMinecraftサーバーが同じサーバー上にある場合の例(クリックして展開)

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

oopsieを作成し、mysqlユーザーを削除する必要がある場合。 これは、ユーザーを削除する方法です。

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

新しいユーザーを作成したら、そのユーザーにログインしてみてください。 (「exit」を介してmysql rootユーザーからログアウトした後)

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

MySQLの権限/権限

MySQLには、MySQLユーザーに設定するために使用できるこれらの権限があります。

  • ALL PRIVILEGESは-ユーザーにすべての権限を付与します
  • CREATE -ユーザーがデータベース/テーブルを作成することができます
  • DELETE-ユーザーがテーブルから行(データ)を削除できるようにします
  • DROP-ユーザーがデータベースとテーブルをドロップできるようにします
  • INSERT-ユーザーが行(データ)をテーブルに挿入できるようにします
  • SELECT -ユーザー
  • UPDATE-ユーザーがテーブル内のデータを更新できるようにします

Dynmapプラグインの準備

次に、プラグインから構成のいくつかの設定を変更します。

Dynmapをインストールします

サーバーに最新バージョンのdynmapをインストールします。 最新バージョンは、1.10から1.14までのMinecraftバージョンで引き続き機能するはずです。

オンにしてオフにします

minecraftサーバーの電源を入れてから、サーバーを停止します。 pluginsフォルダーにdynmapという名前の新しいフォルダーがあるはずです。

configuration.txtファイルのバックアップを作成してください! コピーを作成して、 configuration.txt.backupような名前を付けます。

構成ファイルconfiguration.txt開いて、いくつかの設定を変更できるようにします。

ストレージの変更

構成のストレージセクションをから変更します

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"


MySQLの例(クリックして展開)

storage:
  # Filetree storage (standard tree of image files for maps)
  #type: filetree <- DONT FORGET TO COMMENT THIS OUT
  # SQLite db for map storage (uses dbfile as storage location)
  #type: sqlite
  #dbfile: dynmap.db
  # MySQL DB for map storage (at 'hostname':'port' with flags "flags" in database 'database' using user 'userid' password 'password' and table prefix 'prefix')
  type: mysql
  hostname: <mysql_ip>
  port: <mysql_port>
  database: <mysql_database>
  userid: <dynmap_mysql_user>
  password: <dynmap_mysql_password>
  prefix: "" # Can add prefix for tables if you want
  flags: "?allowReconnect=true"


SQLiteの例(クリックして展開)

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"

一部のコンポーネント設定の変更

ストレージセクションのすぐ下に、
コメントアウトする- class: org.dynmap.InternalClientUpdateComponent

したがって、次のようになります。

前(クリックして展開)

  - 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


後(クリックして展開)

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

その直後に、そのすぐ下のセクションのコメントを解除します。
したがって、このようになります。

前(クリックして展開)

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


後(クリックして展開)

  - 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

内部Webサーバーを無効にする

次に、内部Webサーバーは不要になったため、無効にします。

構成ファイルでdisable-webserverを見つけ、値をfalseからtrueます。

WebサーバーのいくつかのURLを変更する

dynmapスタンドアロンWebサーバーが機能するために必要ないくつかのURLを変更します。 これは、私が知る限り、ほとんどの人が問題を抱えていた大きな部分です。

構成ファイルでurl:セクションを見つけます。 このようになります。

前(クリックして展開)

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


[MySQLの例]の後(クリックして展開)

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


[SQLiteの例]の後(クリックして展開)

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

もう一度オンとオフを切り替えます

minecraftサーバーを起動しますが、まだオフにしないでください!
最新のログをチェックして、dynmapに問題があるかどうかを確認してください。 問題がない場合は、サーバーの電源を切ります。

知らせ

サーバーを最後に起動および停止する必要がある主な理由は、Dynmapが使用するWebサーバーの構成ファイルを作成するためです。 configuration.txt設定を変更した場合、 plugins/dynmap/webファイルが変更される可能性があります。

さらに大きな通知

ユーザーがdynmapにログインできるようにする場合。 間違いなくSSL証明書をインストールするか、cloudflareのプロキシを使用して、ログイン資格情報を悪意のあるユーザーから保護する必要があります。

Webサーバーのセットアップ方法に関するオプション

今、私たちは真剣なビジネスに取り掛かります!

ここにいくつかのオプションがあります:

minecraftサーバー(MySQL / SQLite)と同じサーバーでのホスティング

オプション1 :Webサーバーをプラグインフォルダー内のdynmap Webフォルダーにリンクできます(簡単)
オプション2 :Webフォルダーをサーバー上の別の場所にコピーします(より安全です)

minecraftサーバー(MySQL)と同じサーバーではない別のサーバーでのホスティング

唯一のオプション:唯一のオプションは、WebフォルダーをWebサーバーのあるサーバーにコピーすることです。

Webホスト(MySQL)を使用したホスティング

hostgator、namecheap、000webhostなどのWebホストを使用している場合。唯一のオプションは、WebフォルダーをWebホストにコピーすることです。
Webホストが多すぎてカバーできないため、これを行う方法の詳細は追加しません。

NGINXWebサーバーを使用した一般的なセットアップ

セットアップオプションを使用して次のセクションに進む前に。 NGINXWebサーバーの一般的なセットアップについて説明します。

デフォルトのWebサイト構成を削除する

新しいNGINXWebサーバーをインストールした場合。 デフォルトのWebサイト構成を削除し、独自の構成を追加します。 このチュートリアルの前にすでにNGINXを持っていて、何をしているのかを知っている場合。 dynmapWebサイトの設定方法に関するオプションを含む次のセクションに進みます。

デフォルトの設定は通常/etc/nginx/sites-available//etc/nginx/sites-enabledます。

デフォルトを使用するので、デフォルトのコピーを作成します。

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

次に、デフォルトの構成をsites-enabledから削除して、デフォルトのサイト構成を無効にし、nginxWebサーバーを再起動します。

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

minecraftサーバーと同じサーバー上にあるWebサーバーをセットアップする

minecraftサーバーと同じサーバーで独自のNGINXWebサーバーをホストしている場合。 これはあなたにぴったりのセクションです!

ノート
このチュートリアルを続行する前に、NGINXの一般的な設定に従っていることを確認してください

オプション1:Webサーバーをdynmapフォルダーにリンクする(クリックして展開)

Webサーバーを簡単に(ただし安全すぎないように)セットアップしたい場合。 これはあなたにとって正しいオプションです! ただし、オプション1よりも安全なオプションであるため、オプション2に従うことを強くお勧めします。

長所:

  • 実行するコマンドが1つ少なくなります(そのようなことに興味がある場合)
  • dynmap構成を変更する場合は、構成ファイルをコピーする必要はありません。

短所:

  • オプション2と比較して安全性が低い(議論の余地がある)

Webサイト構成ファイルの編集

/etc/nginx/sites-available/dynmapでdynmap構成ファイルの編集を開始します

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

設定ファイルは次のようになります。 設定の値を好みに合わせて変更します

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;
        }
}
  • 変更することを忘れないでくださいminecraftサーバーフォルダーが含まれているLinuxユーザー名に。
  • 変更することを忘れないでくださいminecraftサーバーがあるフォルダーに

例:

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

オプション2:Webフォルダを別の場所にコピーする

Webサーバーをより安全な方法でセットアップしたい場合。 これはあなたにとって正しいオプションです!

長所:

  • オプション1よりも安全(議論の余地あり)

短所:

  • dynmap構成を変更した場合は、いくつかの構成ファイルを新しい場所にコピーする必要があります

ファイルを新しい場所にコピーする

dynmapWebファイルを別の場所にコピーします

sudo cp -r /home/<USERNAME>/<MINECRAFTSERVER>/plugins/dynmap/web/ /var/www/dynmap/
  • 変更することを忘れないでくださいminecraftサーバーフォルダーが含まれているLinuxユーザー名に。
  • 変更することを忘れないでくださいminecraftサーバーがあるフォルダーに

例:

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

Webサイト構成ファイルの編集

/etc/nginx/sites-available/dynmapでdynmap構成ファイルの編集を開始します

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

設定ファイルは次のようになります。 設定の値を好みに合わせて変更します

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

それでは、dynmapサーバーを公開しましょう! (オプション1と2の両方)

オプション1/2の手順を実行した後。 dynmap Webサーバー構成のショートカットを作成し、フォルダーに配置します。

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

設定ファイルにエラーがないことを確認してください!

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

問題がなければサーバーを再起動します。

sudo service nginx restart

そしてそれはそれであるはずです!

WebサーバーのIPをWebブラウザーに配置すると、dynmapが表示されます。 空になるので、サーバーに参加してコマンド/dynmap fullrender <worldname>を実行すると、タイルのレンダリングを開始できます。

別のサーバーでホストされているWebサーバーをセットアップする

minecraftサーバーをホストしているサーバーとは別のサーバーで独自のNGINXWebサーバーをホストしている場合。 これはあなたにぴったりのセクションです!

ノート

  • このチュートリアルを続行する前に、NGINXの一般的な設定に従っていることを確認してください
  • Webサイトの構成は、minecraftサーバーをホストしているサーバーではなく、NGINXWebサーバーをホストしているサーバー上にある必要があります。

長所:

  • 他の方法よりもさらに安全

短所:

  • dynmap構成を変更した場合は、いくつかの構成ファイルを新しい場所にコピーする必要があります

ファイルを新しい場所にコピーする

dynmapWebファイルを別の場所にコピーします

minecraftサーバーをホストしているサーバーでこのコマンドを実行します。 このコマンドは、フォルダーをminecraftサーバーからWebサーバーにコピーします。 Webサーバーへのパスワードの入力を求められます。

sudo scp -r /home/<USERNAME>/<MINECRAFTSERVER>/plugins/dynmap/web <WEBSERVER_USERNAME>@<WEBSERVER_IP>:/var/www/dynmap
  • 変更することを忘れないでくださいminecraftサーバーフォルダーが含まれているサーバーのLinuxユーザー名に。
  • 変更することを忘れないでくださいminecraftサーバーがあるフォルダーに
  • しないでください

例:

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

Webサイト構成ファイルの編集

/etc/nginx/sites-available/dynmapでdynmap構成ファイルの編集を開始します

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

設定ファイルは次のようになります。 設定の値を好みに合わせて変更します

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

それでは、dynmapサーバーを公開しましょう!

手順に従った後。 dynmap Webサーバー構成のショートカットを作成し、フォルダーに配置します。

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

設定ファイルにエラーがないことを確認してください!

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

問題がなければサーバーを再起動します。

sudo service nginx restart

そしてそれはそれであるはずです!

WebサーバーのIPをWebブラウザーに配置すると、dynmapが表示されます。 空になるので、サーバーに参加してコマンド/dynmap fullrender <worldname>を実行すると、タイルのレンダリングを開始できます。

WebホストによってホストされているWebサーバーのセットアップ

自分で設定したくないのでウェブホストを使用している場合。 これはあなたにぴったりのセクションです!

WebフォルダをWebホストにコピーする

minecraftサーバーからコンピューター上のフォルダーにファイルをコピーします。 コピーするファイルは、minecraftサーバーのplugins/dynmap/webにあるはずです。

専用のdynmapウェブホストになる場合を除いて、できれば新しいディレクトリのウェブホストにファイルをコピーします。

終了!

ええ、本当に! 完了です。

ボーナスチュートリアル

独自のNGINXWebサーバーをインストールした場合は、ボーナスチュートリアルのこの部分に従って、dynmapログインでWebサーバーを安全にすることができます。 あなたはDynmapでログインを有効にすると、あなたは常に注意して、ユーザーの資格情報を処理あります。

3つのオプションのいずれかに従って、Webサーバーを安全にすることができます

CertBotを使用した無料のSSL証明書のインストール

certbotWebサイトからこれらの指示に従うことができます。 WebサイトのSSL証明書を取得する最も簡単な方法です。

注として、certbotの認定は他のプロバイダーよりも早く期限切れになりますが、その方法に関する指示に従うと、認定を更新する自動化された方法があります。

別のプロバイダーからのSSL証明書のインストール

別の方法として、NameCheapなどの別のプロバイダーからSSL証明書を取得することもできます。 プロバイダーから公開証明書と秘密鍵をダウンロードします。 秘密鍵を他の人と共有したり、公開したりしないでください。 それは厳密にあなたのウェブサーバーのためであり、ただつかむために立ち上がっているべきではありません。

認定ファイルを/etc/ssl/certs/<certification_file>.pem
秘密鍵を/etc/ssl/private/<private_key_file>.pem

変更を加える前に、Webサイトの構成のバックアップを作成してください

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

oopsieを作成し、元に戻す必要がある場合は、このコマンドを実行します

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

NGINX Webサイトの構成で、現在の構成の違いを確認し、この構成例から見た変更を追加します。

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

次に、NGINXWebサーバーを再起動する必要があります。

sudo service nginx restart

dynmap Webサイトにアクセスすると、安全になります。
Very secure

Cloudflareのプロキシを使用したNGINXのセットアップ(最終更新日:2019年9月19日)

Cloudflareのプロキシの良いところは、Webサーバーとそのサービスの間の通信専用の特別な認証を持っていることです。 また、認定を最長15年間継続することもできます。 ただし、これは「実際の」SSL認証を取得するための代替手段にすぎません。

まず、cloudflareにログインし、プロキシを設定するドメインに移動します。 次に、「SSL / TLS」セクションに移動します
cloudflare dashboard

Origin Certificatesセクションで、[証明書の作成]をクリックします。
Let Cloudflare generate a private key and a CSRを選択し、 Private key typeECDSA

dynmap Webサイトをmap.YOURDOMAIN.comに配置する場合は、ホスト名map.YOURDOMAIN.comを追加します。

証明書の有効性を好きなように設定します(15年は良いアミライトに聞こえますか?)。

[次へ]をクリックすると、画面に新しいSSL証明書と秘密鍵が表示されます。 次に、テキストをコピーして、ターミナル経由でファイルに貼り付けます。

まず、証明書ファイルを作成してテキストに貼り付けます。 テキストで始まる必要があります-----BEGIN CERTIFICATE-----で、エンド-----END CERTIFICATE-----

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

次に、秘密鍵ファイルを作成してテキストに貼り付けます。 テキストで始まる必要があります-----BEGIN PRIVATE KEY-----で、エンド-----END PRIVATE KEY-----

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

次に、NGINXWebサイトの構成を編集します。 変更を加える前に、Webサイトの構成のバックアップを作成してください

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

oopsieを作成し、元に戻す必要がある場合は、このコマンドを実行します

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

NGINX Webサイトの構成で、現在の構成の違いを確認し、この構成例から見た変更を追加します。

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

次に、NGINXWebサーバーを再起動する必要があります。

sudo service nginx restart

dynmap Webサイトにアクセスすると、安全になります。
Very secure

FAQの

Linuxはどうすればいいですか?

非常に慎重に。

しかし、ここに深刻な答えがあります。
PuTTYやその他のSSHクライアントなどの人気のあるものを使用してLinuxサーバーに接続できます。 ユーザー/パスワードをお持ちの場合は、端末にログインできます。

インターネット上でLinuxを使用する方法に関するガイド/チュートリアルを簡単に見つけることができます。 ただし、コマンドを実行する前に、コマンドの動作を常に再確認する必要があります。

私のウェブサイトがポップアップしません(NGINX)
Webサイトがポート転送されていることを確認してください。

デフォルトのポートは80ですが、SSL証明書のインストールに関するチュートリアルに従った場合、ポートは443になります。

それでもうまくいかない場合は、コマンドを実行してNGINXが実行されているかどうかを確認してください

sudo service nginx status

そしてそれはあなたに何が間違っているかもしれないかを教えてくれるはずです。 コマンドを実行して構成ファイルをテストすることもできます

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


dynmapのWebサイトに画像が表示されません。

データのない新しいデータベースから始めたので。 dynmapで画像が表示されるまでに時間がかかる場合があります。

/dynmap fullrender <worldname>必要な場合は、ゲーム内でコマンドを実行して、世界を完全にレンダリングできます。

WindowsやApacheを使用したチュートリアルがないのはなぜですか?

最近はほとんどの人がLinuxとNGINXを使用するようになるため、WindowsまたはApacheを使用したスタンドアロンWebサーバーのセットアップについては説明しないことにしました。 しかし、質問する人が十分にいる場合は、窓やアパッチをカバーする可能性があります

気が変わったのですが、SQLから元に戻すことはできますか?

はい、前の手順でバックアップファイルconfiguration.txt.backupを作成した場合は、前の方法に戻すことができるはずです。

ただ、削除configuration.txtし、名前の変更configuration.txt.backupconfiguration.txt 、あなたが行くためにすべての良いです!

どうして?

なぜですか?

dynmapがsqlを使用する場合、より多くの可能性があります。 バックアップの方が速く、サーバーがダウンしている場合でも、人々はdynmapWebサイトを使用できます。

それでもプレーヤーのアイコンやチャットは表示されますか?

はい、プレーヤーアイコンは引き続きWebページで更新する必要があります。

チャットボックスも正常に機能するはずです。

質問や問題があればコメントを残してください!

Doc improvement Feature

最も参考になるコメント

チュートリアルをありがとう! 2台のForgeサーバーをスタンドアロンのWebサーバー構成に移行することができました。 そして、私はいくつかのことを指摘したいと思います:

  • Forgeには、MySQL用のJDBCドライバーは含まれていません(BukkitやCauldronのように)。 https://mvnrepository.com/artifact/mysql/mysql-connector-javaから取得し、modsディレクトリにドロップする必要があり

  • チュートリアルでは、 /etc/nginx/sites-available//etc/nginx/sites-enabledはDebian / Ubuntuのnginx実装にのみ存在することを述べておいたほうがよいでしょう。 アップストリーム実装では、構成ファイルは/etc/nginx/nginx.confです。

  • MySQLサーバーとして機能する専用ハードウェアがない限り、マップストレージにMySQLを使用しないことをお勧めします。 ホームサーバーで2台のForgeサーバーを実行しています。 MySQLで構成されたものは、データベースとのトランザクションのために、CPU、RAM、およびディスクI / Oのオーバーヘッドが大幅に増加します。 実際、MySQLは、dynmapのマップストレージのほとんどすべてを構成するBLOBを格納するようには設計されていません。 MySQLをマップストレージとして使用することにより、SQLトランザクションによって余分なCPUサイクルが消費されます。 また、dynmapはマップデータをイメージBLOBとして保存するため、MySQLを使用すると、ホームサーバーで観察されるように、実際にはファイルストレージよりもパフォーマンスが大幅に低下します。 https://stackoverflow.com/questions/5285857/when-is-using-mysql-blob-recommendedも参照して

  • 多数のBLOBを格納するために設計されたDBのタイプを推測しますか? ファイルシステム! チュートリアルを編集して、nginx + php-fpm +ファイルストレージを推奨することを提案したいと思います。 ファイルストレージを備えたスタンドアロンWebサーバーの場合、 url:セクションを次のように変更する必要があります。

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

全てのコメント38件

dynmapforgeユーザーにはplugins/dynmap/webディレクトリがないことに注意してください。 たとえば、私のサーバーの1つに次のものがあります。

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

(1500個のディレクトリがあるため、dynmap / web / tiles /を除外しています...)

これを自分で試してみますが、nginxとminecraftのサービスは別のマシン上にあります。 :sweat_smile:

私はこれを実行しましたが、運がありませんでした。 dynmapと同じサーバー上にApacheがあり、そこにWebフォルダーを移動しました。 コンソールにエラーはありませんが、URLに移動すると、背景が黒くなります。 すでにレンダリングされているSQLiteも使用しています。 私はおそらく何かを逃したことがありますか?

たぶん、ブラウザのコンソールをチェックして、エラーや失敗したリクエストを探しますか?

@miiichael
ええ、ファイルシステムからデータベースに移行する際の大きな問題は、dynmapがタイルをデータベースにインポートしないことです。 したがって、レンダリングの進行状況はすべて失われます。 WebサーバーをMinecraftサーバーとは別のマシンに配置することは可能ですが、ファイルシステムの代わりにmysqlを使用する必要があります。

@MrLogano
これは、ApacheがSQLiteデータベースファイルをWebフォルダーにないために見つけられないためです。 Webフォルダーを別の場所にコピーするのではなく、dynmapフォルダーにあるWebフォルダーをapacheにポイントする方がよいでしょう。 または、(コピーしたWebフォルダーから)phpファイルを手動で編集して、別の場所からSQLitedbファイルを取得します。

私はATMでかなり忙しいので、暇があれば、より詳細なチュートリアルを書きます。

@haloflooder
phpファイル「dynmap_access」は、dynmapディレクトリのSQLiteデータベースファイルにリンクしています。 何度か試しましたが、構成のURLセクションを変更すると、完全に空白のページが表示されます。 それを除いて、ファイルツリーは正常に機能しますが、SQLiteを指すと500エラーがスローされます。 apacheログを確認すると、データベースファイルを開くことができず、SQLite_tiles.phpの79行目にエラーが表示されます。 運が悪かったので、パーミッションも775に変更しました。

チュートリアルに従いましたが、Webページに「構成を取得できませんでした:内部サーバーエラー」と表示されました
どのようにできるのか?

@gundamiと同じ問題が発生しています。 さらに調査すると、/ 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解決策を

@gundami @ ads103pastebinでdynmapの設定を提供できますか? mysqlクレデンシャルなどの機密情報を検閲することを忘れないでください。

もちろん! どうぞ: https

@ ads103アクセスログにhttp://dragonmc/と表示されていることに気づきました。 nginx構成には何がありますか?

dynmapが更新されてからしばらく経ちました。 テストサーバーのdynmapに新しいバージョンをインストールし、独自のガイドに従って、9月以降に変更がないかどうかを確認します。

ええ、dragonmcは私のminecraftサーバーのホスト名です。 ローカルDNSサーバーにあるので、Webブラウザに「dragonmc」と入力して参照するだけです。 これが私のapache設定と、dynmapファイルをコピーしたディレクトリです。
https://pastebin.com/NQ8fNjqa

@ ads103あなたのサーバーもあなたのネットワーク上でローカルにホストされていると思いますか?

うん! そのとおりです。 すべてがローカルIPから離れています!

@haloflooderテストサーバーに新しいバージョンをインストールする機会はありましたか?

残念ながら、私はjavascriptを知りません。 このエラーメッセージはmap.jsでこの関数によって生成されていることがわかりますが、変数"configuration"値が割り当てられている場所が見つかりません。

`関数DynMap(オプション){

    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申し訳ありませんが、何かの締め切りに間に合わなければならなかったので、仕事で忙しくしています。 構成は、スタンドアロンのMySQL_configuration.phpから取得されます。

変更された構成でdynmapに構成値を変更させた後、WebファイルをWebサーバーにコピーしましたか?

はい、しました。 データベースサーバーへのネットワークトラフィックがレンダリングを開始するときに増加するのを見たので、構成値は少なくともデータベースにタイルを取得するのに十分正しいです。

ここに質問があります。 ガイドには、 webフォルダーの内容をWebサーバーにコピーするための次の手順が含まれています。
sudo cp -r /home/MyUsername/minecraft/servers/creative/plugins/dynmap/web/ /var/www/dynmap/
webフォルダーをdynmapフォルダーにコピーするつもりでしたか、それともwebフォルダーの_contents_をdynmapフォルダーにコピーするつもりでしたか?

@ ads103 Oooo 、それは良いキャッチです。 ガイドを約12時間作業した後、Linuxコマンドを校正する必要があります。

Webフォルダー内のコンテンツをdynmapwebserverフォルダーにコピーするコマンドを配置することを意味していました。 今日は、今日の後半に最新バージョンのdynmapを使用して自分のガイドを確認します。

MySQLアクセス設定の更新はありますか? このTガイドに従ってマップにアクセスしようとすると、黒い画面が表示され、「構成を取得できませんでした:ゲートウェイが不良です」というエラーが表示されます。

編集:私はばかで、phpをインストールするのを忘れました、すべてが良いです

まず、素晴らしいガイドです! 私はしばらくの間、このようなものを見つけようとしてきました。 ただし、 @ WearisomelyVerboseと同じ問題が発生して

ビルドに関する情報:Minecraftサーバーは別のサーバー上にあり、Mysqlサーバーを使用してすべてを保存しています。 設定を変更してサーバーを再起動した後、Dynmapから/ webディレクトリをコピーするようにしました。

私が気づいたことの1つは、NginxでDynmap.confファイルをテストするたびに、次のエラーが発生することです。
sudo nginx -t -c / etc / nginx / sites-available / dynmap
nginx:[emerg] "server"ディレクティブは、ここ/ etc / nginx / sites-available / dynmap:2では許可されていません
nginx:構成ファイル/ etc / nginx / sites-available / dynmapテストに失敗しました

@ ads103 @gundami
Webサーバーでマップを開いた後、同じエラーが発生したと思います:「構成を取得できませんでした:エラー」。

私の場合、Webサーバー上のファイル「... \ username \ MySQL_config.php」を変更すると、問題が解決しました。
..。
$ dbhost = 'localhost';
..。
IPアドレスの代わりに。 しかし、私は詳細を知りません、うまくいけばそれは誰かを助けるでしょう。

私のセットアップは2つのラズベリーパイです。 RP4B(4GB)は(他のサービスの中でも)Minecraftをホストし、RP3B +はDynMap(Apache + SQL)をホストします

素晴らしいチュートリアルをありがとう! :)

問題を解決することができました。

少なくとも、私のものは後から考えるとかなり単純でした。 依存関係がありませんでした。

具体的には、php-jsonとphp-mysqlndがありませんでした。 (私はFedora 31システムを使用しており、Ubuntuパッケージ名は少し異なります。)

php-fpmが/var/log/php-fpmある独自のログファイルを持つ別個のアプリケーションであることに気付いたので、これらのパッケージが欠落していることがわかりました。 www-error.logをチェックすると、次の2つのログ行が明らかになりました。

[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

関数json_decode()mysqli_connect()グーグルですばやく検索すると、これら2つの不足しているパッケージが見つかります。 それらをインストールし、ブラウザでDynmapを更新した後、それは...うまくいきました。 それはうまくいきました。

チュートリアルをありがとう! 2台のForgeサーバーをスタンドアロンのWebサーバー構成に移行することができました。 そして、私はいくつかのことを指摘したいと思います:

  • Forgeには、MySQL用のJDBCドライバーは含まれていません(BukkitやCauldronのように)。 https://mvnrepository.com/artifact/mysql/mysql-connector-javaから取得し、modsディレクトリにドロップする必要があり

  • チュートリアルでは、 /etc/nginx/sites-available//etc/nginx/sites-enabledはDebian / Ubuntuのnginx実装にのみ存在することを述べておいたほうがよいでしょう。 アップストリーム実装では、構成ファイルは/etc/nginx/nginx.confです。

  • MySQLサーバーとして機能する専用ハードウェアがない限り、マップストレージにMySQLを使用しないことをお勧めします。 ホームサーバーで2台のForgeサーバーを実行しています。 MySQLで構成されたものは、データベースとのトランザクションのために、CPU、RAM、およびディスクI / Oのオーバーヘッドが大幅に増加します。 実際、MySQLは、dynmapのマップストレージのほとんどすべてを構成するBLOBを格納するようには設計されていません。 MySQLをマップストレージとして使用することにより、SQLトランザクションによって余分なCPUサイクルが消費されます。 また、dynmapはマップデータをイメージBLOBとして保存するため、MySQLを使用すると、ホームサーバーで観察されるように、実際にはファイルストレージよりもパフォーマンスが大幅に低下します。 https://stackoverflow.com/questions/5285857/when-is-using-mysql-blob-recommendedも参照して

  • 多数のBLOBを格納するために設計されたDBのタイプを推測しますか? ファイルシステム! チュートリアルを編集して、nginx + php-fpm +ファイルストレージを推奨することを提案したいと思います。 ファイルストレージを備えたスタンドアロンWebサーバーの場合、 url:セクションを次のように変更する必要があります。

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

チュートリアルを作成してくれた@haloflooderにも感謝します! 私も移行しましたが、うまく機能しています。

また、FrumpleがMRTサーバー用に親切に共有したセットアップが便利であることがわかりました: https

@ database64128json構成ファイルに関する情報をありがとう。 ただし、1つの修正:json構成ファイルは、 login-enabled: falseがDynmapのconfiguration.txt内に設定されている場合にのみ作成されます。

バグ? 意図的ですか? わからない。 ここで作成した問題の詳細については、 https

json構成ファイルが作成されなかった理由を突き止めるのに長い時間がかかったので、ここで言及しようと思いました!

@MrLoganoが説明した黒い画面の問題が

ブラウザコンソールに、次のエラーが表示されます。

https://REDACTED/standalone/config.js?_ = 3.0-beta-10-257 」のスクリプトは、そのMIMEタイプ(「text / html」)が​​有効なJavaScript MIMEタイプではありませんが、ロードされました。
の読み込みに失敗しました

私は自分の問題が何であるかを知りました。 MySQLサーバーに使用したホスト名は、Minecraftサーバーからは解決できましたが、nginxサーバーからは解決できませんでした。 ホスト名を両方から解決可能なものに変更しましたが、現在は機能しています。

あるホストでホストされているMinecraftサーバーと、別のホストでホストされているWebサイト(Apacheを使用し、リバースプロキシをサポートしていません)があります。iframeを使用せずにWebサイトでdynmapを設定するにはどうすればよいですか? そのためのチュートリアルが見当たらないからです

@ alex17lolこのガイドはリバースプロキシを使用していません。 ここで提案されているNginx構成の代わりに、独自のApache構成を使用できるはずです。

@ alex17lolこのガイドはリバースプロキシを使用していません。 ここで提案されているNginx構成の代わりに、独自のApache構成を使用できるはずです。

私はsudoコマンドにアクセスできません私は私の問題であるウェブホストを使用しています

_誰かがこれをウィキに追加できますか? _

これを作ってくれてありがとう!

SELinuxはあらゆる種類の悲しみを引き起こす可能性があります。 最も明白なのは、Webコンテンツへのすべてのアクセスを完全にブロックするものです。 これらは、Webサーバーのエラーログに表示されます。 さらに微妙な問題がphp-fpmエラーログに表示される可能性があります。 Webサーバーログのすべてのエラーを処理した後も、黒い画面の問題と構成の読み取りの恐ろしい失敗がありました。 例えば:

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

この最後のパズルを修正したのは次のとおりです。

# setsebool -P httpd_can_network_connect_db=1

rsyncscp -rよりもはるかに高速であることがわかりました。 scpは非常に遅い速度で進んでいたので、300MB程度で強制終了し、代わりに次のコマンドを使用しました。 scp試行と比較して、2TBは信じられないほど高速に転送されました。 問題を解決しようとしている間、私はrsync何度も実行し、 rsync毎回混乱全体を送信せずに更新しました。

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

誰かがDB2データベースでこれを試しましたか?

私はこの^^^#3125の問題で本当に助けを使うことができました。 誰かがこの問題を手伝ってくれる? このガイドをトリプルチェックしました。 複数回ゼロから始めました。 複数のホスティングソリューションを試しましたが、毎回同じ問題が発生します。 コメントに記載されているいくつかの解決策を試しましたが、最終的には役に立ちませんでした。
私も不和を試みましたが、何度も反応がありませんでした。

@arkD幸運なことに、別のスタンドアロンセットアップをセットアップしているので、このガイドを数週間以内に改訂しますが、スピゴットページでまだ公開されていない1.16.3用の最新の最先端バージョンのDynmapを使用しています。アップデート。

私のために働いていませんでした-私はこのガイドを使用してNGINXでphpを有効にする必要がありました
https://www.digitalocean.com/community/tutorials/how-to-install-linux-nginx-mysql-php-lemp-stack-in-ubuntu-16-04

「構成を取得できませんでした」というエラーが表示されなくなりましたが、画面表示されず、時計も

DBはsqliteに設定されており、ガイドを開始する前にすべてが機能してレンダリングされていました

また、コンソールでこのエラーが発生します。 関連している可能性が非常に高い
image

このページは役に立ちましたか?
0 / 5 - 0 評価