เวอร์ชัน Server 1.0 · PHP + MySQL/MariaDB

ติดตั้งเว็บไซต์สะสมผลงานครูบี
พร้อมหน้าตั้งค่าฐานข้อมูล

คู่มือนี้สำหรับนำระบบไปติดตั้งบน Hostinger, cPanel หรือ Server ที่รองรับ PHP เว็บไซต์ทำงานได้โดยไม่ต้องติดตั้ง Node.js หรือ Composer

ก่อนเริ่มติดตั้ง

สิ่งที่ต้องมีค่าที่ใช้
PHPPHP 8.2 ขึ้นไป แนะนำ 8.3 หรือ 8.4; ชุดนี้ทดสอบด้วย PHP 8.3
ส่วนขยาย PHPPDO MySQL, mbstring และ fileinfo
ฐานข้อมูลMySQL 8 หรือ MariaDB 10.6 ขึ้นไป; ทดสอบด้วย MariaDB 10.11
Web ServerApache / LiteSpeed / Nginx พร้อมระบบประมวลผล PHP
เว็บไซต์ตั้งโดเมนหรือ Subdomain และเปิด HTTPS ก่อนกรอกรหัสผ่าน
การอัปโหลดupload_max_filesize ≥ 20M; post_max_size ≥ 24M; memory_limit ≥ 128M
สิทธิ์ฐานข้อมูลผู้ใช้ต้องอ่าน/เขียนข้อมูลและ CREATE TABLE ได้ ใช้ฐานข้อมูลใหม่แยกจากระบบอื่น
เวอร์ชันนี้ใช้บัญชีผู้ดูแลที่สร้างตอนติดตั้งบน Server แยกจากบัญชี ChatGPT เว็บไซต์เดิมยังอยู่ตามเดิม และข้อมูลหรือไฟล์ที่เพิ่มในเว็บไซต์เดิมจะไม่ย้ายมายังฐานข้อมูลใหม่นี้โดยอัตโนมัติ

