🇯🇵 日本語 | 🇺🇸 English | 🇪🇸 Español | 🇵🇹 Português | 🇹🇭 ไทย | 🇨🇳 中文

Apache คืออะไร? อธิบายพื้นฐานและกลไกของเว็บเซิร์ฟเวอร์แบบเข้าใจง่าย

อยากลองสร้างเว็บไซต์! แต่พอได้ยินคำว่า "เว็บเซิร์ฟเวอร์" หรือ "Apache (อะแพชี)" แล้วรู้สึกว่ามันยากจัง... คุณกำลังรู้สึกแบบนี้อยู่หรือเปล่า? ไม่ต้องกังวล! ในบทความนี้ เราจะอธิบายตั้งแต่พื้นฐานของเว็บเซิร์ฟเวอร์ไปจนถึงกลไกการทำงานของ Apache ในแบบที่แม้แต่มือใหม่ด้านการสร้างเว็บก็สามารถเข้าใจได้เหมือนมีภาพประกอบ เราจะอธิบายศัพท์เทคนิคให้เข้าใจง่าย คุณจึงสามารถอ่านต่อไปได้อย่างสบายใจ

และเป้าหมายที่ยิ่งใหญ่ที่สุดของบทความนี้คือการทำให้ทุกคนได้สัมผัสประสบการณ์ "อ๋อ! การเผยแพร่เว็บมันเป็นอย่างนี้นี่เอง!" เราได้เตรียมโค้ดตัวอย่างมากมายที่สามารถคัดลอกไปใช้ได้ทันที มาลองลงมือทำไปพร้อมๆ กันเพื่อเรียนรู้กลไกของเว็บเซิร์ฟเวอร์กันเถอะ!


ว่าแต่... เว็บเซิร์ฟเวอร์คืออะไรกันแน่?

ก่อนอื่น เรามาดูหน้าที่ของเว็บเซิร์ฟเวอร์กันก่อน พูดง่ายๆ ก็คือ "คอมพิวเตอร์ที่คอยให้บริการข้อมูลหน้าเว็บตามคำขอของเรา" นั่นเอง

อาจจะเข้าใจง่ายขึ้นถ้าเปรียบเทียบกับร้านอาหาร:

เมื่อคุณพิมพ์ URL ในเบราว์เซอร์หรือคลิกที่ลิงก์ เบราว์เซอร์จะส่งคำขอ (Request) ไปยังเว็บเซิร์ฟเวอร์ว่า "ขอหน้านี้หน่อย!" เว็บเซิร์ฟเวอร์จะรับคำขอนั้นและส่งข้อมูลเช่นไฟล์ HTML หรือรูปภาพกลับมายังเบราว์เซอร์เป็นการตอบสนอง (Response) ว่า "นี่ครับ/ค่ะ!" ด้วยกระบวนการทั้งหมดนี้ เราจึงสามารถเข้าชมเว็บไซต์ต่างๆ ได้


"HTTP" กฎการสื่อสารคืออะไร?

เพื่อให้เว็บเซิร์ฟเวอร์และเบราว์เซอร์สามารถพูดคุย (สื่อสาร) กันได้ ทั้งสองฝ่ายจำเป็นต้องมีภาษาหรือ "กฎ" กลางที่เข้าใจร่วมกัน กฎนั้นก็คือ HTTP (HyperText Transfer Protocol)

หากเปรียบกับร้านอาหารเมื่อสักครู่ ก็เหมือนกับวิธีการสั่งอาหารที่กำหนดไว้ เช่น "ขอเมนู A" หรือวิธีการเสิร์ฟอาหารว่า "นี่คือเมนู A ที่สั่งไว้ครับ/ค่ะ" การแลกเปลี่ยนข้อมูลจะเกิดขึ้นตามกฎที่เรียกว่า HTTP นี้

`http://` หรือ `https://` ที่แสดงในแถบที่อยู่ของเบราว์เซอร์คือการประกาศว่าจะสื่อสารโดยใช้กฎนี้ (ตัว 's' ใน `https` ย่อมาจาก Secure หมายถึงการสื่อสารที่ถูกเข้ารหัสเพื่อเพิ่มความปลอดภัย)


เข้าเรื่อง! Apache คืออะไร?

ในที่สุดก็มาถึงหัวข้อหลักของเรา นั่นคือ Apache (อะแพชี) Apache คือหนึ่งในซอฟต์แวร์เว็บเซิร์ฟเวอร์ที่ถูกใช้งานอย่างแพร่หลายที่สุดในโลก ชื่ออย่างเป็นทางการคือ "Apache HTTP Server"

ลองนึกภาพว่า Apache คือซอฟต์แวร์ที่ทำหน้าที่เป็น "พนักงานเสิร์ฟ" ในตัวอย่างร้านอาหารของเราบนคอมพิวเตอร์ การติดตั้ง Apache บนคอมพิวเตอร์จะทำให้คอมพิวเตอร์เครื่องนั้นสามารถทำงานเป็นเว็บเซิร์ฟเวอร์ได้

