Dynmap: [دروس] إعداد خادم ويب مستقل باستخدام MySQL / SQLite

تم إنشاؤها على ١٤ سبتمبر ٢٠١٩  ·  38تعليقات  ·  مصدر: webbukkit/dynmap

لم أر أي تعليمات واضحة حول الحصول على خادم مستقل يعمل مع MySQL / SQLite. صفحة wiki حول كيفية إعداد خادم الويب المستقل أصبحت قديمة أيضًا.

بعد بضع ساعات من بدس في dynmap. إليك برنامج تعليمي حول كيفية تشغيل خادم الويب المستقل على NGINX على خادم * nix.

🔴 تحذير 🔴
سيؤدي اتباع هذا الدليل إلى إعادة تعيين جميع البيانات إذا كنت _ حاليًا لا _ تستخدم قاعدة بيانات SQL مع Dynmap.

لم يتم اختبار استخدام MySQL مع Dynmap بشكل كامل من قبل المجتمع.

يفترض هذا البرنامج التعليمي أنك تعرف القليل من Linux. إذا كنت لا تعرف كيفية استخدام Linux ، فلم يفت الأوان بعد للتعلم!

إذا كنت تستخدم "مضيف خادم ماين كرافت". في معظم الحالات ، لن تتمكن من إعداد خادم ويب مستقل باستخدام مضيف خادم ماين كرافت. سيتعين عليك الحصول على مضيف موقع الويب أو vps لاستضافة خادم ويب مستقل لـ Dynmap.

ملحوظات

  • أوصي بشدة باستخدام MySQL بدلاً من SQLite إذا كان لديك الخيار. قد يتطلب الأمر بعض الخطوات الإضافية ولكن انظر إلى الجانب المشرق. يمكنك استخدام MySQL مع المكونات الإضافية الأخرى :)

  • يتطلب هذا البرنامج التعليمي أيضًا استخدام sudo. إذا لم يكن لديك sudo perms ، فأنت إما محظوظ أو يمكنك استئجار VPS.

  • إذا كنت تستخدم SQLite ، فلا يمكنك استضافة خادم الويب المستقل على خادم / vps مختلف. سيكون عليك ترحيل قاعدة بيانات SQLite إلى خادم MySQL / MariaDB لاستضافة الخادم المستقل على خادم / vps مختلف. ولكن هذا اختياري تمامًا ، سنظل نغطي كيفية إعداد خادم ويب مستقل على نفس الخادم مثل خادم minecraft باستخدام SQLite.
  • لن أتناول كيفية إعداد خادم ويب مستقل مع windows أو apache ما لم يكن هناك بعض الاهتمام. كبديل ، يمكنك الحصول على VPS رخيص واستضافة خادم ويب هناك إذا كنت تستخدم MySQL (وليس SQLite).

ملاحظة للمساهمين

إذا أعطيتني الإذن لتحرير الويكي. سأقوم بكل سرور بالمساهمة في الويكي حول كيفية إعداد خادم ويب مستقل وصيانته ؛)

دروس مكافأة

أغطي كيفية جعل خادم الويب المستقل يعمل مع وكيل cloudflare وهو اختياري تمامًا. يوصى بهذا بشدة إذا كنت ستمكّن المستخدمين من تسجيل الدخول إلى موقع ويب dynmap. إذا كنت ستقوم بتثبيت شهادة SSL مع certbot بدلاً من ذلك ، فلا تتبع هذا الجزء من البرنامج التعليمي للمكافأة.

سأغطي أيضًا كيفية تثبيت شهادة SSL على خادم الويب NGINX باستخدام certbot أو مزود آخر اختياري تمامًا. يوصى بهذا بشدة إذا كنت ستمكّن المستخدمين من تسجيل الدخول إلى موقع ويب dynmap. إذا كنت تريد استخدام وكيل cloudflare بدلاً من ذلك ، فلا تتبع هذا الجزء من البرنامج التعليمي للمكافأة.

إيجابيات وسلبيات

الايجابيات:

  • سيكون موقع Dynmap الإلكتروني متاحًا حتى إذا كان خادم minecraft معطلاً / قيد التشغيل
  • ضع حملًا أقل على خادم ماين كرافت
  • NGINX لديها أداء أفضل من خادم الويب الداخلي

سلبيات:

  • كندة مزعجة للإعداد
  • بحاجة إلى معرفة القليل من لينكس

ما سنقوم بتغطيته

سنغطي هذه الأشياء التالية

  • إعداد MySQL / MariaDB (اختياري)
  • إعداد NGINX بدعم PHP و SQL
  • تجهيز البرنامج المساعد Dynmap لاستخدامه مع MySQL / SQLite
  • إعداد الخادم المستقل لـ MySQL / SQLite
  • المكافأة : إعداد وكيل cloudflare مع خادم الويب NGINX (اختياري)
  • المكافأة : إعداد NGINX بشهادات SSL (اختياري)
  • الأسئلة الشائعة موجودة في الجزء السفلي من هذا الدليل.

إعداد MySQL / MariaDB و NGINX مع دعم PHP و SQL على الخادم الخاص بك

للبدء ، تحتاج إلى تثبيت خادم ويب على الخادم الذي تريد استضافة موقع ويب dynmap المستقل عليه. يغطي هذا الجزء من البرنامج التعليمي أيضًا تثبيت MySQL على الخادم أيضًا.

إذا كنت تريد استخدام SQLite لسبب ما ، فيمكنك فقط تثبيت NGINX بدون MySQL / MariaDB. ولكن يجب أن يكون NGINX على نفس الخادم حيث يتم استضافة خادم minecraft.

إذا كنت تستخدم مضيف موقع ويب أو تستخدم مضيف ماين كرافت. انظر الملاحظات أدناه روابط البرنامج التعليمي.

أين يجب أن أقوم بتثبيت MySQL / MariaDB؟