ติดตั้งบน Hostinger หรือ cPanel

  1. สร้างฐานข้อมูลและผู้ใช้

    Hostinger: เปิด hPanel → Websites → Dashboard ของโดเมน → Databases → Management สร้างฐานข้อมูลใหม่และผู้ใช้ แล้วบันทึกชื่อฐานข้อมูล ชื่อผู้ใช้ รหัสผ่าน และ Database Host ให้ครบ ใช้ชื่อเต็มรวมคำนำหน้า เช่น u123456789_krubee ตามที่ระบบแสดง

    cPanel: เปิด MySQL Databases หรือ Database Wizard → สร้างฐานข้อมูล → สร้างผู้ใช้ → Add User to Database → ให้สิทธิ์ฐานข้อมูลที่จำเป็น

    คู่มือสร้างฐานข้อมูลของ Hostinger · คู่มือ cPanel

  2. ตั้งค่า PHP

    เลือก PHP 8.3/8.4 และเปิด PDO MySQL, mbstring, fileinfo ในเมนู PHP Configuration หรือ Select PHP Version ตรวจค่าการอัปโหลดตามตารางด้านบน ไฟล์ .user.ini ในชุดติดตั้งตั้งค่าไว้แล้ว แต่บางโฮสติ้งต้องปรับผ่านแผงควบคุมเพิ่มเติม

  3. อัปโหลดไฟล์

    แตก ZIP บนเครื่อง เปิดโฟลเดอร์ public แล้วอัปโหลด ไฟล์และโฟลเดอร์ที่อยู่ข้างในทั้งหมด ไปที่ public_html/krubee/ รวมถึง .htaccess และ .user.ini ไม่ต้องนำโฟลเดอร์ docs ขึ้นเว็บไซต์

    public_html/krubee/
      index.php
      install.php
      login.php
      admin.php
      database.php
      reconnect.php
      api.php
      file.php
      INSTALL_GUIDE.html
      .htaccess
      .user.ini
      app/
      assets/

    หากต้องการใช้หน้าแรกของโดเมน ให้อัปโหลดไว้ใน public_html/ โดยตรงแทน โค้ดใช้ลิงก์สัมพันธ์จึงรองรับทั้งสองรูปแบบ

  4. ตั้งรหัสติดตั้งของครูบี

    ใน File Manager เปิด app/install-key.example.php คัดลอกเป็นไฟล์ชื่อ app/install-key.php แล้วเปลี่ยนเฉพาะข้อความระหว่างเครื่องหมายอัญประกาศหลัง return เป็นรหัสสุ่มส่วนตัวอย่างน้อย 24 ตัวอักษร แนะนำสุ่มจากตัวจัดการรหัสผ่าน ห้ามใช้ค่าตัวอย่าง

    return 'รหัสสุ่มส่วนตัวของครูอย่างน้อย24ตัวอักษร';

    เก็บรหัสนี้ไว้ให้ดี เพราะเป็นรหัสกู้การเชื่อมต่อฐานข้อมูลด้วย อย่าส่งให้ผู้ชมเว็บไซต์

  5. เปิดหน้าติดตั้งผ่านเว็บ

    ไปที่ https://โดเมนของครู/krubee/install.php ดูรายการตรวจความพร้อม ใส่รหัสติดตั้งและข้อมูลฐานข้อมูล กด ทดสอบการเชื่อมต่อ เมื่อผ่านแล้วตั้งชื่อผู้ใช้ อีเมล และรหัสผ่านผู้ดูแล จากนั้นกด ติดตั้งระบบ

    ช่องในหน้าติดตั้งใส่อะไร
    Database Hostค่าจากโฮสติ้ง ปกติฐานข้อมูลในเครื่องเดียวกันใช้ localhost แต่ให้ยึดค่าที่ผู้ให้บริการระบุ
    Portปกติ 3306 หรือค่าที่ Server กำหนด
    ชื่อฐานข้อมูลชื่อเต็มรวมคำนำหน้าของบัญชี
    ผู้ใช้ฐานข้อมูลผู้ใช้ที่มีสิทธิ์กับฐานข้อมูลนั้น
    รหัสผ่านฐานข้อมูลรหัสผ่านที่ตั้งใน hPanel/cPanel ไม่ใช่รหัสผู้ดูแลเว็บ
    ชื่อผู้ใช้ผู้ดูแลชื่ออังกฤษ 3 ตัวอักษรขึ้นไป เช่น krubee
    อีเมลผู้ดูแลอีเมลของครูบี
    รหัสผ่านผู้ดูแลอย่างน้อย 12 ตัวอักษร แนะนำอังกฤษ ตัวเลข และสัญลักษณ์ ไม่ใช้รหัสเดียวกับฐานข้อมูล

    ระบบสร้างตาราง kb_users, kb_entries, kb_files, kb_settings, kb_login_attempts ให้เอง ไม่ต้อง Import SQL ก่อน และจะใส่เว็บไซต์การสอนเดิมพร้อมร่าง Code Quest และระบบสอบออนไลน์ให้

  6. ตรวจการใช้งาน

    ระบบเปิด admin.php หลังติดตั้ง ทดสอบเพิ่มผลงานเป็นฉบับร่าง แนบรูป บันทึก แล้วเปลี่ยนเป็นเผยแพร่ เปิดหน้าเว็บไซต์จากอีกเบราว์เซอร์เพื่อตรวจว่าเห็นเฉพาะรายการที่เผยแพร่ ตรวจหน้า database.php ว่าสถานะเชื่อมต่อสำเร็จ

    หน้าติดตั้งล็อกอัตโนมัติแล้ว สามารถลบ app/install-key.php ออกจาก Server ได้ แต่ยังต้องเก็บรหัสติดตั้งไว้ในที่ส่วนตัวเพื่อใช้กู้คืนภายหลัง

เพิ่มและเผยแพร่ผลงาน

  1. เปิด login.php และเข้าสู่ระบบด้วยบัญชีที่สร้างตอนติดตั้ง
  2. เลือกหมวดเว็บไซต์การสอน โปรแกรม งานและความภูมิใจ หรือข่าวสาร
  3. กด “เพิ่มข้อมูล” ใส่ชื่อ วันที่ คำอธิบาย รายละเอียด และลิงก์
  4. แนบรูปปก PNG/JPG/WebP หรือไฟล์ PDF/ZIP/HTML/เอกสาร ขนาดไม่เกิน 20 MB ต่อไฟล์
  5. เลือก “ฉบับร่าง” เพื่อเก็บไว้ก่อน หรือ “เผยแพร่” เพื่อแสดงให้ผู้ชมเห็น แล้วบันทึก

หมวดงานและความภูมิใจเลือกประเภทการทำงาน รางวัล หรือความภาคภูมิใจได้ ข่าวล่าสุดแสดง 3 รายการ ส่วนข่าวเก่ากดเปิดจาก “ข่าวก่อนหน้านี้” ผู้ชมอ่านผลงานได้โดยไม่ต้อง Login รหัสผ่านฐานข้อมูลไม่อยู่ใน JavaScript และไม่ถูกส่งกลับในหน้าตั้งค่า

ใช้หน้าเชื่อมต่อฐานข้อมูลภายหลัง

  1. Login → กด “ตั้งค่าฐานข้อมูล” หรือเปิด database.php
  2. ดูสถานะฐานข้อมูล จำนวนผลงาน และสิทธิ์โฟลเดอร์อัปโหลด
  3. แก้ Host / Port / ชื่อฐานข้อมูล / ผู้ใช้ / รหัสผ่านใหม่ หากเว้นรหัสผ่านว่างจะใช้ค่าเดิม
  4. กด “ทดสอบการเชื่อมต่อ”
  5. ใส่รหัสผ่านผู้ดูแลเว็บไซต์เพื่อยืนยัน แล้วกด “บันทึกการเชื่อมต่อ”
