SiamCafe · Blog
Apache Web Server — ติดตั้งและตั้งค่าบน Linux
บทความ

Apache Web Server — ติดตั้งและตั้งค่าบน Linux

เผยแพร่ 29 พฤษภาคม 2569
Apache Web Server — ติดตั้งและตั้งค่าบน Linux

ติดตั้ง Apache บน Ubuntu/CentOS ตั้งค่า VirtualHost, mod_rewrite, SSL, MPM tuning พร้อมตัวอย่าง Config จริงที่ใช้ได้ทันที

Apache Web Server

Apache HTTP Server คืออะไร

Apache Web Server — ติดตั้งและตั้งค่าบน Linux

Apache HTTP Server หรือที่เรียกสั้นๆว่า Apache เป็น Web Server แบบ Open Source ที่ได้รับความนิยมสูงสุดมาตั้งแต่ปี 1995 พัฒนาโดย Apache Software Foundation ปัจจุบันยังคงเป็น Web Server ที่ใช้งานมากที่สุดในโลกโดยมี Market Share ประมาณ 30% จากข้อมูลของ Netcraft Survey ปี 2026

Apache ทำงานบนระบบปฏิบัติการหลักทุกตัวทั้ง Linux, Windows และ macOS แต่ในบทความนี้จะเน้นการติดตั้งและตั้งค่าบน Linux ซึ่งเป็น Platform ที่นิยมใช้งานมากที่สุดสำหรับ Production Server

ติดตั้ง Apache บน Ubuntu/Debian

การติดตั้งบน Ubuntu หรือ Debian ทำได้ง่ายผ่าน apt package manager ดังนี้

หลังติดตั้งเสร็จ Apache จะเริ่มทำงานที่ Port 80 ทันที เปิด Browser ไปที่ http://your-server-ip จะเห็นหน้า Default Page ของ Apache

โครงสร้างไฟล์สำคัญบน Ubuntu:

  • /etc/apache2/apache2.conf — ไฟล์ Config หลัก
  • /etc/apache2/sites-available/ — เก็บ VirtualHost Config
  • /etc/apache2/sites-enabled/ — Symlink ของ VirtualHost ที่เปิดใช้งาน
  • /etc/apache2/mods-available/ — Module ที่มีให้ใช้
  • /etc/apache2/mods-enabled/ — Module ที่เปิดใช้งานอยู่
  • /var/www/html/ — Document Root เริ่มต้น
  • /var/log/apache2/ — ไฟล์ Log ทั้ง access.log และ error.log

ติดตั้ง Apache บน CentOS/RHEL/AlmaLinux

บน CentOS หรือ RHEL-based distros ใช้ dnf หรือ yum:

โครงสร้างไฟล์บน CentOS แตกต่างจาก Ubuntu เล็กน้อย:

  • /etc/httpd/conf/httpd.conf — Config หลัก
  • /etc/httpd/conf.d/ — Config เพิ่มเติม (VirtualHost, SSL)
  • /var/www/html/ — Document Root
  • /var/log/httpd/ — Log Files

ตั้งค่า VirtualHost — รันหลายเว็บบน Server เดียว

VirtualHost คือฟีเจอร์ที่ทำให้ Apache รันหลายเว็บไซต์บน Server เครื่องเดียวได้ โดยแยกตาม Domain Name ซึ่งเป็นสิ่งที่ใช้งานจริงแทบทุก Server

สร้าง VirtualHost บน Ubuntu

เนื้อหาของไฟล์ VirtualHost:

คำสั่ง a2ensite และ a2dissite เป็นเครื่องมือเฉพาะของ Debian/Ubuntu ที่ช่วยจัดการ Symlink ใน sites-enabled โดยอัตโนมัติ บน CentOS ให้วาง Config ไว้ใน /etc/httpd/conf.d/ แล้ว Reload ได้เลย

ตั้งค่า mod_rewrite — URL Rewriting

mod_rewrite เป็น Module ที่ใช้สำหรับเปลี่ยนแปลง URL ทำ Redirect และสร้าง Clean URL ซึ่งสำคัญมากทั้งเรื่อง SEO และ User Experience

ตัวอย่างการใช้ .htaccess สำหรับ WordPress หรือ CMS ทั่วไป:

สิ่งสำคัญคือต้องตั้ง AllowOverride All ใน VirtualHost Config ด้วย ไม่งั้น .htaccess จะไม่ทำงาน ถ้าไม่ต้องการใช้ .htaccess (เพื่อประสิทธิภาพที่ดีกว่า) ให้ใส่ Rewrite Rules ใน VirtualHost Config โดยตรงแทน