ข้อดีของ Apache


[ภาคปฏิบัติ] มาลองเผยแพร่หน้าเว็บด้วย Apache กันเถอะ!

ทฤษฎีพอแค่นี้ก่อน มาลงมือปฏิบัติเพื่อสัมผัสประสบการณ์การเผยแพร่หน้าเว็บกันดีกว่า! ในส่วนนี้ เราจะถือว่าคุณได้ติดตั้ง Apache บนคอมพิวเตอร์ของคุณเรียบร้อยแล้ว (สำหรับวิธีการติดตั้ง เราจะอธิบายอย่างละเอียดในบทความถัดไป!)

ขั้นตอนที่ 1: สร้างไฟล์ HTML ที่จะเผยแพร่

ขั้นแรก ให้สร้างไฟล์ HTML ที่มีเนื้อหาที่จะแสดงบนหน้าเว็บ เป็นหน้าที่เรียบง่ายมากที่แสดงข้อความว่า "สวัสดีชาวโลก!" บันทึกไฟล์นี้ในชื่อ `index.html`

<!DOCTYPE html>
<html lang="th">
<head>
    <meta charset="UTF-8">
    <title>Apache หน้าแรกของฉัน</title>
</head>
<body>
    <h1>สวัสดีชาวโลก!</h1>
    <p>หน้านี้แสดงผลผ่าน Apache</p>
</body>
</html>

ขั้นตอนที่ 2: ตรวจสอบและแก้ไขไฟล์ตั้งค่าของ Apache

ต่อไป เราต้องบอก Apache ว่า "ไฟล์หน้าเว็บที่จะเผยแพร่อยู่ที่ไหน" การตั้งค่านี้ทำได้ในไฟล์ที่ชื่อว่า `httpd.conf`

ส่วนที่สำคัญที่สุดในไฟล์นี้คือ `DocumentRoot` ซึ่งเป็นที่ที่เราจะระบุตำแหน่งของไดเรกทอรี (โฟลเดอร์) ที่ใช้เก็บไฟล์สำหรับเผยแพร่บนเว็บ เช่น `index.html` ที่เราเพิ่งสร้างขึ้น

ตัวอย่างเช่น หาก `DocumentRoot` ถูกตั้งค่าเป็น `/usr/local/apache2/htdocs` เราก็จะนำไฟล์ `index.html` ไปไว้ในไดเรกทอรี `/usr/local/apache2/htdocs` เพื่อให้สามารถเข้าถึงได้ผ่านเว็บเบราว์เซอร์

ด้านล่างนี้คือตัวอย่างบางส่วนจากไฟล์ `httpd.conf` โปรดเปลี่ยนพาธให้ตรงกับสภาพแวดล้อมของคุณ ※โค้ดนี้เป็นเพียงตัวอย่างเพื่อการอธิบายเท่านั้น อย่าเพิ่งแก้ไขไฟล์ตั้งค่าของคุณโดยทันที

# Listen: หมายเลขพอร์ตที่เซิร์ฟเวอร์จะรอรับคำขอ
# โดยปกติ HTTP จะใช้พอร์ต 80
Listen 80

# DocumentRoot: พาธไปยังไดเรกทอรีที่เก็บเนื้อหาเว็บ
# วางไฟล์ HTML ของคุณไว้ในไดเรกทอรีนี้
# (สำหรับ Windows อาจเป็น "C:/Apache24/htdocs")
DocumentRoot "/usr/local/apache2/htdocs"

# การตั้งค่าสำหรับไดเรกทอรีที่ระบุใน DocumentRoot
<Directory "/usr/local/apache2/htdocs">
    # อนุญาตให้ใช้ไฟล์ .htaccess เพื่อเขียนทับการตั้งค่า
    AllowOverride All
    # อนุญาตทุกคำขอ
    Require all granted
</Directory>

[สำคัญ] หลังจากแก้ไขไฟล์ `httpd.conf` แล้ว คุณต้องรีสตาร์ท Apache ทุกครั้งเพื่อให้การตั้งค่ามีผล


[ตัวอย่างประยุกต์] ใช้ `.htaccess` เพื่อควบคุม Apache ให้ดียิ่งขึ้น

หนึ่งในคุณสมบัติที่ทรงพลังของ Apache คือไฟล์ `.htaccess` (ดอทเอชทีแอคเซส) โดยปกติแล้ว การตั้งค่าทั้งเซิร์ฟเวอร์จะทำในไฟล์ `httpd.conf` แต่ถ้าคุณต้องการเพิ่มกฎที่ใช้ได้เฉพาะในไดเรกทอรีใดไดเรกทอรีหนึ่ง ไฟล์ `.htaccess` นี้จะมีประโยชน์อย่างมาก