يجب عليك عمومًا تثبيت MySQL على نفس الخادم مثل خادم ماين كرافت. يمكنك استخدام نفس خادم MySQL مع الإضافات التي تستخدم MySQL. سيتم استخدام MySQL بواسطة المكون الإضافي Dynmap لحفظ / تحميل البيانات التي سيقرأها خادم الويب / يكتب عليها أيضًا.

بشكل عام ، هناك المزيد من الفوائد إذا كان خادم MySQL / MariaDB على نفس الخادم / الشبكة مثل خادم minecraft لأن وقت الاستجابة سيكون أقل

دروس

هناك دروس لا حصر لها حول كيفية إعداد nginx / MySQL / MariaDB على الإنترنت. فيما يلي بعض روابط البرامج التعليمية حول إعدادها باستخدام بعض أنظمة تشغيل Linux.

لا تقلق إذا أخبرك البرنامج التعليمي بتثبيت MariaDB لأنه يشبه إلى حد كبير MySQL.

روابط إلى البرامج التعليمية

1 المصدر

اختبر لمعرفة ما إذا كان خادم الويب الخاص بك يخدم صفحة ويب عن طريق إدخال عنوان IP الخاص بخادم الويب في متصفح الويب لديك. إذا لم ينبثق أي شيء ، فقد يكون جدار الحماية الخاص بك يحظر المنفذ أو أنك لم تبدأ خادم nginx.

ملحوظات

  • إذا كان لديك بالفعل خادم ويب ، فيمكنك تخطي هذه الخطوة. لكنك ما زلت بحاجة إلى خادم MySQL إذا لم يكن لديك واحد بالفعل.
  • إذا كنت تستخدم مضيف موقع ، كما هو مذكور أعلاه. يمكنك تخطي هذه الخطوة ولكنك ما زلت بحاجة إلى خادم MySQL.
  • إذا كنت تستخدم مضيف ماين كرافت ، فستحتاج إلى الحصول على مضيف VPS / موقع إلكتروني. نأمل أن يشتمل مضيف ماين كرافت أيضًا على خادم MySQL مع الحزمة الخاصة بك. إذا لم يكن الأمر كذلك ، أعتقد أنه يمكنك تثبيت خادم MySQL على VPS ولكن تأكد من أن لديك الكثير من المساحة .

إعداد MySQL (تجاوز هذه الخطوة إذا كنت تستخدم SQLite)

الآن ، لإعداد خادم MySQL / MariaDB.

يوصى بإنشاء مستخدم / كلمة مرور جديدة بأذونات محدودة لكل تطبيق.

إذا كنت تقوم بإعداد خادم ويب خارجي ، فيمكنك أيضًا إعداد جدار حماية (iptables / firewalld / ufw / إلخ) للسماح فقط لخادم الويب بالاتصال بقاعدة البيانات.

تكوين قاعدة بيانات 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

مثال إذا كان خادم الويب وخادم ماين كرافت على نفس الخادم (انقر فوقي للتوسيع)

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

إذا قمت بإجراء خطأ وتحتاج إلى حذف مستخدم mysql. هذه هي الطريقة التي تحذف بها مستخدم.

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

بعد إنشاء مستخدم جديد ، حاول تسجيل الدخول إلى المستخدم. (بعد تسجيل الخروج من مستخدم جذر mysql عبر "خروج")

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

امتيازات / أذونات MySQL

لدى MySQL هذه الأذونات المتاحة للتعيين على مستخدمي MySQL.

  • جميع الامتيازات - امنح جميع الامتيازات للمستخدم
  • إنشاء - يسمح للمستخدم بإنشاء قواعد بيانات / جداول
  • حذف - يسمح للمستخدم بحذف الصفوف (البيانات) من الجدول
  • DROP - يسمح للمستخدم بإسقاط قواعد البيانات والجداول
  • INSERT - يسمح للمستخدم بإدراج صفوف (بيانات) في الجدول
  • حدد - يسمح للمستخدم بالقراءة من قاعدة البيانات
  • تحديث - يسمح للمستخدم بتحديث البيانات في جدول

تحضير البرنامج المساعد Dynmap

الآن لتغيير بعض الإعدادات في التكوين من البرنامج المساعد.

قم بتثبيت Dynmap

قم بتثبيت أحدث إصدار من dynmap على الخادم. يجب أن يعمل الإصدار الأخير مع إصدار ماين كرافت من 1.10 إلى 1.14

قم بتشغيله وإيقاف تشغيله

قم بتشغيل خادم ماين كرافت ثم أوقف الخادم. يجب أن يكون هناك مجلد جديد يسمى dynmap في المجلد plugins .

عمل نسخة احتياطية من ملف 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"


مثال سكليتي (انقر للتوسيع)

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

تعطيل خادم الويب الداخلي

سنقوم الآن بتعطيل خادم الويب الداخلي لأننا لم نعد بحاجة إليه.

ابحث عن disable-webserver في ملف التكوين وغيّر القيمة من false إلى true .

تغيير بعض عناوين url لخادم الويب

سنقوم بتغيير بعض عناوين url المطلوبة لكي يعمل خادم الويب المستقل dynmap. هذا هو الجزء الضخم الذي واجهه معظم الناس مشكلة على حد علمي.

ابحث عن قسم 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="

قم بتشغيله وإيقافه مرة أخرى

ابدأ تشغيل خادم ماين كرافت ولكن لا تقم بإيقاف تشغيله فقط!
تحقق ومعرفة ما إذا كانت هناك أية مشكلات في dynmap عن طريق التحقق من أحدث سجل. إذا لم تكن هناك مشكلات ، فقم بإيقاف تشغيل الخادم.

تنويه