ติดตั้ง SSL Certificate ด้วย Let's Encrypt

HTTPS เป็นสิ่งจำเป็นสำหรับทุกเว็บไซต์ในปัจจุบัน ทั้งเรื่องความปลอดภัยและ SEO Ranking วิธีที่ง่ายที่สุดคือใช้ Certbot กับ Let's Encrypt ซึ่งให้ SSL Certificate ฟรี

Certbot จะแก้ไข VirtualHost Config ให้อัตโนมัติ สร้างไฟล์ example.com-le-ssl.conf ที่ Listen Port 443 พร้อม Redirect จาก HTTP ไป HTTPS

ตัวอย่าง SSL VirtualHost ที่ Certbot สร้างให้:

แนะนำให้เพิ่ม HSTS Header เพื่อบอก Browser ว่าเว็บนี้ใช้ HTTPS เท่านั้น และตั้ง Cron Job สำหรับ Renew Certificate อัตโนมัติ:

ปรับแต่ง MPM — Multi-Processing Module

MPM เป็นหัวใจของ Apache ที่กำหนดวิธีจัดการ Connection จาก Client มี 3 แบบหลัก:

  • prefork — ใช้ Process แยกกัน เสถียรแต่กิน RAM เยอะ เหมาะกับ mod_php
  • worker — ใช้ Thread ภายใน Process ประหยัด RAM กว่า prefork
  • event — ปรับปรุงจาก worker จัดการ Keep-Alive Connection ได้ดีกว่า แนะนำสำหรับ Production ในปี 2026

ตั้งค่า MPM Event สำหรับ Server ที่มี RAM 8GB:

คำอธิบายค่าสำคัญ:

  • StartServers — จำนวน Process ที่สร้างตอนเริ่มต้น
  • MaxRequestWorkers — จำนวน Connection สูงสุดที่รับได้พร้อมกัน คำนวณจาก ServerLimit × ThreadsPerChild
  • MaxConnectionsPerChild — จำนวน Request สูงสุดต่อ Process ก่อน Recycle ตั้งไว้ป้องกัน Memory Leak
  • ThreadsPerChild — จำนวน Thread ต่อ Process ถ้า Server มี RAM เยอะเพิ่มค่านี้ได้

สูตรคำนวณ MaxRequestWorkers: ดู RAM ที่เหลือหลังหัก OS และ Service อื่น หารด้วย RAM ที่ Apache ใช้ต่อ Process ตรวจสอบด้วย ps aux | grep apache2 | awk '{sum+=$6} END {print sum/NR/1024 " MB"}'

Security Hardening สำหรับ Apache

การตั้งค่าความปลอดภัยเป็นสิ่งที่ต้องทำทันทีหลังติดตั้ง อย่ารอจนมีปัญหา

นอกจากนี้ควรตั้งค่า Firewall ด้วย UFW หรือ iptables ให้เปิดเฉพาะ Port 80, 443 และ SSH เท่านั้น:

Performance Tuning — เพิ่มความเร็ว Apache

Apache Web Server — ติดตั้งและตั้งค่าบน Linux

นอกจาก MPM แล้ว ยังมีอีกหลายจุดที่ปรับแต่งได้:

เปิด Compression ด้วย mod_deflate

ตั้งค่า Cache ด้วย mod_expires

ปิด .htaccess Lookup (ถ้าไม่ใช้)

การตั้ง AllowOverride None จะทำให้ Apache ไม่ต้องค้นหาไฟล์ .htaccess ในทุก Directory ซึ่งช่วยเพิ่มความเร็วได้มาก โดยเฉพาะเว็บที่มีโครงสร้าง Directory ลึกหลายชั้น ย้าย Rules จาก .htaccess ไปใส่ใน VirtualHost Config แทน

เปิด HTTP/2

HTTP/2 รองรับ Multiplexing ทำให้โหลดหลาย Resource พร้อมกันได้เร็วขึ้นมาก แต่ต้องใช้คู่กับ mpm_event เท่านั้น ไม่ทำงานกับ mpm_prefork

Monitoring และ Log Analysis

การดูแล Apache ที่ดีต้องมีระบบ Monitoring ครบถ้วน:

เข้าดูได้ที่ http://localhost/server-status จะเห็นข้อมูล Connection ปัจจุบัน, Workers ที่ใช้งาน, Request per Second และอื่นๆ

