Dynmap: [Tutorial] Menyiapkan server web mandiri dengan MySQL/SQLite

Dibuat pada 14 Sep 2019  ·  38Komentar  ·  Sumber: webbukkit/dynmap

Saya belum melihat instruksi yang jelas tentang menjalankan server mandiri dengan MySQL/SQLite. Halaman wiki tentang cara mengatur server web mandiri juga sudah ketinggalan zaman.

Setelah beberapa jam menyodok di dynmap. Berikut adalah tutorial tentang cara menjalankan server web mandiri di NGINX di server *nix.

PERINGATAN
Mengikuti panduan ini akan mengatur ulang semua data jika Anda _saat ini tidak_ menggunakan database SQL dengan dynmap.

Menggunakan MySQL dengan Dynmap tidak sepenuhnya diuji oleh komunitas.

Tutorial ini mengasumsikan bahwa Anda tahu sedikit tentang Linux. Jika Anda tidak tahu cara Linux, tidak ada kata terlambat untuk belajar!

Jika Anda menggunakan "host server minecraft". Dalam kebanyakan kasus, Anda tidak akan dapat menyiapkan server web mandiri dengan host server minecraft Anda. Anda harus mendapatkan host situs web atau vps untuk meng-host server web mandiri untuk Dynmap.

Catatan

  • Akan sangat menyarankan Anda untuk menggunakan MySQL daripada SQLite jika Anda punya pilihan. Ini mungkin memerlukan beberapa langkah ekstra tetapi lihat sisi baiknya. Anda dapat menggunakan MySQL dengan plugin lain :)

  • Tutorial ini juga mengharuskan Anda untuk menggunakan sudo. Jika Anda tidak memiliki izin sudo maka Anda kurang beruntung atau Anda dapat menyewa VPS.

  • Jika Anda menggunakan SQLite, Anda tidak dapat meng-host server web mandiri di server/vps yang berbeda. Anda harus memigrasikan database SQLite ke server MySQL/MariaDB untuk meng-host server mandiri di server/vps yang berbeda. Tapi itu sepenuhnya opsional, kami masih akan membahas cara menyiapkan server web mandiri di server yang sama dengan server minecraft dengan SQLite.
  • Saya tidak akan membahas cara mengatur server web mandiri dengan windows atau apache kecuali ada minat. Sebagai alternatif, Anda bisa mendapatkan VPS murah dan meng-host server web di sana jika Anda menggunakan MySQL (bukan SQLite).

Catatan untuk kontributor

Jika Anda memberi saya izin untuk mengedit wiki. Saya dengan senang hati akan memberikan kontribusi ke wiki tentang cara menyiapkan server web mandiri dan memeliharanya ;)

Bonus Tutorial

Saya membahas cara membuat server web mandiri bekerja dengan proxy cloudflare yang sepenuhnya opsional. Ini SANGAT disarankan jika Anda akan memungkinkan pengguna untuk masuk ke situs web dynmap. Jika akan menginstal sertifikat SSL dengan certbot, jangan ikuti bagian tutorial bonus ini.

Saya juga akan membahas cara menginstal sertifikat SSL ke server web NGINX dengan certbot atau penyedia lain yang sepenuhnya opsional. Ini SANGAT disarankan jika Anda akan memungkinkan pengguna untuk masuk ke situs web dynmap. Jika Anda ingin menggunakan proxy cloudflare, jangan ikuti bagian tutorial bonus ini.

Pro dan kontra

Kelebihan:

  • Situs web Dynmap akan tersedia bahkan jika server minecraft sedang down/restart
  • Kurangi beban di server minecraft
  • NGINX memiliki kinerja yang lebih baik daripada server web internal

Kontra:

  • Agak mengganggu untuk setup
  • Perlu tahu sedikit tentang linux

Apa yang akan kita bahas

Kami akan membahas hal-hal berikut ini:

  • Menyiapkan MySQL/MariaDB (opsional)
  • Menyiapkan NGINX dengan dukungan PHP dan SQL
  • Mempersiapkan plugin Dynmap untuk digunakan dengan MySQL/SQLite
  • Menyiapkan server mandiri untuk MySQL/SQLite
  • Bonus : Menyiapkan proxy cloudflare dengan server web NGINX (opsional)
  • Bonus : Menyiapkan NGINX dengan sertifikasi ssl (opsional)
  • FAQ terletak di bagian paling bawah panduan ini.

Menyiapkan MySQL/MariaDB dan NGINX dengan dukungan PHP dan SQL di server Anda

Untuk memulai, Anda perlu menginstal server web di server tempat Anda ingin meng-host situs web dynmap mandiri. Bagian dari tutorial ini juga mencakup menginstal MySQL di server.

Jika Anda ingin menggunakan SQLite karena alasan tertentu, Anda dapat menginstal NGINX tanpa MySQL/MariaDB. TAPI NGINX harus berada di server yang sama tempat server minecraft di-host.

Jika Anda menggunakan host situs web atau menggunakan host minecraft. Lihat catatan di bawah tautan tutorial.

Di mana saya harus menginstal MySQL/MariaDB?

Anda biasanya harus menginstal MySQL di server yang sama dengan server minecraft. Anda dapat menggunakan server MySQL yang sama dengan plugin yang menggunakan MySQL. MySQL akan digunakan oleh plugin Dynmap untuk menyimpan/memuat data yang juga akan dibaca/ditulis oleh server web.

Secara umum, ada lebih banyak manfaat jika server MySQL/MariaDB berada di server/jaringan yang sama dengan server minecraft karena latensinya akan lebih rendah

tutorial

Ada banyak sekali tutorial tentang cara mengatur nginx/MySQL/MariaDB di internet. Berikut adalah beberapa tautan tutorial tentang pengaturannya dengan beberapa OS linux.