ระบบจะไม่สลับไปใช้ฐานข้อมูลว่าง หากย้าย Server ให้ Export ฐานข้อมูลเดิมจาก phpMyAdmin แล้ว Import ที่ปลายทางก่อน พร้อมย้ายไฟล์ในโฟลเดอร์เก็บข้อมูล ระบบตรวจรหัสประจำเว็บไซต์และบัญชีผู้ดูแลก่อนบันทึก จึงเก็บข้อมูลเดิมไว้ได้

ข้อมูลและไฟล์เก็บอยู่ที่ใด

Hostinger/cPanel จะใช้โฟลเดอร์ krubee-data ข้าง public_html ซึ่งอยู่นอกหน้าเว็บไซต์ ประกอบด้วย config.php และ uploads/ หน้าติดตั้งจะแสดงตำแหน่งจริง หาก PHP ไม่มีสิทธิ์สร้างโฟลเดอร์ ให้สร้างโฟลเดอร์ที่ตำแหน่งนั้นผ่าน File Manager และให้บัญชี PHP เขียนได้ ไม่ต้องใช้สิทธิ์ 777

Server ที่ใช้ตำแหน่งอื่นตั้งค่า Environment Variable KRUBEE_STORAGE_DIR หรือปรับ app/paths.php ให้ชี้โฟลเดอร์ส่วนตัวนอก Document Root ได้ ห้ามย้าย config.php ไปไว้ใน assets หรือโฟลเดอร์สาธารณะ

เปลี่ยนรหัสผ่านฐานข้อมูลแล้วเข้าเว็บไม่ได้

เมื่อเปลี่ยนรหัสผ่านฐานข้อมูลที่โฮสติ้ง ค่าเดิมในเว็บไซต์จะใช้ไม่ได้ ให้ใช้หน้ากู้การเชื่อมต่อโดยไม่ต้อง Login กับฐานข้อมูลเก่า:

  1. เปิด https://โดเมนของครู/krubee/reconnect.php
  2. ใส่รหัสติดตั้ง/กู้คืนที่เก็บไว้
  3. ใส่ข้อมูลฐานข้อมูลและรหัสผ่านล่าสุด กดทดสอบการเชื่อมต่อ
  4. ใส่รหัสผ่านผู้ดูแลเว็บไซต์เดิม แล้วกด “กู้และบันทึกการเชื่อมต่อ”
  5. กลับไป Login และตรวจรายการผลงาน

หน้ากู้คืนไม่สร้างตารางหรือผู้ดูแลใหม่ และจะยอมรับเฉพาะข้อมูลของเว็บไซต์เดิม หากลืมรหัสกู้คืนต้องให้ผู้ดูแล Server แก้ค่าใน krubee-data/config.php จากข้อมูลโฮสติ้งที่ตรวจสอบแล้ว รักษารูปแบบ PHP และเครื่องหมายอัญประกาศให้ถูกต้อง

หากติดตั้งบน VPS / Linux

เตรียม PHP-FPM 8.3/8.4, MySQL/MariaDB และ Apache หรือ Nginx สร้างฐานข้อมูลกับผู้ใช้ก่อน แล้วให้ Document Root ชี้โฟลเดอร์ public ของชุดติดตั้ง ตัวอย่างตำแหน่ง: /var/www/krubee/public สร้างโฟลเดอร์ /var/www/krubee/krubee-data และให้บัญชี PHP-FPM มีสิทธิ์อ่านเขียน ตัวอย่างกรณี PHP ใช้ www-data:

sudo install -d -m 700 -o www-data -g www-data /var/www/krubee/krubee-data

ตัวอย่างส่วนของ Nginx สำหรับติดตั้งที่หน้าแรกโดเมน ให้ผู้ดูแล Server ปรับโดเมน เส้นทาง และ PHP-FPM socket ให้ตรงกับเครื่อง จากนั้นตั้ง HTTPS ด้วยใบรับรองที่ใช้จริง:

root /var/www/krubee/public;
index index.php;

location / {
    try_files $uri $uri/ =404;
}
location ^~ /app/ {
    return 404;
}
location ~ /\. {
    deny all;
}
location ~ \.php$ {
    try_files $uri =404;
    include fastcgi_params;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    fastcgi_param HTTPS $https if_not_empty;
    fastcgi_pass unix:/run/php/php8.3-fpm.sock;
}
client_max_body_size 24m;