السبب الرئيسي وراء حاجتك إلى بدء تشغيل الخادم وإيقافه في النهاية هو أن Dynmap يقوم بإنشاء ملفات تكوين ليستخدمها خادم الويب. إذا قمت بتغيير أي إعدادات في configuration.txt ، فهناك احتمال أن يتم تغيير ملفات التكوين الموجودة في plugins/dynmap/web .

حتى إشعار أكبر

إذا كنت ستمكّن المستخدمين من تسجيل الدخول إلى dynmap. يجب عليك بالتأكيد تثبيت شهادة SSL أو استخدام وكيل cloudflare لتأمين بيانات اعتماد تسجيل الدخول من الأشرار!

خيارات حول كيفية إعداد خادم الويب

الآن نبدأ العمل الجاد!

فيما يلي بعض الخيارات:

الاستضافة على نفس الخادم مع خادم ماين كرافت (MySQL / SQLite)

الخيار 1 : يمكنك ربط خادم الويب بمجلد الويب dynmap في مجلد البرنامج المساعد (أسهل)
الخيار 2 : نسخ مجلد الويب إلى موقع مختلف على الخادم (أكثر أمانًا)

الاستضافة على خادم مختلف يختلف عن خادم ماين كرافت (MySQL)

الخيار الوحيد : خيارك الوحيد هو نسخ مجلد الويب إلى الخادم الذي يحتوي على خادم الويب.

الاستضافة مع مضيف الويب (MySQL)

إذا كنت تستخدم مضيف ويب مثل hostgator و namecheap و 000webhost وما إلى ذلك ، فإن خيارك الوحيد هو نسخ مجلد الويب إلى مضيف الويب.
لن أقوم بإضافة تفاصيل حول كيفية القيام بذلك نظرًا لوجود عدد كبير جدًا من مضيفي الويب المطلوب تغطيتها.

الإعداد العام مع خادم الويب NGINX

قبل الانتقال إلى الأقسام التالية التي تحتوي على خيارات الإعداد. سنغطي الإعداد العام لخوادم الويب NGINX.

إزالة التكوين الافتراضي لموقع الويب

إذا قمت بتثبيت خادم ويب NGINX جديد. نريد إزالة التكوين الافتراضي لموقع الويب وإضافة التكوين الخاص بنا. إذا كان لديك NGINX بالفعل قبل هذا البرنامج التعليمي وتعرف ما تفعله. انتقل إلى القسم التالي الذي يحتوي على خيارات حول كيفية إعداد موقع الويب dynmap.

عادةً ما يكون التكوين الافتراضي موجودًا في /etc/nginx/sites-available/ و /etc/nginx/sites-enabled .

تريد عمل نسخة من الافتراضي لأننا سنستخدمه.

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

الآن قم بإزالة التكوين الافتراضي من sites-enabled لتعطيل تكوين الموقع الافتراضي وإعادة تشغيل خادم الويب nginx

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

إعداد خادم الويب الموجود على نفس الخادم مثل خادم ماين كرافت

إذا كنت تستضيف خادم الويب NGINX الخاص بك على نفس الخادم مثل خادم minecraft. هذا هو القسم المناسب لك!

ملحوظة
تأكد من اتباعك للإعداد العام مع NGINX قبل متابعة هذا البرنامج التعليمي

الخيار 1: ربط خادم الويب بمجلد dynmap (انقر للتوسيع)

إذا كنت ترغب في إعداد خادم الويب بالطريقة السهلة (ولكن ليست آمنة جدًا). هذا هو الخيار الصحيح لك! لكني ما زلت أوصيك بشدة باتباع الخيار 2 لأنه خيار أكثر أمانًا من الخيار 1.

الايجابيات:

  • أمر واحد أقل للتنفيذ (إذا كنت في هذا النوع من الأشياء)
  • لا تحتاج إلى نسخ ملفات التكوين إذا قمت بتغيير تكوين dynmap

سلبيات:

  • أقل أمانًا مقارنة بالخيار 2 (قابل للنقاش)

تحرير ملف تهيئة موقع الويب

ابدأ في تحرير ملف تهيئة dynmap في /etc/nginx/sites-available/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;
        }
}
  • لا تنسى التغييرإلى اسم مستخدم Linux الذي يحتوي على مجلد خادم minecraft بداخله.
  • لا تنسى التغييرإلى المجلد الذي يوجد به خادم ماين كرافت

مثال:

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

الخيار 2: نسخ مجلد الويب إلى موقع مختلف

إذا كنت ترغب في إعداد خادم الويب بالطريقة الأكثر أمانًا. هذا هو الخيار الصحيح لك!

الايجابيات:

  • أكثر أمانًا من الخيار 1 (قابل للنقاش)

سلبيات:

  • تحتاج إلى نسخ بعض ملفات التكوين إلى موقع جديد إذا قمت بتغيير تكوين dynmap

نسخ الملفات إلى موقع جديد

انسخ ملفات الويب dynmap إلى موقع مختلف

sudo cp -r /home/<USERNAME>/<MINECRAFTSERVER>/plugins/dynmap/web/ /var/www/dynmap/
  • لا تنسى التغييرإلى اسم مستخدم Linux الذي يحتوي على مجلد خادم minecraft بداخله.
  • لا تنسى التغييرإلى المجلد الذي يوجد به خادم ماين كرافت

مثال:

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

تحرير ملف تهيئة موقع الويب

ابدأ في تحرير ملف تهيئة dynmap في /etc/nginx/sites-available/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 ووضعه في مجلد.

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

تأكد من أن ملفات التكوين خالية من الأخطاء!

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

وأعد تشغيل الخادم إذا لم تكن هناك مشاكل.

sudo service nginx restart

هذا مايتوجب ان تكون عليه!

ضع خادم الويب IP في متصفح الويب الخاص بك ، يجب أن ترى dynmap. نظرًا لأنه سيكون فارغًا ، يمكنك البدء في عرض المربعات من خلال الانضمام إلى الخادم وتشغيل الأمر /dynmap fullrender <worldname>