Jangan khawatir jika tutorial memberitahu Anda untuk menginstal MariaDB karena hampir sama dengan MySQL.

Tautan ke tutorial

1 Sumber

Uji untuk melihat apakah server web Anda melayani halaman web dengan memasukkan ip server web Anda ke browser web Anda. Jika tidak ada yang muncul, firewall Anda mungkin memblokir port atau Anda tidak memulai server nginx.

catatan

  • Jika Anda sudah memiliki server web, Anda dapat melewati langkah ini. TETAPI Anda masih memerlukan server MySQL jika Anda belum memilikinya.
  • Jika Anda menggunakan host situs web, seperti yang disebutkan di atas. Anda dapat melewati langkah ini TAPI Anda masih memerlukan server MySQL.
  • Jika Anda menggunakan host minecraft, Anda harus mendapatkan VPS/host situs web. Semoga host minecraft Anda juga menyertakan server MySQL dengan paket Anda. Jika tidak, saya kira Anda dapat menginstal server MySQL di VPS TAPI PASTIKAN ANDA MEMILIKI BANYAK RUANG .

Menyiapkan MySQL (Lewati langkah ini jika Anda menggunakan SQLite)

Sekarang, untuk mengatur server MySQL/MariaDB.

Disarankan untuk membuat pengguna/kata sandi baru dengan izin terbatas untuk setiap aplikasi.

Jika Anda menyiapkan server web eksternal, Anda juga dapat mengatur firewall (iptables/firewalld/ufw/etc) untuk hanya mengizinkan server web terhubung ke database.

Mengonfigurasi database MySQL/MariaDB

Menggunakan terminal di server yang menghosting server minecraft, kami akan membuat database baru dan menambahkan beberapa pengguna database.

Membuat database baru di MySQL/MariaDB

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

Contoh (klik untuk meluaskan)

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

Tambahkan pengguna baru

catatan
Jika server MySQL berada di server yang sama dengan server minecraft. <minecraftserver_ip> seharusnya 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

Contoh jika server web dan server minecraft berada di server yang sama (klik saya untuk memperluas)

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

Jika Anda membuat kesalahan dan perlu menghapus pengguna mysql. Ini adalah bagaimana Anda menghapus pengguna.

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

Setelah Anda membuat pengguna baru, coba masuk ke pengguna. (setelah Anda keluar dari pengguna root mysql melalui "keluar")

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

Hak Istimewa/Izin MySQL

MySQL memiliki izin ini tersedia untuk diatur ke pengguna MySQL.

  • SEMUA HAK ISTIMEWA - Berikan semua hak istimewa kepada pengguna
  • CREATE - Memungkinkan pengguna untuk membuat database/tabel
  • DELETE - Memungkinkan pengguna untuk menghapus baris (data) dari tabel
  • DROP - Memungkinkan pengguna untuk menjatuhkan database dan tabel
  • INSERT - Memungkinkan pengguna untuk menyisipkan baris (data) ke tabel
  • SELECT - Memungkinkan pengguna untuk membaca dari database
  • UPDATE - Memungkinkan pengguna untuk memperbarui data dalam tabel

Menyiapkan plugin Dynmap

Sekarang untuk mengubah beberapa pengaturan dalam konfigurasi dari plugin.

Instal Dynmap

Instal dynmap versi terbaru di server. Versi terbaru harus tetap berfungsi dengan versi minecraft dari 1,10 hingga 1,14

Hidupkan dan matikan

Nyalakan server minecraft lalu hentikan server. Seharusnya ada folder baru bernama dynmap di folder plugins .

BUAT CADANGAN dari file configuration.txt ! Cukup buat salinan dan beri nama seperti configuration.txt.backup .

Buka file konfigurasi configuration.txt sehingga kita dapat mengubah beberapa pengaturan.

Mengubah Penyimpanan

Ubah bagian penyimpanan dalam konfigurasi dari

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"

ke

Contoh MySQL (Klik untuk memperluas)

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"


Contoh SQLite (Klik untuk memperluas)

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"

Mengubah Beberapa Pengaturan Komponen

Tepat di bawah bagian penyimpanan, seharusnya ada bagian yang disebut
- class: org.dynmap.InternalClientUpdateComponent yang akan kami komentari.

Jadi akan terlihat seperti ini:

Sebelumnya (klik untuk meluaskan)

  - 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


Setelah (klik untuk memperluas)

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

Tepat setelah Anda melakukannya , Anda akan menghapus komentar pada bagian tepat di bawahnya.
Jadi akan terlihat seperti ini.

Sebelumnya (klik untuk meluaskan)

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


Setelah (klik untuk memperluas)

  - 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

Menonaktifkan server web internal

Sekarang kita akan menonaktifkan server web internal karena kita tidak membutuhkannya lagi.

Temukan disable-webserver di file konfigurasi dan ubah nilainya dari false menjadi true .

Mengubah beberapa url untuk server web

Kami akan mengubah beberapa url yang diperlukan agar server web mandiri dynmap berfungsi. Ini adalah bagian besar yang kebanyakan orang bermasalah sejauh yang saya tahu.

Temukan bagian url: dalam file konfigurasi. Seharusnya terlihat seperti ini.

Sebelumnya (klik untuk meluaskan)

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


Setelah [Contoh MySQL] (klik untuk memperluas)

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


Setelah [Contoh SQLite] (klik untuk memperluas)

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

Hidupkan dan matikan lagi

Mulai server minecraft TAPI JANGAN MATIKAN DULU!
Periksa dan lihat apakah ada masalah dengan dynmap dengan memeriksa log terbaru. Jika tidak ada masalah, matikan server.

MELIHAT