สำหรับ Log Analysis แนะนำ GoAccess ซึ่งวิเคราะห์ Log แบบ Real-time:

เปรียบเทียบ Apache กับ Nginx

คุณสมบัติApacheNginx
สถาปัตยกรรมProcess/Thread-basedEvent-driven (Async)
.htaccessรองรับไม่รองรับ
Dynamic Contentประมวลผลเองได้ (mod_php)ต้อง Proxy ไป PHP-FPM
Static Contentเร็วเร็วกว่า
RAM Usageสูงกว่า (prefork)ต่ำกว่า
Config Flexibilityสูงมาก (.htaccess)ต้องแก้ Config แล้ว Reload
Module Systemโหลดแบบ Dynamic ได้ต้อง Compile ใหม่ (ส่วนใหญ่)

ในทางปฏิบัติ หลายองค์กรใช้ Nginx เป็น Reverse Proxy ด้านหน้าแล้วส่ง Request ไปให้ Apache ที่อยู่ด้านหลัง ได้ข้อดีของทั้งสองฝั่งคือ Nginx จัดการ Static Files และ SSL Termination ส่วน Apache จัดการ Dynamic Content ผ่าน mod_php หรือ mod_rewrite

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

Q: Apache กับ Nginx ตัวไหนดีกว่า?
A: ขึ้นอยู่กับ Use Case ถ้าต้องการ .htaccess หรือใช้ mod_php เลือก Apache ถ้าเน้น Reverse Proxy หรือ Static Content เลือก Nginx หรือจะใช้ทั้งคู่ร่วมกันก็ได้
Q: ควรใช้ MPM แบบไหน?
A: แนะนำ mpm_event สำหรับ Production ใหม่ทุกตัว ใช้ prefork เฉพาะกรณีที่ต้องใช้ mod_php แบบ built-in เท่านั้น ถ้าใช้ PHP-FPM ได้ให้ใช้ event แทน
Q: Apache รองรับ Connection พร้อมกันได้กี่ตัว?
A: ขึ้นอยู่กับค่า MaxRequestWorkers และ RAM ของ Server ตั้งค่า mpm_event บน Server RAM 8GB รับได้ประมาณ 400-800 Connection พร้อมกัน ถ้าต้องการมากกว่านี้ต้อง Scale แบบ Horizontal
Q: Let's Encrypt Certificate หมดอายุทุกกี่วัน?
A: หมดอายุทุก 90 วัน แต่ Certbot จะ Renew ให้อัตโนมัติผ่าน Cron Job หรือ Systemd Timer ตรวจสอบด้วยคำสั่ง certbot certificates ว่า Certificate ยังไม่หมดอายุ

สรุป

Apache HTTP Server ยังคงเป็น Web Server ที่เชื่อถือได้และเหมาะกับงาน Production ในปี 2026 จุดเด่นคือ Module System ที่ยืดหยุ่น, รองรับ .htaccess, Community ขนาดใหญ่ และ Documentation ที่ครบถ้วน

สิ่งสำคัญที่ต้องจำ:

  • ใช้ mpm_event แทน prefork สำหรับ Production ใหม่
  • ติดตั้ง SSL ด้วย Let's Encrypt ฟรีไม่มีข้อแม้
  • ตั้งค่า Security Headers ตั้งแต่วันแรก
  • เปิด mod_deflate และ mod_expires เพื่อเพิ่มความเร็ว
  • Monitor ด้วย mod_status และวิเคราะห์ Log เป็นประจำ
  • ปิด .htaccess Lookup ถ้าไม่จำเป็นต้องใช้ จะเร็วขึ้นอย่างเห็นได้ชัด

หวังว่าบทความนี้จะช่วยให้ทุกคนติดตั้งและตั้งค่า Apache ได้อย่างมั่นใจครับ ถ้ามีคำถามเพิ่มเติมสอบถามได้เลย

อ.บอม (Bom)
อ. บอม (Bom)
IT Expert & Founder of SiamCafe.net Since 1997
ประสบการณ์ IT 30+ ปี, Forex 13+ ปี, XM VIP Partner

Apache Web Server

Apache Web Server เป็นส่วนสำคัญที่ช่วยเพิ่มประสิทธิภาพการทำงานของระบบ การตั้งค่าอย่างถูกต้องจะช่วยลดปัญหาและเพิ่มความเสถียรให้กับ Infrastructure โดยรวม