إعداد خادم الويب المستضاف على خادم مختلف

إذا كنت تستضيف خادم الويب NGINX الخاص بك على خادم مختلف عن الخادم الذي يستضيف خادم minecraft. هذا هو القسم المناسب لك!

ملحوظة

  • تأكد من اتباعك للإعداد العام مع NGINX قبل متابعة هذا البرنامج التعليمي
  • يجب أن تكون إعدادات موقع الويب على الخادم الذي يستضيف خادم الويب NGINX ، وليس الخادم الذي يستضيف خادم minecraft!

الايجابيات:

  • أكثر أمانًا من الطرق الأخرى

سلبيات:

  • تحتاج إلى نسخ بعض ملفات التكوين إلى موقع جديد إذا قمت بتغيير تكوين dynmap

نسخ الملفات إلى موقع جديد

انسخ ملفات الويب dynmap إلى موقع مختلف

قم بتنفيذ هذا الأمر على الخادم الذي يستضيف خادم minecraft. سيقوم هذا الأمر بنسخ المجلد من خادم minecraft إلى خادم الويب. سيطلب منك كلمة المرور لخادم الويب.

sudo scp -r /home/<USERNAME>/<MINECRAFTSERVER>/plugins/dynmap/web <WEBSERVER_USERNAME>@<WEBSERVER_IP>:/var/www/dynmap
  • لا تنسى التغييرإلى اسم مستخدم Linux الخاص بالخادم الذي يحتوي على مجلد خادم minecraft بداخله.
  • لا تنسى التغييرإلى المجلد الذي يوجد به خادم ماين كرافت
  • لا تفعل

مثال:

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

تحرير ملف تهيئة موقع الويب

ابدأ في تحرير ملف تهيئة dynmap في /etc/nginx/sites-available/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 ووضعه في مجلد.

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

تأكد من أن ملفات التكوين خالية من الأخطاء!

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

وأعد تشغيل الخادم إذا لم تكن هناك مشاكل.

sudo service nginx restart

هذا مايتوجب ان تكون عليه!

ضع خادم الويب IP في متصفح الويب الخاص بك ، يجب أن ترى dynmap. نظرًا لأنه سيكون فارغًا ، يمكنك البدء في عرض المربعات من خلال الانضمام إلى الخادم وتشغيل الأمر /dynmap fullrender <worldname>

إعداد خادم الويب الذي يستضيفه مضيف الويب

إذا كنت تستخدم مضيف ويب لأنك لا تريد إعداده بنفسك. هذا هو القسم المناسب لك!

نسخ مجلد الويب إلى مضيف الويب

انسخ الملفات من خادم ماين كرافت إلى مجلد على جهاز الكمبيوتر الخاص بك. يجب أن تكون الملفات التي ستقوم بنسخها في plugins/dynmap/web على خادم minecraft.

انسخ الملفات إلى مضيف الويب الخاص بك ويفضل أن يكون ذلك في دليل جديد ما لم يكن مضيف ويب مخصصًا لخريطة ديناميكية.

ينهي!

نعم حقا! انت انتهيت.

دروس المكافأة

إذا قمت بتثبيت خادم الويب NGINX الخاص بك ، فيمكنك اتباع هذا الجزء من البرنامج التعليمي الإضافي لجعل خادم الويب الخاص بك آمنًا باستخدام عمليات تسجيل الدخول إلى dynmap. يجب عليك دائمًا التعامل مع بيانات اعتماد المستخدم بعناية إذا قمت بتمكين عمليات تسجيل الدخول باستخدام Dynmap.

يمكنك اتباع أحد الخيارات الثلاثة لجعل خادم الويب الخاص بك آمنًا

تثبيت شهادة SSL مجانية مع CertBot

يمكنك فقط اتباع هذه التعليمات من موقع certbot. إنها أسهل طريقة للحصول على شهادة SSL لموقع ويب.

كملاحظة ، تنتهي صلاحية شهادات certbot بشكل أسرع من مقدمي الخدمة الآخرين ، لكن لديهم طريقة آلية لتجديد شهاداتك إذا اتبعت تعليماتهم حول كيفية القيام بذلك.

تثبيت شهادة SSL من مزود مختلف

كبديل ، يمكنك الحصول على شهادة SSL من مزود مختلف مثل NameCheap. قم بتنزيل الشهادة العامة والمفتاح الخاص من الموفر. يجب ألا تشارك المفتاح الخاص أبدًا مع شخص آخر أو تجعله عامًا . إنه مخصص بشكل صارم لخادم الويب الخاص بك ولا ينبغي أن يكون متاحًا فقط.

ضع ملف الشهادة في /etc/ssl/certs/<certification_file>.pem
ووضع المفتاح الخاص في /etc/ssl/private/<private_key_file>.pem

قم بعمل نسخة احتياطية من تهيئة موقع الويب قبل إجراء أي تغييرات

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

إذا قمت بإجراء خطأ وتحتاج إلى العودة مرة أخرى ، فقم بتنفيذ هذا الأمر

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

في تكوين موقع NGINX ، انظر إلى الاختلافات بين التكوين الحالي وأضف التغييرات التي تراها من هذا المثال config.

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

ثم تحتاج فقط إلى إعادة تشغيل خادم الويب NGINX.

sudo service nginx restart

انتقل إلى موقع ويب dynmap الخاص بك ، ويجب أن يكون آمنًا الآن!
Very secure

إعداد NGINX مع وكيل Cloudflare (آخر تحديث في 19 سبتمبر 2019)

الشيء الجيد في وكيل Cloudflare هو أن لديهم شهادة خاصة مخصصة فقط للتواصل بين خادم الويب الخاص بك وخدماتهم. يمكنك أيضًا ترك الشهادة تستمر حتى 15 عامًا. ومع ذلك ، فهو مجرد بديل للحصول على شهادة SSL "حقيقية".