Alasan utama mengapa Anda harus memulai dan menghentikan server di bagian paling akhir adalah karena Dynmap membuat file konfigurasi untuk digunakan server web. Jika Anda mengubah pengaturan apa pun di configuration.txt , maka ada kemungkinan file konfigurasi di plugins/dynmap/web diubah.

PEMBERITAHUAN LEBIH BESAR

Jika Anda akan mengaktifkan pengguna untuk masuk ke dynmap. Anda PASTI harus menginstal sertifikat SSL atau menggunakan proxy cloudflare untuk membuat kredensial login aman dari orang jahat!

Opsi tentang bagaimana server web harus diatur

Sekarang kita turun ke bisnis yang serius!

Berikut adalah beberapa opsi:

Hosting di server yang sama dengan server minecraft (MySQL/SQLite)

Opsi 1 : Anda dapat menautkan server web ke folder web dynmap di folder plugin (lebih mudah)
Opsi 2 : Salin folder web ke lokasi lain di server (lebih aman)

Hosting di server berbeda yang bukan server yang sama dengan server minecraft (MySQL)

Only Option : Satu-satunya pilihan Anda adalah menyalin folder web ke server yang memiliki server web.

Hosting dengan host web (MySQL)

Jika Anda menggunakan host web seperti hostgator, namecheap, 000webhost, dll. Satu-satunya pilihan Anda adalah menyalin folder web ke host web.
Saya tidak akan menambahkan detail tentang cara menyelesaikan ini karena ada terlalu banyak web host untuk dibahas.

Pengaturan umum dengan server web NGINX

Sebelum Anda pergi ke bagian berikutnya dengan opsi pengaturan. Kami akan membahas pengaturan umum untuk server web NGINX.

Menghapus konfigurasi situs web default

Jika Anda menginstal server web NGINX baru. Kami ingin menghapus konfigurasi situs web default dan menambahkan konfigurasi kami sendiri. Jika Anda sudah memiliki NGINX sebelum tutorial ini dan tahu apa yang Anda lakukan. Pergi ke bagian berikutnya dengan opsi tentang bagaimana situs web dynmap harus disetel.

Konfigurasi default biasanya terletak di /etc/nginx/sites-available/ dan /etc/nginx/sites-enabled .

Anda ingin membuat salinan default karena kami akan menggunakannya.

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

Sekarang hapus konfigurasi default dari sites-enabled untuk menonaktifkan konfigurasi situs default dan restart server web nginx

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

Menyiapkan server web yang ada di server yang sama dengan server minecraft

Jika Anda menghosting server web NGINX Anda sendiri di server yang sama dengan server minecraft. Ini adalah bagian yang tepat untuk Anda!

Catatan
Pastikan Anda mengikuti pengaturan umum dengan NGINX sebelum melanjutkan tutorial ini

Opsi 1: Menautkan server web ke folder dynmap (klik untuk meluaskan)

Jika Anda ingin mengatur server web dengan cara yang mudah (tetapi tidak terlalu aman). Ini adalah pilihan yang tepat untuk Anda! Tetapi saya tetap sangat menyarankan Anda untuk mengikuti opsi 2 karena ini adalah opsi yang lebih aman daripada opsi 1.

Kelebihan:

  • Satu perintah lebih sedikit untuk dieksekusi (jika Anda menyukai hal semacam itu)
  • Tidak perlu menyalin file konfigurasi jika Anda mengubah konfigurasi dynmap

Kontra:

  • Kurang aman dibandingkan dengan Opsi 2 (dapat diperdebatkan)

Mengedit file konfigurasi situs web

Mulai mengedit file konfigurasi dynmap di /etc/nginx/sites-available/dynmap

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

File konfigurasi akan terlihat seperti ini. Ubah nilai dalam konfigurasi sesuai keinginan Anda

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;
        }
}
  • Jangan lupa gantike nama pengguna linux yang memiliki folder server minecraft di dalamnya.
  • Jangan lupa gantike folder tempat Anda memiliki server minecraft

Contoh:

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

Opsi 2: Menyalin folder web ke lokasi lain

Jika Anda ingin men-setup web server cara yang lebih aman. Ini adalah pilihan yang tepat untuk Anda!

Kelebihan:

  • Lebih aman daripada Opsi 1 (Dapat diperdebatkan)

Kontra:

  • Perlu menyalin beberapa file konfigurasi ke lokasi baru jika Anda mengubah konfigurasi dynmap

Menyalin file ke lokasi baru

Salin file web dynmap ke lokasi lain

sudo cp -r /home/<USERNAME>/<MINECRAFTSERVER>/plugins/dynmap/web/ /var/www/dynmap/
  • Jangan lupa gantike nama pengguna linux yang memiliki folder server minecraft di dalamnya.
  • Jangan lupa gantike folder tempat Anda memiliki server minecraft

Contoh:

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

Mengedit file konfigurasi situs web

Mulai mengedit file konfigurasi dynmap di /etc/nginx/sites-available/dynmap

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

File konfigurasi akan terlihat seperti ini. Ubah nilai dalam konfigurasi sesuai keinginan Anda

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

Sekarang mari kita buat server dynmap menjadi publik! (untuk opsi 1 dan 2)

Setelah Anda mengikuti langkah-langkah di Opsi 1/2. Kita akan membuat shortcut dari konfigurasi web server dynmap dan memasukkannya ke dalam folder.

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

Pastikan file konfigurasi bebas dari kesalahan!

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

dan restart server jika tidak ada masalah.

sudo service nginx restart

Dan itu seharusnya!

Masukkan ip server web ke browser web Anda, Anda akan melihat dynmap. Karena akan kosong, Anda dapat mulai merender ubin dengan bergabung dengan server dan menjalankan perintah /dynmap fullrender <worldname>