ในการบริหารเว็บไซต์ คุณมักจะเจอกับความต้องการต่างๆ เช่น "อยากเปลี่ยน URL ที่ไม่มี www ให้เป็นแบบมี www" หรือ "อยากตั้งรหัสผ่านสำหรับบางหน้า" ในสถานการณ์เช่นนี้ `.htaccess` จะมีบทบาทสำคัญ

ตัวอย่างที่ 1: จัดระเบียบ URL (บังคับให้มี www)

ในมุมมองของ SEO (Search Engine Optimization) การมี URL แยกกันอย่าง `example.com` และ `www.example.com` ไม่ใช่เรื่องดี การตั้งค่านี้จะทำการเปลี่ยนเส้นทาง (redirect) ไปยัง `www.example.com` ทั้งหมด สร้างไฟล์ `.htaccess` ที่มีเนื้อหาดังต่อไปนี้แล้วนำไปวางไว้ใน `DocumentRoot`

RewriteEngine On
RewriteCond %{HTTP_HOST} ^example\.com$ [NC]
RewriteRule ^(.*)$ http://www.example.com/$1 [R=301,L]

ตัวอย่างที่ 2: ตั้งรหัสผ่านให้ไดเรกทอรี (Basic Authentication)

ใช้ Basic Authentication เมื่อต้องการจำกัดการเข้าถึงไดเรกทอรีบางแห่ง เช่น หน้าสำหรับสมาชิกเท่านั้น ขั้นแรก ให้วางไฟล์ `.htaccess` ที่มีเนื้อหาต่อไปนี้ในไดเรกทอรีที่ต้องการป้องกัน

AuthType Basic
AuthName "Secret Area"
AuthUserFile /path/to/.htpasswd
Require valid-user

จากนั้น สร้างไฟล์ `.htpasswd` ที่บันทึกชื่อผู้ใช้และรหัสผ่านที่ได้รับอนุญาต โปรดแทนที่ `/path/to/` ด้วยพาธที่เหมาะสมบนเซิร์ฟเวอร์ของคุณ กฎเหล็กคือต้องวางไฟล์นี้ในตำแหน่งที่ไม่สามารถเข้าถึงได้จากเว็บ

# ตัวอย่างชื่อผู้ใช้ "myuser" และรหัสผ่านที่เข้ารหัสแล้ว
myuser:$apr1$abcdefg$hijklmnopqrstuvwxyz.

※ โดยทั่วไป ไฟล์ `.htpasswd` จะถูกสร้างขึ้นโดยใช้คำสั่งพิเศษหรือเครื่องมือบนเว็บ


ตัวอย่างที่ 3: ปฏิเสธการเข้าถึงจาก IP Address ที่ระบุ

การตั้งค่านี้ใช้สำหรับบล็อกการเข้าถึงที่ไม่พึงประสงค์จาก IP Address ที่ระบุ คุณสามารถระบุ IP ที่ต้องการบล็อกได้

Require all granted
Require not ip 192.168.1.100
Require not ip 10.0.0.0/8

ข้อควรระวัง

Apache มีประสิทธิภาพสูงมาก แต่หากตั้งค่าผิดพลาด อาจก่อให้เกิดความเสี่ยงด้านความปลอดภัยหรือทำให้เว็บไซต์ไม่สามารถแสดงผลได้


สรุป

ในบทความนี้ เราได้อธิบายตั้งแต่กลไกพื้นฐานของเว็บเซิร์ฟเวอร์ บทบาทของซอฟต์แวร์เว็บเซิร์ฟเวอร์ยอดนิยมอย่าง Apache ไปจนถึงขั้นตอนการเผยแพร่หน้าเว็บอย่างง่ายและตัวอย่างการประยุกต์ใช้

ในตอนแรกอาจจะรู้สึกว่ายาก แต่ความรู้สึกดีใจเมื่อได้เห็นไฟล์ `index.html` ที่สร้างขึ้นแสดงผลบนเบราว์เซอร์ คือก้าวแรกที่จะทำให้คุณได้สัมผัสกับความสนุกของการสร้างเว็บ Apache คือพันธมิตรที่ไว้ใจได้ซึ่งจะช่วยส่งมอบเว็บไซต์ที่คุณสร้างไปยังผู้คนทั่วโลก หวังว่าบทความนี้จะเป็นจุดเริ่มต้นให้คุณได้เพิ่มพูนความรู้เกี่ยวกับเว็บเซิร์ฟเวอร์และนำไปใช้ประโยชน์ในงานสร้างสรรค์ของคุณ

สำหรับขั้นตอนต่อไป มาลองติดตั้ง Apache บนคอมพิวเตอร์ของคุณกัน! คุณสามารถอ่านวิธีการติดตั้งอย่างละเอียดตามระบบปฏิบัติการได้ในบทความต่อไปนี้

2. วิธีการติดตั้ง Apache บน Windows / macOS / Linux (แยกตาม OS)