أولاً ، قم بتسجيل الدخول إلى cloudflare وانتقل إلى المجال الذي تريد إعداد الوكيل به. ثم انتقل إلى قسم "SSL / TLS"
cloudflare dashboard

في قسم Origin Certificates ، انقر فوق "إنشاء شهادة".
حدد Let Cloudflare generate a private key and a CSR وقم بتعيين Private key type إلى ECDSA

أضف اسم المضيف map.YOURDOMAIN.com إذا كنت تريد وضع موقع الويب dynmap على map.YOURDOMAIN.com.

اضبط صلاحية الشهادة على ما تريد (15 عامًا تبدو أميرية جيدة؟).

انقر فوق التالي وستظهر لك شهادة ssl ومفتاح خاص جديد على شاشتك. سنقوم الآن بنسخ النص ولصقه في ملف عبر Terminal.

أولاً ، يتيح إنشاء ملف شهادة ولصقه في النص. يجب أن يبدأ النص بـ -----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

الآن سنقوم بتحرير تهيئة موقع NGINX. قم بعمل نسخة احتياطية من تهيئة موقع الويب قبل إجراء أي تغييرات

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

إذا قمت بإجراء خطأ وتحتاج إلى العودة مرة أخرى ، فقم بتنفيذ هذا الأمر

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

في تكوين موقع NGINX ، انظر إلى الاختلافات بين التكوين الحالي وأضف التغييرات التي تراها من هذا المثال config.

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

ثم تحتاج فقط إلى إعادة تشغيل خادم الويب NGINX.

sudo service nginx restart

انتقل إلى موقع ويب dynmap الخاص بك ، ويجب أن يكون آمنًا الآن!
Very secure

التعليمات

كيف يمكنني لينكس؟

حذر جدا.

ولكن هنا الجواب الجاد.
يمكنك الاتصال بخادم Linux الخاص بك بشيء شائع مثل PuTTY أو أي عميل SSH آخر من اختيارك. يمكنك تسجيل الدخول إلى الجهاز إذا كان لديك المستخدم / كلمة المرور.

يمكنك بسهولة العثور على أدلة / برامج تعليمية حول كيفية استخدام Linux على الإنترنت. ولكن يجب عليك دائمًا التحقق جيدًا مما يفعله الأمر قبل تنفيذه!

موقع الويب الخاص بي لا يظهر (NGINX)
تأكد من إعادة توجيه موقع الويب الخاص بك.

سيكون المنفذ الافتراضي هو 80 ولكن إذا اتبعت البرنامج التعليمي حول تثبيت شهادة SSL ، فسيكون المنفذ 443.

ولكن إذا لم يفلح ذلك ، فتحقق مما إذا كان NGINX يعمل عن طريق تشغيل الأمر

sudo service nginx status

ويجب أن يخبرك ما قد يكون خطأ. يمكنك أيضًا اختبار ملف التكوين عن طريق تشغيل الأمر

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


لا أرى أي صور على موقع dynmap!

منذ أن بدأنا بقاعدة بيانات جديدة جديدة بدون أي بيانات فيها. قد يستغرق الأمر بعض الوقت لمشاهدة أي صور على dynmap.

يمكنك تشغيل الأمر داخل اللعبة لتقديم عالم كامل إذا كنت تريد /dynmap fullrender <worldname>

كيف لا يوجد برنامج تعليمي مع الويندوز أو اباتشي؟

قررت عدم تغطية إعداد خادم ويب مستقل مع windows أو apache لأن معظم الناس سيستخدمون Linux و NGINX في الوقت الحاضر. ولكن إذا كان هناك عدد كافٍ من الأشخاص يسألون ، فقد أغطي النوافذ و / أو أباتشي

لقد غيرت رأيي ، هل يمكنني التحويل مرة أخرى من SQL؟

نعم ، يجب أن تكون قادرًا على العودة إلى الطريقة السابقة إذا قمت بإنشاء ملف نسخ احتياطي configuration.txt.backup من الخطوات السابقة.

ما عليك سوى حذف configuration.txt وإعادة تسمية configuration.txt.backup إلى configuration.txt وستكون جاهزًا تمامًا!

لماذا ا؟

لماذا لا؟

هناك المزيد من الاحتمالات عندما يستخدم dynmap SQL. سيكون النسخ الاحتياطي أسرع ، ولا يزال بإمكان الأشخاص استخدام موقع الويب dynmap حتى إذا كان الخادم معطلاً ، والمزيد!

هل لا يزال يعرض رموز اللاعبين و / أو الدردشة؟

نعم ، لا يزال يجب تحديث رمز المشغل على صفحة الويب.

يجب أن يعمل مربع الدردشة أيضًا بشكل جيد.

اترك تعليقا إذا كان لديك أي أسئلة أو مشاكل!

Doc improvement Feature

التعليق الأكثر فائدة