Menyiapkan server web yang dihosting di server lain

Jika Anda menghosting server web NGINX Anda sendiri di server yang berbeda dari server yang menghosting server minecraft. Ini adalah bagian yang tepat untuk Anda!

Catatan

  • Pastikan Anda mengikuti pengaturan umum dengan NGINX sebelum melanjutkan tutorial ini
  • Konfigurasi situs web harus di server yang menghosting server web NGINX, bukan server yang menghosting server minecraft!

Kelebihan:

  • Bahkan lebih aman daripada metode lainnya

Kontra:

  • Perlu menyalin beberapa file konfigurasi ke lokasi baru jika Anda mengubah konfigurasi dynmap

Menyalin file ke lokasi baru

Salin file web dynmap ke lokasi lain

Jalankan perintah ini di server yang menghosting server minecraft. Perintah ini akan menyalin folder dari server minecraft ke server web. Ini akan meminta Anda untuk kata sandi ke server web.

sudo scp -r /home/<USERNAME>/<MINECRAFTSERVER>/plugins/dynmap/web <WEBSERVER_USERNAME>@<WEBSERVER_IP>:/var/www/dynmap
  • Jangan lupa gantike nama pengguna linux dari server yang memiliki folder server minecraft di dalamnya.
  • Jangan lupa gantike folder tempat Anda memiliki server minecraft
  • Jangan untuk

Contoh:

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

Mengedit file konfigurasi situs web

Mulai mengedit file konfigurasi dynmap di /etc/nginx/sites-available/dynmap

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

File konfigurasi akan terlihat seperti ini. Ubah nilai dalam konfigurasi sesuai keinginan Anda

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

Sekarang mari kita buat server dynmap menjadi publik!

Setelah Anda mengikuti langkah-langkahnya. Kita akan membuat shortcut dari konfigurasi web server dynmap dan memasukkannya ke dalam folder.

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

Pastikan file konfigurasi bebas dari kesalahan!

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

dan restart server jika tidak ada masalah.

sudo service nginx restart

Dan itu seharusnya!

Masukkan ip server web ke browser web Anda, Anda akan melihat dynmap. Karena akan kosong, Anda dapat mulai merender ubin dengan bergabung dengan server dan menjalankan perintah /dynmap fullrender <worldname>

Menyiapkan server web yang dihosting oleh host web

Jika Anda menggunakan host web karena Anda tidak ingin mengaturnya sendiri. Ini adalah bagian yang tepat untuk Anda!

Menyalin folder web ke host web

Salin file dari server minecraft ke folder di komputer Anda. File yang akan Anda salin harus dalam plugins/dynmap/web di server minecraft.

Salin file ke host web Anda sebaiknya di direktori baru kecuali jika itu akan menjadi hosting dynmap khusus.

Menyelesaikan!

Ya benar-benar! Kamu sudah selesai.

Bonus tutorial

Jika Anda menginstal server web NGINX Anda sendiri, Anda dapat mengikuti bagian dari tutorial bonus ini untuk membuat server web Anda aman dengan login dynmap. ANDA HARUS SELALU menangani kredensial pengguna dengan hati-hati jika Anda mengaktifkan login dengan Dynmap.

Anda dapat mengikuti salah satu dari tiga opsi untuk membuat server web Anda aman

Memasang sertifikat SSL GRATIS dengan CertBot

Anda cukup mengikuti instruksi ini dari situs web certbot. Ini adalah cara termudah untuk mendapatkan sertifikat SSL untuk situs web.

Sebagai catatan, sertifikasi certbot kedaluwarsa lebih cepat daripada penyedia lain, tetapi mereka memiliki cara otomatis untuk memperbarui sertifikasi Anda jika Anda mengikuti instruksi mereka tentang cara melakukannya.

Memasang sertifikat SSL dari penyedia yang berbeda

Sebagai alternatif, Anda bisa mendapatkan sertifikat SSL dari penyedia lain seperti NameCheap. Unduh sertifikasi publik dan kunci pribadi dari penyedia. ANDA TIDAK HARUS MEMBAGIKAN KUNCI PRIBADI DENGAN ORANG LAIN ATAU MEMBUATNYA UMUM . Ini benar-benar untuk server web Anda dan tidak boleh hanya untuk diperebutkan.

Tempatkan file sertifikasi di /etc/ssl/certs/<certification_file>.pem
dan tempatkan kunci pribadi di /etc/ssl/private/<private_key_file>.pem

Buat cadangan konfigurasi situs web sebelum kami melakukan perubahan apa pun

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

Jika Anda membuat kesalahan dan perlu kembali, jalankan perintah ini

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

Di konfigurasi situs web NGINX, lihat perbedaan antara konfigurasi Anda saat ini dan tambahkan perubahan yang Anda lihat dari contoh konfigurasi ini.

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

Kemudian Anda hanya perlu me-restart web server NGINX.

sudo service nginx restart

Buka situs web dynmap Anda dan sekarang seharusnya sudah aman!
Very secure

Menyiapkan NGINX dengan proxy Cloudflare (terakhir diperbarui 19 September 2019)

Hal yang baik tentang proxy Cloudflare adalah mereka memiliki sertifikasi khusus yang hanya untuk berkomunikasi antara server web Anda dan layanan mereka. Anda juga dapat membiarkan sertifikasi bertahan hingga 15 tahun. Namun, itu hanya alternatif untuk memiliki sertifikasi ssl "asli".

Pertama, masuk ke cloudflare dan buka domain yang ingin Anda atur proxynya. Lalu pergi ke bagian "SSL/TLS"
cloudflare dashboard