จากนั้นตั้งรหัสติดตั้งใน app/install-key.php และเปิด install.php เหมือนขั้นตอนบน Hostinger หากใช้โฟลเดอร์ย่อยให้ปรับตำแหน่ง location /app/ ให้ตรงกับโฟลเดอร์ย่อยด้วย Apache/LiteSpeed ใช้ .htaccess ที่มีในชุดได้

แก้ปัญหาที่พบบ่อย

อาการตรวจอย่างไร
ตรวจ PHP ไม่ผ่านเลือก PHP ≥ 8.2 เปิด pdo_mysql, mbstring, fileinfo แล้วโหลด install.php ใหม่
รหัสติดตั้งไม่ถูกต้องต้องมีไฟล์ชื่อ app/install-key.php โดยคัดลอกจาก example เปลี่ยนข้อความหลัง return และไม่ใช้ค่า CHANGE_THIS…
เชื่อมต่อฐานข้อมูลไม่ได้ใช้ชื่อเต็มรวมคำนำหน้า ตรวจ Host/Port และรหัสผ่านของผู้ใช้ฐานข้อมูล ทดสอบเข้าฐานข้อมูลใน phpMyAdmin และตรวจสิทธิ์ผู้ใช้
สร้างโฟลเดอร์เก็บข้อมูลไม่ได้ดูตำแหน่งที่หน้าติดตั้งแสดง สร้าง krubee-data นอก public_html และให้ PHP เขียนได้ หรือปรับ paths.php เป็นตำแหน่งที่โฮสติ้งอนุญาต
ติดตั้งแล้วแจ้งมีผู้ดูแลอยู่ห้ามทับระบบเดิม ใช้ฐานข้อมูลใหม่ หากเป็นระบบเดิมให้คืนไฟล์ config.php จากสำรอง ห้ามลบตารางโดยไม่สำรองข้อมูล
อัปโหลดไฟล์เกินขนาดปรับ upload_max_filesize=20M, post_max_size=24M และขนาดรับคำขอของ Web Server ถ้าเซิร์ฟเวอร์จำกัดต่ำกว่าให้ยึดค่าที่ผู้ให้บริการอนุญาต
ไม่เห็นรายการที่เพิ่มตรวจสถานะเป็น “เผยแพร่” และกดบันทึกแล้ว ฉบับร่างเห็นเฉพาะผู้ดูแล
Login ไม่ได้หลังเปลี่ยนฐานข้อมูลเปิด reconnect.php เพื่อกู้การเชื่อมต่อด้วยรหัสกู้คืนและรหัสผ่านผู้ดูแลเดิม
หน้าขาวหรือ HTTP 500ดู Error Log ของโฮสติ้ง ตรวจ PHP version, modules, สิทธิ์ไฟล์และพื้นที่เก็บข้อมูล ไม่เปิดแสดงรหัสผ่านหรือ stack trace ต่อผู้ชม

การสำรองและการย้าย Server

สำรองฐานข้อมูลผ่าน phpMyAdmin → Export พร้อมสำรองโฟลเดอร์ krubee-data ทั้ง config.php และ uploads/ เมื่อย้าย Server ให้นำฐานข้อมูลเดิมไป Import และย้ายโฟลเดอร์ไฟล์ จากนั้นใช้ database.php หรือ reconnect.php เปลี่ยนข้อมูลการเชื่อมต่อ ทดสอบรูปและไฟล์ดาวน์โหลดก่อนเปลี่ยนโดเมนที่ใช้งานจริง

SQL โครงสร้างเปล่าใน docs/schema.sql ใช้ประกอบการตรวจระบบ ไม่ใช่ไฟล์สำรองผลงานของครู หน้าติดตั้งสร้างตารางให้ได้เอง

ผลตรวจชุดติดตั้ง

ตรวจไวยากรณ์ PHP ทุกไฟล์และ JavaScript แล้ว ทดสอบผ่าน HTTP กับ PHP 8.3 และ MariaDB 10.11 รวม 33 กรณี ครอบคลุมการติดตั้ง รหัสติดตั้งผิด การล็อกหน้าติดตั้ง ผู้ดูแล/ผู้ชม ฉบับร่าง/เผยแพร่ ข้อมูลภาษาไทย อัปโหลด ดาวน์โหลด ลบ ตั้งค่าฐานข้อมูล ป้องกันการสลับไปฐานข้อมูลว่าง และกู้การเชื่อมต่อหลังเปลี่ยนรหัสผ่านฐานข้อมูล

ยังไม่ได้ทดสอบในบัญชี Hostinger/cPanel ของครูบีโดยตรง การติดตั้งจริงต้องใช้ฐานข้อมูล โดเมน และสิทธิ์โฟลเดอร์ของ Server นั้น

เอกสารอ้างอิง