شكرا على البرنامج التعليمي! تمكنت من ترحيل خوادم 2 Forge الخاصة بي إلى تكوين خادم الويب المستقل. وأود أن أشير إلى بعض الأشياء:

  • لا يتضمن Forge برنامج تشغيل JDBC لـ MySQL (مثل Bukkit و Cauldron do). تحتاج إلى الحصول عليه من https://mvnrepository.com/artifact/mysql/mysql-connector-java وإفلاته في دليل التعديل. انظر # 1674.

  • من الأفضل الإشارة في البرنامج التعليمي إلى أن /etc/nginx/sites-available/ و /etc/nginx/sites-enabled موجودان فقط في تطبيقات nginx الخاصة بـ Debian / Ubuntu. في تنفيذ المنبع ، ملف التكوين الوحيد هو /etc/nginx/nginx.conf .

  • أوصي بعدم استخدام MySQL لتخزين الخرائط ، إلا إذا كان لديك جهاز مخصص يعمل كخادم MySQL. لدي خادمان Forge يعملان على خادم منزلي. يحتوي الجهاز الذي تم تكوينه باستخدام MySQL على قدر أكبر بكثير من وحدة المعالجة المركزية وذاكرة الوصول العشوائي وإدخال / إخراج القرص بسبب المعاملات مع قاعدة البيانات. في الواقع ، لم يتم تصميم MySQL لتخزين BLOBs ، والتي تشكل تقريبًا كل تخزين خرائط dynmap. باستخدام MySQL كتخزين للخرائط ، يتم استهلاك دورات وحدة المعالجة المركزية الإضافية بواسطة معاملات SQL. ونظرًا لأن dynmap يخزن بيانات الخريطة كصورة BLOBs ، فإن استخدام MySQL يؤدي في الواقع إلى أداء أسوأ من تخزين الملفات ، كما لوحظ على خادم منزلي. راجع أيضًا https://stackoverflow.com/questions/5285857/when-is-using-mysql-blob-recommended

  • خمن ما هو نوع قاعدة البيانات التي تم تصميمها لتخزين عدد كبير من BLOBs؟ نظام الملفات! أود اقتراح تعديل البرنامج التعليمي للتوصية بتخزين الملفات nginx + php-fpm +. بالنسبة لخادم ويب مستقل مع تخزين ملفات ، يجب تغيير قسم 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 . على سبيل المثال ، يوجد على أحد خوادمي:

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

(أقوم بتصفية dynmap / الويب / البلاط / لأن لدي 1500 دليل هناك ...)

سأجرب ذلك بنفسي ، لكن خدمات nginx و minecraft الخاصة بي موجودة على أجهزة مختلفة. : sweat_smile:

لقد تابعت هذا من خلال ، ولكن دون حظ. لدي Apache على نفس الخادم مثل dynmap ، وقمت بنقل مجلد الويب هناك. على الرغم من عدم وجود أي أخطاء في وحدة التحكم ، إذا انتقلت إلى عنوان url ، فستظهر فقط خلفية سوداء. أنا أيضًا أستخدم SQLite ، والذي تم تقديمه بالفعل. هل فاتني شيء ربما؟

ربما تحقق من وحدة تحكم المتصفح الخاص بك للبحث عن الأخطاء و / أو الطلبات الفاشلة؟

تضمين التغريدة
نعم ، المشكلة الكبرى في الانتقال من نظام الملفات إلى قاعدة البيانات هي أن dynmap لا يستورد المربعات إلى قاعدة بيانات. لذلك ستفقد كل تقدمك في العرض. لا يزال من الممكن وضع خادم الويب على جهاز مختلف عن خادم minecraft ولكنه يتطلب منك استخدام mysql بدلاً من نظام الملفات.

تضمين التغريدة
ذلك لأن apache لا يمكنه العثور على ملف قاعدة بيانات SQLite لأنه ليس في مجلد الويب. ربما يكون من الأفضل لك توجيه apache إلى مجلد الويب الموجود في مجلد dynmap بدلاً من نسخ مجلد الويب إلى موقع مختلف. أو قم بتحرير ملفات php يدويًا (من مجلد الويب المنسوخ) للحصول على ملف SQLite db من موقع مختلف.

سأكتب تعليميًا أكثر تفصيلاً بمجرد أن أحصل على بعض وقت الفراغ لأنني مشغول جدًا في أجهزة الصراف الآلي.

تضمين التغريدة
يرتبط ملف php "dynmap_access" بملف قاعدة بيانات SQLite في دليل dynmap. لقد جربته عدة مرات ، وكلما قمت بتغيير قسم URL في التكوين ، أحصل على صفحة فارغة تمامًا. إذا تركنا ذلك ، فإن مجموعة الملفات تعمل بشكل جيد ، ولكن توجيهها إلى SQLite يؤدي إلى ظهور خطأ 500. يشير التحقق من سجل apache إلى أن شيئًا ما غير قادر على فتح ملف قاعدة البيانات ، مع إظهار خطأ في السطر 79 في SQLite_tiles.php. لقد غيرت الأذونات إلى 775 أيضًا ، ولم يحالفني الحظ.

أتبع البرنامج التعليمي الخاص بك ، لكن صفحة الويب تقول "تعذر استرداد التكوين: خطأ داخلي في الخادم"
كيف استطيع ان افعل؟

أواجه نفس المشكلة مثل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 @ ads103 هل يمكنك توفير التكوين لـ dynmap على pastebin؟ لا تنسَ مراقبة أي معلومات حساسة مثل بيانات اعتماد mysql.

بالتأكيد! هنا تذهب: https://pastebin.com/1xQ2Unjb

@ ads103 لقد لاحظت للتو أن سجل الوصول الخاص بك يقول http://dragonmc/ . ماذا لديك في تكوين nginx الخاص بك؟

منذ أن مر وقت أيضًا على تحديث dynmap. سأقوم بتثبيت إصدار جديد على dynmap على خادم الاختبار الخاص بي وأتبع دليلي الخاص لمعرفة ما إذا كان أي شيء قد تغير منذ سبتمبر.

نعم ، dragonmc هو اسم مضيف خادم ماين كرافت الخاص بي. لدي في خادم DNS محلي ، لذا يمكنني فقط كتابة "dragonmc" في متصفح الويب الخاص بي وتصفحه. هذا هو تكوين اباتشي الخاص بي ، والدليل الذي قمت بنسخ ملفات dynmap إليه.
https://pastebin.com/NQ8fNjqa

@ ads103 أعتقد أن

نعم! هذا صحيح. كل شيء مجرد عنوان IP محلي بعيدًا!

haloflooder ، هل

لسوء الحظ ، لا أعرف جافا سكريبت. أستطيع أن أرى أن رسالة الخطأ هذه يتم إنشاؤها بواسطة هذه الوظيفة في 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 بتغيير قيم التكوين باستخدام التكوين المعدل؟

