ติดตั้ง Apache บน Ubuntu/CentOS ตั้งค่า VirtualHost, mod_rewrite, SSL, MPM tuning พร้อมตัวอย่าง Config จริงที่ใช้ได้ทันที
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
การติดตั้งบน Ubuntu หรือ Debian ทำได้ง่ายผ่าน apt package manager ดังนี้
# อัพเดท package list
sudo apt update
# ติดตั้ง Apache2
sudo apt install apache2 -y
# เปิดใช้งานและตั้งค่าให้ start อัตโนมัติ
sudo systemctl enable apache2
sudo systemctl start apache2
# ตรวจสอบสถานะ
sudo systemctl status apache2
หลังติดตั้งเสร็จ Apache จะเริ่มทำงานที่ Port 80 ทันที เปิด Browser ไปที่ http://your-server-ip จะเห็นหน้า Default Page ของ Apache
โครงสร้างไฟล์สำคัญบน Ubuntu:
บน CentOS หรือ RHEL-based distros ใช้ dnf หรือ yum:
# ติดตั้ง httpd
sudo dnf install httpd -y
# เปิดใช้งาน
sudo systemctl enable httpd
sudo systemctl start httpd
# เปิด Firewall สำหรับ HTTP/HTTPS
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reload
โครงสร้างไฟล์บน CentOS แตกต่างจาก Ubuntu เล็กน้อย:
VirtualHost คือฟีเจอร์ที่ทำให้ Apache รันหลายเว็บไซต์บน Server เครื่องเดียวได้ โดยแยกตาม Domain Name ซึ่งเป็นสิ่งที่ใช้งานจริงแทบทุก Server
# สร้าง Directory สำหรับเว็บไซต์
sudo mkdir -p /var/www/example.com/public_html
sudo chown -R $USER:$USER /var/www/example.com
# สร้างไฟล์ VirtualHost
sudo nano /etc/apache2/sites-available/example.com.conf
เนื้อหาของไฟล์ VirtualHost:
<VirtualHost *:80>
ServerName example.com
ServerAlias www.example.com
ServerAdmin admin@example.com
DocumentRoot /var/www/example.com/public_html
<Directory /var/www/example.com/public_html>
Options -Indexes +FollowSymLinks
AllowOverride All
Require all granted
</Directory>
ErrorLog /example.com-error.log
CustomLog /example.com-access.log combined
</VirtualHost>
# เปิดใช้งาน VirtualHost
sudo a2ensite example.com.conf
# ปิด Default Site (ถ้าไม่ต้องการ)
sudo a2dissite 000-default.conf
# ตรวจสอบ Syntax
sudo apache2ctl configtest
# Reload Apache
sudo systemctl reload apache2
คำสั่ง a2ensite และ a2dissite เป็นเครื่องมือเฉพาะของ Debian/Ubuntu ที่ช่วยจัดการ Symlink ใน sites-enabled โดยอัตโนมัติ บน CentOS ให้วาง Config ไว้ใน /etc/httpd/conf.d/ แล้ว Reload ได้เลย
mod_rewrite เป็น Module ที่ใช้สำหรับเปลี่ยนแปลง URL ทำ Redirect และสร้าง Clean URL ซึ่งสำคัญมากทั้งเรื่อง SEO และ User Experience
# เปิดใช้งาน mod_rewrite (Ubuntu)
sudo a2enmod rewrite
sudo systemctl restart apache2
ตัวอย่างการใช้ .htaccess สำหรับ WordPress หรือ CMS ทั่วไป:
# เปิด Rewrite Engine
RewriteEngine On
# บังคับใช้ HTTPS
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L, R=301]
# บังคับใช้ www
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^(.*)$ https://www.%{HTTP_HOST}/$1 [R=301, L]
# Clean URL สำหรับ PHP
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?q=$1 [L, QSA]
สิ่งสำคัญคือต้องตั้ง AllowOverride All ใน VirtualHost Config ด้วย ไม่งั้น .htaccess จะไม่ทำงาน ถ้าไม่ต้องการใช้ .htaccess (เพื่อประสิทธิภาพที่ดีกว่า) ให้ใส่ Rewrite Rules ใน VirtualHost Config โดยตรงแทน
HTTPS เป็นสิ่งจำเป็นสำหรับทุกเว็บไซต์ในปัจจุบัน ทั้งเรื่องความปลอดภัยและ SEO Ranking วิธีที่ง่ายที่สุดคือใช้ Certbot กับ Let's Encrypt ซึ่งให้ SSL Certificate ฟรี
# ติดตั้ง Certbot (Ubuntu)
sudo apt install certbot python3-certbot-apache -y
# ขอ SSL Certificate
sudo certbot --apache -d example.com -d www.example.com
# ทดสอบ Auto-Renew
sudo certbot renew --dry-run
Certbot จะแก้ไข VirtualHost Config ให้อัตโนมัติ สร้างไฟล์ example.com-le-ssl.conf ที่ Listen Port 443 พร้อม Redirect จาก HTTP ไป HTTPS
ตัวอย่าง SSL VirtualHost ที่ Certbot สร้างให้:
<VirtualHost *:443>
ServerName example.com
ServerAlias www.example.com
DocumentRoot /var/www/example.com/public_html
SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/example.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem
Include /etc/letsencrypt/options-ssl-apache.conf
Header always set Strict-Transport-Security "max-age=63072000"
</VirtualHost>
แนะนำให้เพิ่ม HSTS Header เพื่อบอก Browser ว่าเว็บนี้ใช้ HTTPS เท่านั้น และตั้ง Cron Job สำหรับ Renew Certificate อัตโนมัติ:
# เพิ่มใน crontab
0 3 * * * /usr/bin/certbot renew --quiet --post-hook "systemctl reload apache2"
MPM เป็นหัวใจของ Apache ที่กำหนดวิธีจัดการ Connection จาก Client มี 3 แบบหลัก:
# ตรวจสอบ MPM ที่ใช้อยู่
apachectl -V | grep MPM
# เปลี่ยนเป็น event MPM (Ubuntu)
sudo a2dismod mpm_prefork
sudo a2enmod mpm_event
sudo systemctl restart apache2
ตั้งค่า MPM Event สำหรับ Server ที่มี RAM 8GB:
# /etc/apache2/mods-available/mpm_event.conf
<IfModule mpm_event_module>
StartServers 4
MinSpareThreads 75
MaxSpareThreads 250
ThreadLimit 64
ThreadsPerChild 25
MaxRequestWorkers 400
MaxConnectionsPerChild 10000
ServerLimit 16
</IfModule>
คำอธิบายค่าสำคัญ:
สูตรคำนวณ MaxRequestWorkers: ดู RAM ที่เหลือหลังหัก OS และ Service อื่น หารด้วย RAM ที่ Apache ใช้ต่อ Process ตรวจสอบด้วย ps aux | grep apache2 | awk '{sum+=$6} END {print sum/NR/1024 " MB"}'
การตั้งค่าความปลอดภัยเป็นสิ่งที่ต้องทำทันทีหลังติดตั้ง อย่ารอจนมีปัญหา
# /etc/apache2/conf-available/security.conf
# ซ่อน Apache Version
ServerTokens Prod
ServerSignature Off
# ปิด Directory Listing
<Directory /var/www/>
Options -Indexes
</Directory>
# ป้องกัน Clickjacking
Header always set X-Frame-Options "SAMEORIGIN"
# ป้องกัน XSS
Header always set X-Content-Type-Options "nosniff"
Header always set X-XSS-Protection "1; mode=block"
# Content Security Policy
Header always set Content-Security-Policy "default-src 'self'; script-src 'self' 'unsafe-inline'"
# ปิด HTTP TRACE Method
TraceEnable Off
# จำกัดขนาด Request Body (10MB)
LimitRequestBody 10485760
# เปิดใช้งาน headers module
sudo a2enmod headers
sudo a2enconf security
sudo systemctl reload apache2
นอกจากนี้ควรตั้งค่า Firewall ด้วย UFW หรือ iptables ให้เปิดเฉพาะ Port 80, 443 และ SSH เท่านั้น:
sudo ufw allow 'Apache Full'
sudo ufw allow ssh
sudo ufw enable
นอกจาก MPM แล้ว ยังมีอีกหลายจุดที่ปรับแต่งได้:
sudo a2enmod deflate
# /etc/apache2/mods-available/deflate.conf
<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/html text/plain text/xml
AddOutputFilterByType DEFLATE text/css text/javascript
AddOutputFilterByType DEFLATE application/javascript application/json
AddOutputFilterByType DEFLATE application/xml application/xhtml+xml
DeflateCompressionLevel 6
</IfModule>
sudo a2enmod expires
<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType image/jpeg "access plus 1 year"
ExpiresByType image/png "access plus 1 year"
ExpiresByType image/webp "access plus 1 year"
ExpiresByType text/css "access plus 1 month"
ExpiresByType application/javascript "access plus 1 month"
ExpiresByType text/html "access plus 1 hour"
</IfModule>
การตั้ง AllowOverride None จะทำให้ Apache ไม่ต้องค้นหาไฟล์ .htaccess ในทุก Directory ซึ่งช่วยเพิ่มความเร็วได้มาก โดยเฉพาะเว็บที่มีโครงสร้าง Directory ลึกหลายชั้น ย้าย Rules จาก .htaccess ไปใส่ใน VirtualHost Config แทน
# เปิด HTTP/2 (ต้องใช้กับ HTTPS)
sudo a2enmod http2
# เพิ่มใน VirtualHost
Protocols h2 h2c http/1.1
HTTP/2 รองรับ Multiplexing ทำให้โหลดหลาย Resource พร้อมกันได้เร็วขึ้นมาก แต่ต้องใช้คู่กับ mpm_event เท่านั้น ไม่ทำงานกับ mpm_prefork
การดูแล Apache ที่ดีต้องมีระบบ Monitoring ครบถ้วน:
# เปิด mod_status สำหรับ Monitoring
sudo a2enmod status
# เพิ่มใน Config
<Location "/server-status">
SetHandler server-status
Require ip 127.0.0.1
Require ip 192.168.1.0/24
</Location>
เข้าดูได้ที่ http://localhost/server-status จะเห็นข้อมูล Connection ปัจจุบัน, Workers ที่ใช้งาน, Request per Second และอื่นๆ
สำหรับ Log Analysis แนะนำ GoAccess ซึ่งวิเคราะห์ Log แบบ Real-time:
# ติดตั้ง GoAccess
sudo apt install goaccess -y
# วิเคราะห์ Access Log แบบ Real-time
goaccess /var/log/apache2/access.log --log-format=COMBINED -o /var/www/html/report.html --real-time-html
| คุณสมบัติ | Apache | Nginx |
|---|---|---|
| สถาปัตยกรรม | Process/Thread-based | Event-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
Apache HTTP Server ยังคงเป็น Web Server ที่เชื่อถือได้และเหมาะกับงาน Production ในปี 2026 จุดเด่นคือ Module System ที่ยืดหยุ่น, รองรับ .htaccess, Community ขนาดใหญ่ และ Documentation ที่ครบถ้วน
สิ่งสำคัญที่ต้องจำ:
หวังว่าบทความนี้จะช่วยให้ทุกู้คืนติดตั้งและตั้งค่า Apache ได้อย่างมั่นใจครับ ถ้ามีคำถามเพิ่มเติมสอบถามได้เลย

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