Di bagian Origin Certificates , klik "Buat Sertifikat".
Pilih Let Cloudflare generate a private key and a CSR dan atur Private key type menjadi ECDSA

Tambahkan nama host map.YOURDOMAIN.com jika Anda ingin menempatkan situs web dynmap di map.YOURDOMAIN.com.

Atur validitas sertifikat ke apa pun yang Anda suka (15 tahun terdengar bagus?).

Klik berikutnya dan Anda akan melihat sertifikat ssl dan kunci pribadi baru di layar Anda. Sekarang kita akan menyalin teks dan menempelkannya ke file melalui terminal.

Pertama mari kita buat file sertifikat dan tempel di teks. Teks harus dimulai dengan -----BEGIN CERTIFICATE----- dan diakhiri dengan -----END CERTIFICATE-----

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

Selanjutnya mari buat file kunci pribadi dan tempel di teks. Teks harus dimulai dengan -----BEGIN PRIVATE KEY----- dan diakhiri dengan -----END PRIVATE KEY-----

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

Sekarang kita akan mengedit konfigurasi situs web NGINX. Buat cadangan konfigurasi situs web sebelum kami melakukan perubahan apa pun

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

Jika Anda membuat kesalahan dan perlu kembali, jalankan perintah ini

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

Di konfigurasi situs web NGINX, lihat perbedaan antara konfigurasi Anda saat ini dan tambahkan perubahan yang Anda lihat dari contoh konfigurasi ini.

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

Kemudian Anda hanya perlu me-restart web server NGINX.

sudo service nginx restart

Buka situs web dynmap Anda dan sekarang seharusnya sudah aman!
Very secure

FAQ

Bagaimana saya Linux?

Dengan sangat hati-hati.

Tapi di sini adalah jawaban yang serius.
Anda dapat terhubung ke server linux Anda dengan sesuatu yang populer seperti Putty atau klien SSH lain pilihan Anda. Anda dapat masuk ke terminal jika Anda memiliki pengguna/kata sandi.

Anda dapat dengan mudah menemukan panduan/tutorial tentang cara menggunakan linux di internet. Tetapi Anda harus selalu memeriksa ulang apa yang dilakukan suatu perintah sebelum Anda menjalankannya!

Situs web saya tidak muncul (NGINX)
Pastikan situs web Anda telah diteruskan portnya.

Port default adalah 80 tetapi jika Anda mengikuti tutorial tentang menginstal sertifikasi SSL, port akan menjadi 443.

Tetapi jika itu tidak berhasil, periksa apakah NGINX berjalan dengan menjalankan perintah

sudo service nginx status

dan itu akan memberi tahu Anda apa yang mungkin salah. Anda juga dapat menguji file konfigurasi dengan menjalankan perintah

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


Saya tidak melihat gambar apa pun di situs web dynmap!

Karena kami mulai dengan database baru yang segar tanpa data apa pun di dalamnya. Mungkin perlu beberapa saat untuk melihat gambar apa pun di dynmap.

Anda dapat menjalankan perintah dalam game untuk merender dunia sepenuhnya jika Anda ingin /dynmap fullrender <worldname>

Kok gak ada tutorialnya di windows atau apache?

Saya memutuskan untuk tidak menutupi pengaturan server web mandiri dengan windows atau apache karena kebanyakan orang akan menggunakan Linux dan NGINX saat ini. Tetapi jika ada cukup banyak orang yang bertanya, saya mungkin menutupi windows dan/atau apache

Saya berubah pikiran, dapatkah saya mengonversi kembali dari sql?

Ya, Anda seharusnya dapat mengonversi kembali ke metode sebelumnya jika Anda membuat file cadangan configuration.txt.backup dari langkah sebelumnya.

Hapus saja configuration.txt dan ganti nama configuration.txt.backup menjadi configuration.txt dan Anda siap melakukannya!

Mengapa?

Karena kenapa tidak?

Ada lebih banyak kemungkinan ketika dynmap menggunakan sql. Akan lebih cepat untuk mencadangkan, orang masih dapat menggunakan situs web dynmap meskipun server sedang down, dan banyak lagi!

Apakah masih menampilkan ikon pemain dan/atau obrolan?

Ya, ikon pemutar masih harus diperbarui di halaman web.

Kotak obrolan juga harus berfungsi dengan baik.

Tinggalkan komentar jika Anda memiliki pertanyaan atau masalah!

Doc improvement Feature

Komentar yang paling membantu

Terima kasih untuk tutorialnya! Saya dapat memigrasikan 2 server Forge saya ke konfigurasi server web mandiri. Dan saya ingin menunjukkan beberapa hal:

  • Forge tidak menyertakan driver JDBC untuk MySQL (seperti yang dilakukan Bukkit dan Cauldron). Anda perlu mengambilnya dari https://mvnrepository.com/artifact/mysql/mysql-connector-java dan meletakkannya di direktori mods. Lihat #1674.

  • Akan lebih baik untuk menyebutkan dalam tutorial bahwa /etc/nginx/sites-available/ dan /etc/nginx/sites-enabled hanya ada dalam implementasi nginx Debian/Ubuntu. Dalam implementasi upstream, satu-satunya file konfigurasi adalah /etc/nginx/nginx.conf .

  • Saya akan merekomendasikan untuk tidak menggunakan MySQL untuk penyimpanan peta, kecuali jika Anda memiliki perangkat keras khusus yang bertindak sebagai server MySQL. Saya memiliki 2 server Forge yang berjalan di server rumah saya. Yang dikonfigurasi dengan MySQL memiliki lebih banyak CPU, RAM, dan overhead I/O disk karena transaksi dengan database. Faktanya, MySQL tidak dirancang untuk menyimpan BLOB, yang membentuk hampir semua penyimpanan peta dynmap. Dengan menggunakan MySQL sebagai penyimpanan peta, siklus CPU ekstra dikonsumsi oleh transaksi SQL. Dan karena dynmap menyimpan data peta sebagai Gumpalan gambar, menggunakan MySQL sebenarnya menghasilkan kinerja yang jauh lebih buruk daripada penyimpanan file, seperti yang diamati di server rumah saya. Lihat juga https://stackoverflow.com/questions/5285857/when-is-using-mysql-blob-recommended

  • Tebak jenis DB apa yang dirancang untuk menyimpan sejumlah besar Gumpalan? Sistem berkas! Saya ingin mengusulkan pengeditan tutorial untuk merekomendasikan penyimpanan file nginx + php-fpm +. Untuk server web mandiri dengan penyimpanan file, bagian url: harus diubah seperti ini:

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