نعم فعلت. حتى أنني رأيت ارتفاع حركة مرور الشبكة إلى خادم قاعدة البيانات الخاص بي عندما بدأ العرض ، لذا فإن قيم التكوين صحيحة على الأقل بدرجة كافية للحصول على المربعات _into_ قاعدة البيانات.

هذا سؤال. في الدليل ، قمت بتضمين هذه التعليمات لنسخ محتويات المجلد web إلى خادم الويب:
sudo cp -r /home/MyUsername/minecraft/servers/creative/plugins/dynmap/web/ /var/www/dynmap/
هل كنت تنوي نسخ المجلد web إلى المجلد dynmap ، أو _ أو _contents_ للمجلد web المجلد dynmap ؟

@ ads103 Oooo ، هذا صيد جيد. يجب أن تقرأ دليلًا على أوامر لينكس بعد العمل على الدليل لمدة 12 ساعة تقريبًا.

كنت أقصد وضع أمر لنسخ المحتوى في مجلد الويب إلى مجلد خادم الويب dynmap. سأقوم باستعراض دليلي الخاص اليوم مع أحدث إصدار من dynmap في وقت لاحق اليوم.

أي تحديث على إعدادات الوصول إلى MySQL؟ بعد اتباع هذا الدليل إلى T ومحاولة الوصول إلى الخريطة ، تظهر لي شاشة سوداء والخطأ "تعذر استرداد التكوين: بوابة سيئة".

تحرير: أنا أحمق ونسيت تثبيت php ، كل شيء جيد

أولا ، دليل رائع! لقد كنت أحاول العثور على شيء مثل هذا لفترة من الوقت الآن. ومع ذلك ، أواجه نفس المشكلة مثل WearisomelyVerbose حيث أتلقى فقط رسالة تقول "تعذر استرداد التكوين: Bad Gateway"

بعض المعلومات حول بنيتي: خادم My Minecraft موجود على خادم منفصل ، ويستخدم خادم Mysql لتخزين كل شيء. لقد تأكدت من نسخ دليل الويب / من Dynmap بعد تغيير التكوينات وإعادة تشغيل الخادم.

هناك شيء واحد لاحظته ، كلما اختبرت ملف Dynmap.conf في Nginx ، أحصل على هذا الخطأ:
sudo nginx -t -c / etc / nginx / sites-available / dynmap
nginx: [طوارئ] توجيه "الخادم" غير مسموح به هنا في / etc / nginx / sites-available / dynmap: 2
nginx: فشل اختبار ملف التكوين / etc / nginx / sites-available / dynmap

تضمين التغريدة
أعتقد أن لدي نفس الخطأ: "تعذر استرداد التكوين: خطأ" بعد فتح الخريطة عبر خادم الويب.

بالنسبة لي ، أدى تغيير الملف "... \ standalone \ MySQL_config.php" على خادم الويب إلى حل المشكلة:
...
$ dbhost = 'localhost'؛
...
بدلاً من عنوان IP. لكني لا أعرف التفاصيل ، آمل أن تساعد شخصًا ما.

إعداد راجع للشغل هو 2 Raspberry Pis. يستضيف RP4B (4 جيجابايت) ماين كرافت (من بين خدمات أخرى) و RP3B + يستضيف DynMap (Apache + SQL)

شكرا للشرح الوافي!! :)

كنت قادرا على حل مشاكلي.

منجم ، على الأقل ، كان بسيطًا جدًا في الإدراك المتأخر. كنت أفتقد التبعيات.

على وجه التحديد ، كنت أفتقد php-json و php-mysqlnd. (أنا أستخدم نظام Fedora 31 ، وأسماء حزم Ubuntu مختلفة قليلاً).

اكتشفت أنني فقدت هذه الحزم من خلال إدراك أن php-fpm كان تطبيقًا منفصلاً بملفات السجل الخاصة به الموجودة في /var/log/php-fpm . كشف التحقق من www-error.log عن سطري السجل هذين:

[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

يقودني بحث Google السريع عن الوظائف json_decode() و mysqli_connect() إلى هاتين الحزمتين المفقودتين. بعد تثبيتها وتحديث Dynmap في متصفحي ، عملت للتو. لقد نجحت للتو.

شكرا على البرنامج التعليمي! تمكنت من ترحيل خوادم 2 Forge الخاصة بي إلى تكوين خادم الويب المستقل. وأود أن أشير إلى بعض الأشياء:

  • لا يتضمن Forge برنامج تشغيل JDBC لـ MySQL (مثل Bukkit و Cauldron do). تحتاج إلى الحصول عليه من https://mvnrepository.com/artifact/mysql/mysql-connector-java وإفلاته في دليل التعديل. انظر # 1674.

  • من الأفضل الإشارة في البرنامج التعليمي إلى أن /etc/nginx/sites-available/ و /etc/nginx/sites-enabled موجودان فقط في تطبيقات nginx الخاصة بـ Debian / Ubuntu. في تنفيذ المنبع ، ملف التكوين الوحيد هو /etc/nginx/nginx.conf .

  • أوصي بعدم استخدام MySQL لتخزين الخرائط ، إلا إذا كان لديك جهاز مخصص يعمل كخادم MySQL. لدي خادمان Forge يعملان على خادم منزلي. يحتوي الجهاز الذي تم تكوينه باستخدام MySQL على قدر أكبر بكثير من وحدة المعالجة المركزية وذاكرة الوصول العشوائي وإدخال / إخراج القرص بسبب المعاملات مع قاعدة البيانات. في الواقع ، لم يتم تصميم MySQL لتخزين BLOBs ، والتي تشكل تقريبًا كل تخزين خرائط dynmap. باستخدام MySQL كتخزين للخرائط ، يتم استهلاك دورات وحدة المعالجة المركزية الإضافية بواسطة معاملات SQL. ونظرًا لأن dynmap يخزن بيانات الخريطة كصورة BLOBs ، فإن استخدام MySQL يؤدي في الواقع إلى أداء أسوأ من تخزين الملفات ، كما لوحظ على خادم منزلي. راجع أيضًا https://stackoverflow.com/questions/5285857/when-is-using-mysql-blob-recommended

  • خمن ما هو نوع قاعدة البيانات التي تم تصميمها لتخزين عدد كبير من BLOBs؟ نظام الملفات! أود اقتراح تعديل البرنامج التعليمي للتوصية بتخزين الملفات nginx + php-fpm +. بالنسبة لخادم ويب مستقل مع تخزين ملفات ، يجب تغيير قسم 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://github.com/Frumple/mrt-docker-services/blob/master/containers/dynmap-main/docker-compose.yml

@ database64128 شكرًا على المعلومات المتعلقة بملفات تكوين json. على الرغم من تعديل واحد: لا يتم إنشاء ملفات تكوين json إلا إذا تم تعيين login-enabled: false داخل ملف تكوين Dynmap's configuration.txt.

خلل برمجي؟ متعمد؟ انا لا اعرف. مزيد من المعلومات حول المشكلة التي أنشأتها هنا: https://github.com/webbukkit/dynmap/issues/2848.

اعتقدت أنني سأذكرها هنا لأنه استغرق مني وقتًا طويلاً لتعقب سبب عدم إنشاء ملفات تكوين json!

أواجه مشكلة الشاشة السوداء التي وصفها MrLogano . أنا أستخدم MySQL و nginx على خادم منفصل. أنا أقوم بإجراء عرض كامل الآن ويمكنني رؤية عدد الصفوف في جدول "المربعات" في MySQL يتزايد ، لذلك أعلم أنه متصل بـ MySQL جيدًا.

في وحدة تحكم المتصفح ، أرى الأخطاء التالية:

تم تحميل النص من “ https: //REDACTED/standalone/config.js؟ _ = 3.0-beta-10-257 ” على الرغم من أن نوع MIME الخاص به (“text / html”) ليس نوع JavaScript MIME صالحًا.
فشل تحميل

اكتشفت ما هي مشكلتي. كان اسم المضيف الذي استخدمته لخادم MySQL قابلاً للحل من خادم Minecraft الخاص بي ولكن ليس من خادم nginx الخاص بي. لقد غيرت اسم المضيف إلى شيء يمكن حله من كليهما وهو الآن يعمل.

حسنًا ، لدي خادم ماين كرافت مستضاف على مضيف واحد وموقع ويب مستضاف على مضيف آخر (يستخدم Apache ولا يدعم الوكلاء العكسيين) كيف أقوم بإعداد Dynmap على موقع الويب الخاص بي بدون iframe؟ لأنني لا أرى أي برنامج تعليمي لذلك

@ alex17lol لا يستخدم هذا الدليل

@ alex17lol لا يستخدم هذا الدليل

لا يمكنني الوصول إلى أوامر sudo ، فأنا أستخدم مضيف ويب يمثل مشكلتي

_ هل يمكن لشخص إضافة هذا إلى الويكي؟ _

شكرا جزيلا على صنع هذا لك!

يمكن أن يسبب SELinux كل أنواع الحزن. الأكثر وضوحا هي تلك التي تمنع الوصول الكامل إلى محتوى الويب. تظهر هذه في سجل أخطاء خادم الويب. يمكن أن تظهر مشكلات أكثر دقة في سجل أخطاء php-fpm. بعد التعامل مع جميع الأخطاء الموجودة في سجل خادم الويب ، ما زلت أعاني من مشكلات الشاشة السوداء والفشل المخيف في قراءة التكوين. فمثلا:

[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

لقد وجدت أن rsync أسرع بكثير من scp -r . scp يسير بخطى بطيئة للغاية ، لذا قتلتُه بسرعة 300 ميغا بايت أو نحو ذلك ، ثم استخدمت الأمر التالي بدلاً من ذلك. تم نقل 2 تيرابايت بسرعة مذهلة مقارنة بمحاولة scp . لقد قمت بتحديث rsync عدة مرات أثناء محاولتي حل المشكلات ، وتم تحديث rsync دون إرسال الفوضى بأكملها في كل مرة.

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

هل جرب أحد هذا باستخدام قاعدة بيانات DB2 حتى الآن؟

يمكنني حقًا استخدام بعض المساعدة في هذه المشكلة ^ ^ # 3125. يمكن لأي شخص أن تساعد في هذه القضية؟ لقد راجعت هذا الدليل ثلاث مرات. بدأت من الصفر مرات عدة. لقد جربت حلول استضافة متعددة ولكني أحصل على نفس المشكلة في كل مرة. لقد جربت بعض الحلول المذكورة في التعليقات لكنها لم تكن مفيدة في النهاية.
لقد حاولت أيضًا الفتنة ولكني لم أتلق أي رد عدة مرات.

arkD Luckly ، سأقوم بمراجعة هذا الدليل في الأسبوعين المقبلين منذ أن أقوم بإعداد إعداد مستقل آخر ولكن باستخدام أحدث إصدار من Dynmap لـ 1.16.3 والذي لم يتم إصداره علنًا على صفحة spigot حتى الآن تحديثا.

لم أكن أعمل من أجلي - اضطررت إلى تمكين php على NGINX باستخدام هذا الدليل
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 التقييمات

القضايا ذات الصلة

wtchappell picture wtchappell  ·  4تعليقات

Sikatsu picture Sikatsu  ·  6تعليقات

idlenexusgaming picture idlenexusgaming  ·  4تعليقات

mikesbytes picture mikesbytes  ·  6تعليقات

MissFox0810 picture MissFox0810  ·  3تعليقات