Host เว็บ Static Site Generator บน Hosting ทำยังไง

เว็บที่ Build มาเป็นไฟล์ HTML ล้วนๆ อัพโหลดขึ้น Hosting ธรรมดาได้เลย

Host เว็บ Static Site Generator บน Hosting ทำยังไง Website

Static Site Generator คืออะไร?

Static Site Generator (SSG) เป็นเครื่องมือช่วยให้สร้างเว็บไซต์ได้ง่ายและรวดเร็ว โดยไม่ต้องเขียน HTML Code ทั้งหมดเอง ตัวอย่างเครื่องมือ SSG ยอดนิยมได้แก่ Hugo, Jekyll, Gatsby, Next.js Static Export เป็นต้น วิธีการทำงานของ SSG คือ คุณสร้างเนื้อหาในรูปแบบ Markdown (ไฟล์ .md ที่เขียนง่าย) หรือ YAML จากนั้น SSG จะทำการ "Build" หรือแปลงไฟล์เหล่านี้เป็น HTML, CSS, JavaScript ไฟล์สำเร็จรูปที่พร้อมสำหรับเซิร์ฟเวอร์

ความเด่นของ Static Site Generator

SSG นิยมใช้ด้วยเหตุผลหลายประการ:

ขั้นตอนการ Build และอัพโหลด SSG ไปยัง Hosting

ปัญหาหลักที่มือใหม่มักเจอ คือ "ฉันสร้างเว็บไซต์ด้วย Hugo/Jekyll ให้แล้ว แล้วอัพโหลดขึ้น Hosting ยังไง?" คำตอบง่าย: ให้ Build ไฟล์เหล่านั้นเป็น HTML บนคอมพิวเตอร์ของคุณก่อน จากนั้นอัพโหลดเพียงไฟล์ HTML เท่านั้นไปยัง Hosting

ขั้นที่ 1: Build Static Files บนคอมพิวเตอร์ของคุณ

ส่วนใหญ่ SSG ที่คุณใช้ (เช่น Hugo หรือ Jekyll) จะมี Command สำหรับ Build ให้ดูเอกสารของ SSG นั้น ตัวอย่าง:

หลังจากรัน Build Command เสร็จ คุณจะได้โฟลเดอร์ที่มี HTML, CSS, JavaScript ไฟล์สำเร็จรูปทั้งหมด

ขั้นที่ 2: ตรวจสอบไฟล์ที่ Build ได้

หลังจาก Build เสร็จ ให้เปิดโฟลเดอร์ผลลัพธ์ (เช่น `public` หรือ `_site`) ตรวจสอบว่ามีไฟล์เหล่านี้:

ถ้าโฟลเดอร์นี้มีโครงสร้างที่ถูกต้อง ก็พร้อมสำหรับอัพโหลด

ขั้นที่ 3: อัพโหลดไฟล์ไปยัง Hosting ด้วย FTP

เปิด FileZilla หรือ FTP Client ที่คุณใช้อยู่ เชื่อมต่อไปยัง Hosting แล้วทำตามนี้:

  1. ด้านซ้าย (Local Files) ให้นำทางไปยังโฟลเดอร์ที่ Build ได้ (เช่น `public` หรือ `_site`)
  2. ด้านขวา (Remote Files) ให้นำทางไปยัง `public_html`
  3. คลิกขวาที่ไฟล์และโฟลเดอร์ทั้งหมดใน Build Folder แล้วเลือก Upload (หรือลาก-วาง)
  4. รอให้อัพโหลดเสร็จทั้งหมด
Tip: ถ้าต้องการให้แน่ใจว่าไฟล์ไม่ซ้ำซ้อน ให้ลบโฟลเดอร์ `public_html` เก่าออกก่อน แล้วอัพโหลด Build Folder ใหม่ทั้งหมด ในกรณีนี้ เว็บไซต์จะหยุดชั่วครู่ขณะลบเก่า แล้วจึงอัพโหลดใหม่

ขั้นที่ 4: ทดสอบเว็บไซต์

เมื่ออัพโหลดเสร็จ ให้เปิดเบราว์เซอร์และเข้าไปยัง https://yourdomain.com ถ้าเห็นเว็บไซต์ของคุณปรากฏขึ้น แสดงว่าอัพโหลดสำเร็จ

วิธีการอัพเดท Static Site เมื่อมีการเปลี่ยนแปลง

เมื่อต้องการเพิ่มบทความ เปลี่ยนแปลงเนื้อหา หรือปรับปรุงเว็บไซต์ ให้ทำตามขั้นตอนนี้:

  1. แก้ไขไฟล์ Markdown หรือเนื้อหาต้นฉบับของคุณในโลคัล
  2. รัน Build Command อีกครั้ง (เช่น `hugo` หรือ `jekyll build`) เพื่อให้ SSG สร้าง HTML ใหม่
  3. อัพโหลดโฟลเดอร์ Build ใหม่ไปยัง Hosting ด้วย FTP

ทุกครั้งที่อัพเดท ต้องทำ Build ใหม่แล้วจึงอัพโหลด ไม่สามารถแก้ไข HTML บนเซิร์ฟเวอร์โดยตรงได้ เพราะไฟล์ Build ถูกสร้างจากต้นฉบับเสมอ

บรรเลาและ Subdirectory Hosting