Semua 38 komentar

Perhatikan bahwa pengguna dynmapforge tidak akan memiliki direktori plugins/dynmap/web . Misalnya, di salah satu server saya ada:

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

(Saya memfilter dynmap/web/tiles/ karena saya memiliki 1500 direktori di sana ...)

Saya akan mencobanya sendiri, tetapi layanan nginx dan minecraft saya ada di mesin yang berbeda. :keringat_senyum:

Saya mengikuti ini, tetapi tidak berhasil. Saya memiliki Apache di server yang sama dengan dynmap, dan memindahkan folder web ke sana. Meskipun tidak ada kesalahan di konsol, jika saya menavigasi ke url, itu hanya menunjukkan latar belakang hitam. Saya juga menggunakan SQLite, yang sudah dirender. Apakah saya melewatkan sesuatu mungkin?

Mungkin memeriksa konsol browser Anda untuk mencari kesalahan dan/atau permintaan yang gagal?

@miiichael
Ya, masalah besar dengan beralih dari sistem file ke database adalah dynmap tidak mengimpor ubin ke database. Jadi, Anda akan kehilangan semua kemajuan rendering Anda. Masih mungkin untuk menempatkan server web di mesin yang berbeda dari server minecraft tetapi Anda harus menggunakan mysql alih-alih sistem file.

@MrLogano
Itu karena Apache tidak dapat menemukan file database SQLite karena tidak ada di folder web. Anda mungkin lebih baik mengarahkan Apache ke folder web yang ada di folder dynmap daripada menyalin folder web ke lokasi yang berbeda. Atau edit file php secara manual (dari folder web yang disalin) untuk mendapatkan file db SQLite dari lokasi yang berbeda.

Saya akan menulis tutorial yang lebih rinci setelah saya mendapatkan waktu luang karena saya cukup sibuk di atm.

@haloflooder
File php "dynmap_access" tertaut ke file database SQLite di direktori dynmap. Saya mencobanya beberapa kali lagi, dan setiap kali saya mengubah bagian URL di konfigurasi, saya hanya mendapatkan halaman yang benar-benar kosong. Meninggalkannya, filetree berfungsi dengan baik, tetapi mengarahkannya ke SQLite menimbulkan kesalahan 500. Memeriksa log apache mengatakan sesuatu tidak dapat membuka file database, dengan itu menunjukkan kesalahan pada baris 79 di SQLite_tiles.php. Saya juga mengubah izin menjadi 775, tidak berhasil.

Saya mengikuti tutorial Anda, tetapi halaman web mengatakan "Tidak dapat mengambil konfigurasi: Kesalahan Server Internal"
bagaimana saya bisa melakukannya?

Saya mengalami masalah yang sama dengan @gundami. Penyelidikan lebih lanjut mengungkapkan pesan kesalahan ini di /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 Sudahkah Anda menemukan solusi? Maaf untuk jawaban yang terlambat, saya sangat sibuk selama beberapa bulan terakhir.

@gundami @ads103 Bisakah Anda memberikan konfigurasi untuk dynmap di pastebin? Jangan lupa untuk menyensor informasi sensitif seperti kredensial mysql.

@ads103 Baru saja diperhatikan bahwa log akses Anda mengatakan http://dragonmc/ . Apa yang Anda miliki di konfigurasi nginx Anda?

Karena itu juga sudah lama sejak dynmap diperbarui. Saya akan menginstal versi baru di dynmap di server pengujian saya dan mengikuti panduan saya sendiri untuk melihat apakah ada yang berubah sejak September.

Ya, dragonmc adalah nama host dari server minecraft saya. Saya memilikinya di server DNS lokal, jadi saya bisa mengetikkan "dragonmc" di browser web saya dan menelusurinya. Inilah konfigurasi Apache saya, dan direktori tempat saya menyalin file dynmap saya.
https://pastebin.com/NQ8fNjqa

@ads103 Saya kira server Anda juga dihosting secara lokal di jaringan Anda?

Ya! Itu benar. Semuanya hanya berjarak IP lokal!

@haloflooder apakah Anda memiliki kesempatan untuk menginstal versi baru di server pengujian Anda?

Sayangnya, saya tidak tahu javascript. Saya dapat melihat bahwa pesan kesalahan ini dihasilkan oleh fungsi ini di map.js , tetapi saya tidak dapat menemukan di mana variabel "configuration" diberi nilai.