บางครั้ง Static Site อาจต้องวางในโฟลเดอร์ย่อย (Subdirectory) เช่น `yourdomain.com/blog` หรือ `yourdomain.com/docs` ในกรณีนี้ ให้ตรวจสอบ Configuration ของ SSG ว่า URL ที่ Generate มานั้นถูกต้องหรือไม่

ตัวอย่าง: ถ้าตั้ง Base URL เป็น `/blog` SSG ควร Generate link ให้เป็น `/blog/index.html`, `/blog/css/style.css` เป็นต้น ไม่ใช่ `/index.html`, `/css/style.css` (ซึ่งจะชี้ไปผิด)


ตรวจสอบว่า Static Site ทำงานถูกต้อง

หลังจากอัพโหลด Build Folder เสร็จแล้ว ให้ตรวจสอบด้วยวิธีต่อไปนี้:

# 1. เปิดเบราว์เซอร์และเข้าหน้าแรก
https://yourdomain.com

# 2. คลิก Link ต่าง ๆ ตรวจสอบว่าสามารถไปหน้าอื่น ๆ ได้
# เช่น เมนู, บทความ, หน้า About เป็นต้น

# 3. เปิด DevTools (F12) ดู Console เพื่อดู Error
# ถ้า CSS, JavaScript ไม่โหลด จะมี Error สีแดง

# 4. ตรวจสอบใน cPanel File Manager
# ไปที่ public_html ดูว่าไฟล์ HTML ทั้งหมดอยู่ที่นั่นหรือไม่

# 5. ลองเข้าหน้าแต่ละหน้า เพื่อให้แน่ใจว่า Routing ถูกต้อง
https://yourdomain.com/about
https://yourdomain.com/blog/
Tip: ถ้า CSS ไม่โหลด (เว็บดูเหมือน "ธรรมชาติ" ไม่มีสี) อาจเป็นเพราะ Base URL ไม่ถูกต้อง ลองตรวจสอบ SSG Configuration ใหม่

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

Error: "404 Not Found" เมื่อเข้าหน้าบางหน้า

เกิดเมื่อ Link ไปยังหน้าอื่นชี้ผิด หรือไฟล์ HTML ไม่ได้อัพโหลดไป

Error: "CSS และ JavaScript ไม่โหลด" หรือเว็บดูเหมือนไม่มีสี

ไฟล์ HTML โหลดได้ แต่ CSS, JavaScript ไม่โหลด

Error: "ไฟล์ Build Folder ไม่สมบูรณ์" หรือ "Build สำเร็จแต่ไม่มีไฟล์"

อาจเป็นเพราะ Build ไม่ส่งสำเร็จ หรือขาดการ Configure

Error: "Image ไม่แสดง" หรือรูปหาย

ไฟล์ HTML โหลดได้ แต่รูปภาพไม่แสดง

Error: "Hosting ไม่เซิร์ฟไฟล์ .html" หรือต้องกด Download แทนที่จะแสดง

เกิดบนเซิร์ฟเวอร์ที่ไม่ได้ Configure ให้เซิร์ฟไฟล์ HTML ที่ถูกต้อง

วิธีแก้: ติดต่อ Hosting Provider ว่า Hosting รองรับ Static HTML Hosting หรือไม่ Hosting ส่วนใหญ่ปกติรองรับ แต่ Hosting บางตัวอาจมีการตั้งค่าผิด


คำถามที่พบบ่อย

Q: SSG เหมาะสำหรับบล็อกหรือเว็บไซต์ข่าว ที่มีการ Update บ่อยๆ หรือไม่?

A: เหมาะสำหรับจำนวน Post ที่ไม่เกิน 1000-2000 บทความ เมื่อเกิน ครั้ง Build อาจช้าขึ้น นอกจากนี้ SSG เหมาะมาก ถ้าเพิ่มบทความไม่บ่อยมาก (สัปดาห์ละ 1-2 บทความ) แต่ถ้าต้อง Update ทุกวันหลายครั้ง การ Build ทุกครั้งอาจซ้ำซ้อน ในกรณีนี้ CMS แบบ Dynamic อย่าง WordPress อาจเหมาะกว่า

Q: ต้องติดตั้ง SSG บนเซิร์ฟเวอร์ Hosting ด้วยหรือไม่?

A: ไม่เลย SSG Build บนคอมพิวเตอร์ของคุณเท่านั้น เซิร์ฟเวอร์ Hosting ไม่ต้องติดตั้ง SSG เพียงแค่เก็บไฟล์ HTML ที่ Build แล้วเท่านั้น นั่นคือข้อดีของ Static Site ไม่ต้อง Runtime ใดๆ บนเซิร์ฟเวอร์

Q: ถ้าอัพโหลดไป Hosting แล้วต้องการแก้ไขไฟล์ HTML บนเซิร์ฟเวอร์โดยตรงได้ไหม?

A: ได้นะ แต่ไม่แนะนำ เพราะไฟล์ HTML ทั้งหมดถูกสร้างจากไฟล์ต้นฉบับในเครื่องของคุณ ถ้าแก้ไข HTML บนเซิร์ฟเวอร์ครั้งต่อไปที่ Build และอัพโหลดใหม่ การแก้ไขของคุณจะหายไป ดังนั้นต้องแก้ไขในไฟล์ต้นฉบับ (Markdown หรือ Config) จากนั้น Build ใหม่ แล้วอัพโหลดแทน