`fungsi DynMap(opsi) {

    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 Maaf, saya sibuk dengan pekerjaan karena saya harus memenuhi tenggat waktu untuk sesuatu. Konfigurasi berasal dari MySQL_configuration.php secara standalone.

Apakah Anda menyalin file web ke server web setelah membiarkan dynmap mengubah nilai konfigurasi dengan konfigurasi yang dimodifikasi?

Ya saya lakukan. Saya bahkan melihat lalu lintas jaringan ke server basis data saya meningkat saat mulai dirender, jadi nilai konfigurasi setidaknya cukup benar untuk memasukkan ubin ke dalam basis data.

Berikut adalah pertanyaan. Dalam panduan, Anda menyertakan instruksi ini untuk menyalin konten folder web ke server web:
sudo cp -r /home/MyUsername/minecraft/servers/creative/plugins/dynmap/web/ /var/www/dynmap/
Apakah Anda bermaksud menyalin folder web ke dalam folder dynmap , _atau_ _contents_ folder web folder dynmap ?

@ads103 Oooo, itu tangkapan yang bagus. Seharusnya bukti membaca perintah linux setelah mengerjakan panduan selama sekitar 12 jam.

Saya bermaksud memberi perintah untuk menyalin konten di folder web ke folder server web dynmap. Saya akan membahas panduan saya sendiri hari ini dengan dynmap versi terbaru hari ini.

Adakah pembaruan pada pengaturan akses MySQL? Setelah mengikuti panduan ini ke T dan mencoba mengakses peta, saya mendapatkan layar hitam dan kesalahan "Tidak dapat mengambil konfigurasi: Gerbang Buruk".

EDIT: Saya idiot dan lupa menginstal php, semuanya baik-baik saja

Pertama, panduan luar biasa! Saya sudah mencoba untuk menemukan sesuatu seperti ini untuk sementara waktu sekarang. Namun saya mengalami masalah yang sama dengan @WearisomelyVerbose di mana saya hanya mendapatkan pesan yang mengatakan "Tidak dapat mengambil konfigurasi: Gerbang Buruk"

Beberapa Info tentang build saya: Server Minecraft saya berada di server terpisah, dan menggunakan server Mysql untuk menyimpan semuanya. Saya memastikan untuk menyalin direktori /web dari Dynmap setelah mengubah konfigurasi dan memulai ulang server.

Satu hal yang saya perhatikan, setiap kali saya menguji file Dynmap.conf di Nginx, saya mendapatkan kesalahan ini:
sudo nginx -t -c /etc/nginx/sites-available/dynmap
nginx: Direktif "server" [emerg] tidak diizinkan di sini di /etc/nginx/sites-available/ dynmap:2
nginx: file konfigurasi /etc/nginx/sites-available/dynmap tes gagal

@ads103 @gundami
Saya pikir saya memiliki kesalahan yang sama: "Tidak dapat mengambil konfigurasi: kesalahan" setelah membuka peta melalui server web.

Bagi saya mengubah file "...\standalone\MySQL_config.php" di server web memecahkan masalah:
...
$dbhost = 'host lokal';
...
alih-alih alamat IP. Tapi saya tidak tahu detailnya, semoga membantu seseorang.

Pengaturan saya adalah 2 Raspberry Pis. RP4B(4GB) menghosting minecraft (di antara layanan lainnya) dan RP3B+ menghosting DynMap (Apache+SQL)

Terima kasih untuk tutorial yang bagus!! :)

Saya dapat menyelesaikan masalah saya.

Milik saya, setidaknya, cukup sederhana di belakang. Saya kehilangan dependensi.

Secara khusus, saya kehilangan php-json dan php-mysqlnd. (Saya menggunakan sistem Fedora 31, dan nama paket Ubuntu sedikit berbeda.)

Saya menemukan bahwa saya melewatkan paket-paket ini dengan menyadari bahwa php-fpm adalah aplikasi terpisah dengan file lognya sendiri yang terletak di /var/log/php-fpm . Memeriksa www-error.log mengungkapkan dua baris log ini:

[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

Pencarian google cepat untuk fungsi json_decode() dan mysqli_connect() membawa saya ke dua paket yang hilang ini. Setelah menginstalnya dan menyegarkan Dynmap di browser saya, itu... berhasil. Itu baru saja berhasil.

Terima kasih untuk tutorialnya! Saya dapat memigrasikan 2 server Forge saya ke konfigurasi server web mandiri. Dan saya ingin menunjukkan beberapa hal:

  • Forge tidak menyertakan driver JDBC untuk MySQL (seperti yang dilakukan Bukkit dan Cauldron). Anda perlu mengambilnya dari https://mvnrepository.com/artifact/mysql/mysql-connector-java dan meletakkannya di direktori mods. Lihat #1674.

  • Akan lebih baik untuk menyebutkan dalam tutorial bahwa /etc/nginx/sites-available/ dan /etc/nginx/sites-enabled hanya ada dalam implementasi nginx Debian/Ubuntu. Dalam implementasi upstream, satu-satunya file konfigurasi adalah /etc/nginx/nginx.conf .

  • Saya akan merekomendasikan untuk tidak menggunakan MySQL untuk penyimpanan peta, kecuali jika Anda memiliki perangkat keras khusus yang bertindak sebagai server MySQL. Saya memiliki 2 server Forge yang berjalan di server rumah saya. Yang dikonfigurasi dengan MySQL memiliki lebih banyak CPU, RAM, dan overhead I/O disk karena transaksi dengan database. Faktanya, MySQL tidak dirancang untuk menyimpan BLOB, yang membentuk hampir semua penyimpanan peta dynmap. Dengan menggunakan MySQL sebagai penyimpanan peta, siklus CPU ekstra dikonsumsi oleh transaksi SQL. Dan karena dynmap menyimpan data peta sebagai Gumpalan gambar, menggunakan MySQL sebenarnya menghasilkan kinerja yang jauh lebih buruk daripada penyimpanan file, seperti yang diamati di server rumah saya. Lihat juga https://stackoverflow.com/questions/5285857/when-is-using-mysql-blob-recommended

  • Tebak jenis DB apa yang dirancang untuk menyimpan sejumlah besar Gumpalan? Sistem berkas! Saya ingin mengusulkan pengeditan tutorial untuk merekomendasikan penyimpanan file nginx + php-fpm +. Untuk server web mandiri dengan penyimpanan file, bagian url: harus diubah seperti ini:

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

Terima kasih lagi @haloflooder untuk membuat tutorialnya! Saya juga bermigrasi, dan itu berfungsi dengan baik.

Saya juga menemukan pengaturan yang dibagikan oleh Frumle untuk server MRT berguna: https://github.com/Frumle/mrt-docker-services/blob/master/containers/dynmap-main/docker-compose.yml

@ database64128 Terima kasih atas info tentang file konfigurasi json. Satu amandemen: file konfigurasi json hanya dibuat jika login-enabled: false diatur di dalam configuration.txt Dynmap.

Serangga? Disengaja? Saya tidak tahu. Info lebih lanjut tentang masalah yang saya buat di sini: https://github.com/webbukkit/dynmap/issues/2848 .

Saya pikir saya akan menyebutkannya di sini karena butuh waktu lama untuk melacak mengapa file konfigurasi json tidak dibuat!

Saya mengalami masalah layar hitam yang dijelaskan oleh @MrLogano . Saya menggunakan MySQL dan nginx di server terpisah. Saya sedang melakukan fullrender sekarang dan saya dapat melihat jumlah baris di tabel "Ubin" di MySQL berkembang, jadi saya tahu itu terhubung ke MySQL dengan baik.

Di konsol browser, saya melihat kesalahan berikut:

Skrip dari “ https://REDACTED/standalone/config.js?_=3.0-beta-10-257 ” telah dimuat meskipun jenis MIME-nya (“teks/html”) bukan jenis JavaScript MIME yang valid.
Pemuatan gagal untuk

Saya menemukan apa masalah saya. Nama host yang saya gunakan untuk server MySQL dapat dipecahkan dari server Minecraft saya tetapi tidak dari server nginx saya. Saya mengubah nama host menjadi sesuatu yang dapat diselesaikan dari keduanya dan sekarang berfungsi.

Yah saya memiliki server minecraft yang dihosting di satu host dan situs web yang dihosting di host lain (yang menggunakan apache dan tidak mendukung proxy terbalik) Bagaimana cara menyiapkan dynmap di situs web saya tanpa iframe? karena saya tidak melihat tutorial untuk itu

@alex17lol Panduan ini tidak menggunakan proxy terbalik. Anda seharusnya dapat menggunakan konfigurasi Apache Anda sendiri alih-alih konfigurasi Nginx yang disarankan di sini.

@alex17lol Panduan ini tidak menggunakan proxy terbalik. Anda seharusnya dapat menggunakan konfigurasi Apache Anda sendiri alih-alih konfigurasi Nginx yang disarankan di sini.

Saya tidak memiliki akses ke perintah sudo Saya menggunakan host web itu masalah saya

_ Dapatkah seseorang menambahkan ini ke wiki? _

Terima kasih banyak telah membuat ini!

SELinux dapat menyebabkan segala macam kesedihan. Yang paling jelas adalah yang langsung memblokir semua akses ke konten web. Ini muncul di log kesalahan server web. Masalah yang lebih halus dapat muncul di log kesalahan php-fpm. Setelah berurusan dengan semua kesalahan dalam log server web, saya masih memiliki masalah layar hitam dan kegagalan yang menakutkan untuk membaca konfigurasi. Sebagai contoh:

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

Apa yang memperbaiki teka-teki terakhir ini bagi saya adalah:

# setsebool -P httpd_can_network_connect_db=1

Saya menemukan rsync menjadi JAUH lebih cepat daripada scp -r . scp berjalan lamban dengan kecepatan yang sangat lambat, jadi saya membunuhnya pada 300MB atau lebih dan kemudian menggunakan perintah berikut sebagai gantinya. 2TB ditransfer sangat cepat dibandingkan dengan upaya scp . Saya melakukan rsync beberapa kali ketika mencoba menyelesaikan masalah, dan rsync memperbarui tanpa mengirim seluruh kekacauan setiap saat.

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

Adakah yang sudah mencoba ini dengan database DB2?

Saya benar-benar dapat menggunakan bantuan untuk masalah ^^^ #3125 ini. adakah yang bisa membantu masalah ini? Saya memeriksa tiga kali panduan ini. mulai dari awal berkali-kali. telah mencoba beberapa solusi hosting tetapi saya mendapatkan masalah yang sama setiap saat. Saya mencoba beberapa solusi yang dicatat dalam komentar tetapi pada akhirnya tidak membantu.
Saya juga mencoba discord tetapi tidak mendapat respons beberapa kali.

@arkD Untungnya , saya akan merevisi panduan ini dalam beberapa minggu ke depan karena saya menyiapkan pengaturan mandiri lainnya tetapi menggunakan versi terbaru dari Dynmap untuk 1.16.3 yang belum dirilis secara publik di halaman spigot sebagai Sebuah pembaharuan.

Tidak berfungsi untuk saya - saya harus mengaktifkan php di NGINX menggunakan panduan ini
https://www.digitalocean.com/community/tutorials/how-to-install-linux-nginx-mysql-php-lemp-stack-in-ubuntu-16-04

Sekarang kesalahan "Tidak dapat mengambil konfigurasi" berhenti muncul, tetapi saya masih mendapatkan layar hitam , tidak ada bilah sisi, tidak ada jam. 😢.

DB dikonfigurasikan ke sqlite dan semuanya berfungsi dan dirender sebelum memulai panduan

Juga: saya memiliki kesalahan ini di konsol. Ini sangat mungkin terkait
image

Apakah halaman ini membantu?
0 / 5 - 0 peringkat