- 1 1. บทนำ
- 2 2. การติดตั้งและตั้งค่าเบื้องต้น Ubuntu
- 3 3. การติดตั้งและตั้งค่า Apache เบื้องต้น
- 4 4. การตั้งค่า Virtual Host (โฮสต์หลายโดเมน)
- 5 5. การติดตั้ง SSL/TLS (เปิดใช้งาน HTTPS)
- 6 6. การเสริมความปลอดภัยให้เว็บเซิร์ฟเวอร์
- 7 7. การเพิ่มประสิทธิภาพ (Performance Optimization)
- 8 8. การแก้ปัญหา (Troubleshooting)
- 9 9. สรุป
1. บทนำ
Ubuntu Web Server คืออะไร?
เว็บเซิร์ฟเวอร์คือระบบที่ให้บริการเว็บไซต์บนอินเทอร์เน็ต ซอฟต์แวร์เว็บเซิร์ฟเวอร์ยอดนิยม ได้แก่ Apache, Nginx, LiteSpeed แต่บน Ubuntu นั้น Apache ได้รับความนิยมมากที่สุด
Ubuntu เป็นระบบปฏิบัติการที่ มีขนาดเล็ก เสถียร และเป็นโอเพ่นซอร์ส จึงเหมาะทั้งสำหรับผู้ใช้งานทั่วไปและองค์กร โดยเฉพาะการสร้าง LAMP Stack (Linux, Apache, MySQL/MariaDB, PHP) ทำได้ง่ายและเหมาะสำหรับการใช้งานเว็บแอปพลิเคชันและเว็บไซต์ทุกประเภท
ผู้อ่านที่เหมาะกับบทความนี้
บทความนี้เหมาะสำหรับ ผู้เริ่มต้นที่ต้องการสร้างเว็บเซิร์ฟเวอร์บน Ubuntu โดยจะอธิบายวิธีติดตั้ง Ubuntu, ติดตั้ง Apache, ตั้งค่า Virtual Host และ SSL Certificate รวมถึงเทคนิคการปรับแต่งและเสริมความปลอดภัยอย่างละเอียด
สิ่งที่จะได้เรียนรู้จากบทความนี้
- วิธีติดตั้งและตั้งค่า Apache เป็นเว็บเซิร์ฟเวอร์บน Ubuntu
- การตั้งค่า Virtual Host และการจัดการหลายเว็บไซต์ในเครื่องเดียว
- วิธีติดตั้งSSL ฟรีด้วย Let’s Encrypt
- การปรับปรุงความปลอดภัยและเพิ่มประสิทธิภาพของเว็บเซิร์ฟเวอร์
- เทคนิคการแก้ไขปัญหาที่พบบ่อย
2. การติดตั้งและตั้งค่าเบื้องต้น Ubuntu
สเปกขั้นต่ำที่แนะนำ
สำหรับใช้งาน Ubuntu เป็นเว็บเซิร์ฟเวอร์ แนะนำสเปกขั้นต่ำดังนี้
| รายการ | ขั้นต่ำ | แนะนำ |
|---|---|---|
| OS | Ubuntu 22.04 LTS | Ubuntu 22.04 LTS |
| CPU | 1GHz ขึ้นไป | 2GHz ขึ้นไป |
| RAM | 512MB | 2GB ขึ้นไป |
| Storage | 10GB ขึ้นไป | 20GB ขึ้นไป |
| Network | เชื่อมต่ออินเทอร์เน็ต | แนะนำเป็นอินเทอร์เน็ตความเร็วสูง |
ดาวน์โหลดและติดตั้ง Ubuntu
Ubuntu สามารถดาวน์โหลดได้จาก https://ubuntu.com/download/server ให้ดาวน์โหลดไฟล์ ISO แล้วติดตั้งผ่าน VirtualBox หรือ VMware (เครื่องเสมือน) หรือจะติดตั้งลงใน เซิร์ฟเวอร์จริงหรือ VPS ก็ได้
ขั้นตอนการติดตั้ง:
- สร้างสื่อสำหรับติดตั้ง (Installation Media)
- ใช้ USB (แนะนำใช้เครื่องมืออย่าง Rufus)
- หรือ mount ไฟล์ ISO บน Virtual Machine
- ดำเนินการติดตั้งตาม Wizard
- เลือกภาษาเป็น “ไทย” หรือที่ต้องการ
- ตรวจสอบการเชื่อมต่อเครือข่าย
- ตั้งชื่อผู้ใช้และรหัสผ่าน
- เลือกติดตั้ง SSH Server (สามารถติดตั้งทีหลังได้)
- หลังติดตั้ง OS เสร็จ ให้รีสตาร์ท
- เข้าสู่ระบบและเริ่มตั้งค่าเบื้องต้น
การตั้งค่าเบื้องต้นหลังติดตั้ง Ubuntu
หลังจากติดตั้ง Ubuntu เสร็จควรตั้งค่าต่อไปนี้ทันที
- อัปเดตแพ็กเกจให้เป็นเวอร์ชันล่าสุด
sudo apt update && sudo apt upgrade -y→ ติดตั้งแพตช์ความปลอดภัยและอัปเดตซอฟต์แวร์ล่าสุด
- ตั้งค่า Timezone
sudo timedatectl set-timezone Asia/Bangkok→ ตั้งเวลาเป็นเวลาประเทศไทย (ICT)
- เปิดใช้งาน Firewall
sudo ufw enable→ เปิด Firewall เพื่อป้องกันการเข้าถึงที่ไม่พึงประสงค์
- ตั้งค่า SSH (สำหรับรีโมต)
- ตรวจสอบว่า SSH ทำงานอยู่หรือไม่
sudo systemctl status ssh - ถ้ายังไม่ทำงาน ให้เปิดใช้
sudo systemctl enable --now ssh
เมื่อเสร็จสิ้นขั้นตอนเหล่านี้ Ubuntu Server ของคุณก็พร้อมสำหรับการใช้งานเป็นเว็บเซิร์ฟเวอร์แล้ว
3. การติดตั้งและตั้งค่า Apache เบื้องต้น
Apache คืออะไร?
Apache (ชื่อเต็ม: Apache HTTP Server) คือซอฟต์แวร์เว็บเซิร์ฟเวอร์โอเพ่นซอร์สที่ได้รับความนิยมทั่วโลก มีจุดเด่นเรื่องความเสถียร ความยืดหยุ่น และความปลอดภัย มากกว่า 30% ของเซิร์ฟเวอร์ทั่วโลกใช้ Apache
จุดเด่นของ Apache:
- ฟรีและโอเพ่นซอร์ส
- โครงสร้างแบบโมดูล (Module) ติดตั้งส่วนขยายได้ง่าย
- รองรับ SSL/TLS ทำเว็บไซต์ HTTPS ได้
- สามารถสร้างVirtual Host สำหรับโฮสต์หลายเว็บในเครื่องเดียว
ติดตั้ง Apache บน Ubuntu
บน Ubuntu สามารถติดตั้ง Apache ได้ง่าย ๆ ด้วยคำสั่ง apt
ติดตั้ง Apache
sudo apt update
sudo apt install apache2 -yตรวจสอบการติดตั้ง
หลังติดตั้ง สามารถตรวจสอบเวอร์ชัน Apache ได้ดังนี้
apache2 -vตัวอย่างผลลัพธ์:
Server version: Apache/2.4.52 (Ubuntu)
Server built: 2023-07-01T12:34:56ถ้าเห็นเวอร์ชันแสดง แสดงว่าติดตั้งเรียบร้อย
สั่งเริ่ม/หยุด/รีสตาร์ท Apache
ควบคุม Apache ด้วยคำสั่ง systemctl
สั่งเริ่ม Apache
sudo systemctl start apache2Apache จะเริ่มทำงานและรับคำขอเว็บได้ทันที
ตั้งให้ Apache เริ่มอัตโนมัติ
sudo systemctl enable apache2ตรวจสอบสถานะ Apache
sudo systemctl status apache2ถ้า Apache ทำงานปกติจะแสดงข้อความ “active (running)”
สั่งรีสตาร์ทหรือหยุด Apache
กรณีตั้งค่าหรืออัปเดต Config ใช้คำสั่งนี้
sudo systemctl restart apache2หยุดชั่วคราว
sudo systemctl stop apache2ทดสอบการทำงานของ Apache
หลังติดตั้งให้ลองเข้าดูหน้าเว็บด้วย IP Address ของเซิร์ฟเวอร์
1. ตรวจสอบ IP Address ของเซิร์ฟเวอร์
hostname -Iหรือดู IP ภายนอก
curl ifconfig.me2. ทดสอบในเว็บเบราว์เซอร์
เปิดเบราว์เซอร์แล้วพิมพ์
http://<IP ของเซิร์ฟเวอร์>/หรือถ้าทดสอบในเครื่องเดียวกันใช้
http://localhost/ควรจะเห็นหน้า “Apache2 Ubuntu Default Page” และข้อความ It works! แสดงว่า Apache ทำงานปกติ
การตั้งค่า Firewall สำหรับ Apache
บน Ubuntu นิยมใช้ UFW (Uncomplicated Firewall) เพื่อจัดการ Firewall หากเพิ่งติดตั้ง Apache ใหม่ อาจต้องเปิดพอร์ต HTTP (80) และ HTTPS (443) เพื่อให้เข้าถึงเว็บได้
อนุญาตให้ Apache ผ่าน Firewall
sudo ufw allow 'Apache'หรือถ้าต้องการเปิดทั้ง HTTP/HTTPS ใช้
sudo ufw allow 'Apache Full'ตรวจสอบสถานะ Firewall
sudo ufw statusตัวอย่างผลลัพธ์:
Status: active
To Action From
-- ------ ----
Apache ALLOW Anywhere
Apache (v6) ALLOW Anywhere (v6)ถ้าแสดงเช่นนี้แปลว่า Apache เข้าถึงได้จากภายนอก
สรุปเบื้องต้น
คุณได้ ติดตั้ง Apache บน Ubuntu และตั้งค่าพื้นฐานครบแล้ว ต่อไปนี้จะกล่าวถึงวิธีจัดการ Virtual Host สำหรับหลายเว็บไซต์
4. การตั้งค่า Virtual Host (โฮสต์หลายโดเมน)
Virtual Host คืออะไร?
Virtual Host คือ การรันหลายโดเมนหรือเว็บไซต์บน Apache Server เดียวกัน เช่น สามารถให้ example.com และ test.com อยู่ในเซิร์ฟเวอร์เดียวได้
ชนิดของ Virtual Host มี 2 แบบ:
- Name-based Virtual Host – หลายโดเมนอยู่บน IP เดียว (เป็นแบบที่นิยมใช้ที่สุด)
- โฮสต์หลายเว็บด้วย IP เดียว
- เหมาะกับเว็บโฮสติ้งทั่วไป
- IP-based Virtual Host – ใช้หลาย IP address ในเซิร์ฟเวอร์เดียว
- แต่ละโดเมนใช้ IP แยกกัน
- เหมาะสำหรับองค์กรหรือบริการเฉพาะ
โดยทั่วไปใช้แบบ Name-based เป็นหลัก
ขั้นตอนการตั้งค่า Virtual Host
1. สร้างโฟลเดอร์สำหรับแต่ละเว็บไซต์
sudo mkdir -p /var/www/example.com/public_html
sudo mkdir -p /var/www/test.com/public_html2. เปลี่ยนเจ้าของโฟลเดอร์
sudo chown -R www-data:www-data /var/www/example.com/public_html
sudo chown -R www-data:www-data /var/www/test.com/public_html3. สร้างไฟล์ index.html ทดสอบ
echo "<h1>Welcome to example.com</h1>" | sudo tee /var/www/example.com/public_html/index.html
echo "<h1>Welcome to test.com</h1>" | sudo tee /var/www/test.com/public_html/index.html4. สร้างไฟล์ตั้งค่า Virtual Host
ไฟล์จะอยู่ที่ /etc/apache2/sites-available/
ตั้งค่า Virtual Host สำหรับ example.com
sudo nano /etc/apache2/sites-available/example.com.confใส่เนื้อหานี้:
<VirtualHost *:80>
ServerAdmin admin@example.com
ServerName example.com
ServerAlias www.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 ${APACHE_LOG_DIR}/example.com_error.log
CustomLog ${APACHE_LOG_DIR}/example.com_access.log combined
</VirtualHost>ตั้งค่า Virtual Host สำหรับ test.com
sudo nano /etc/apache2/sites-available/test.com.confใส่เนื้อหานี้:
<VirtualHost *:80>
ServerAdmin admin@test.com
ServerName test.com
ServerAlias www.test.com
DocumentRoot /var/www/test.com/public_html
<Directory /var/www/test.com/public_html>
Options -Indexes +FollowSymLinks
AllowOverride All
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/test.com_error.log
CustomLog ${APACHE_LOG_DIR}/test.com_access.log combined
</VirtualHost>5. เปิดใช้งาน Virtual Host
sudo a2ensite example.com.conf
sudo a2ensite test.com.confทดสอบ Syntax
sudo apachectl configtestถ้าขึ้นว่า Syntax OK ให้รีสตาร์ท Apache
sudo systemctl restart apache26. ทดสอบในเครื่อง (แก้ไข hosts file)
sudo nano /etc/hostsเพิ่มบรรทัด:
127.0.0.1 example.com
127.0.0.1 test.com บันทึกไฟล์ จากนั้นลองเข้า http://example.com/ หรือ http://test.com/ ในเบราว์เซอร์ ถ้าเห็นข้อความ Welcome ตามที่ตั้งไว้ แปลว่า Virtual Host ใช้งานได้สำเร็จ
5. การติดตั้ง SSL/TLS (เปิดใช้งาน HTTPS)
SSL/TLS คืออะไร?
SSL (Secure Sockets Layer) และ TLS (Transport Layer Security) คือเทคโนโลยีสำหรับเข้ารหัสข้อมูลเพื่อความปลอดภัยในการรับส่งข้อมูลผ่านอินเทอร์เน็ต
ข้อดีของการติดตั้ง SSL/TLS
- ✅ ข้อมูลถูกเข้ารหัส ลดความเสี่ยงถูกดักฟังหรือเปลี่ยนแปลง
- ✅ ช่วยเพิ่มอันดับ SEO ของ Google (Google ให้ความสำคัญเว็บไซต์ HTTPS)
- ✅ เบราว์เซอร์ไม่แสดงข้อความเตือน “ไม่ปลอดภัย”
- ✅ ปกป้องธุรกรรมออนไลน์และข้อมูลเข้าสู่ระบบ
ปัจจุบันแนะนำให้ใช้ TLS (TLS 1.2/1.3) เท่านั้น (SSL 3.0 เลิกใช้งานแล้ว)
การติดตั้ง SSL ฟรีด้วย Let’s Encrypt
Let’s Encrypt เป็นหน่วยงานออกใบรับรอง SSL ฟรี สามารถติดตั้งบน Apache ได้ง่ายโดยใช้ certbot
ติดตั้ง Certbot
sudo apt update
sudo apt install certbot python3-certbot-apache -yตั้งค่า SSL อัตโนมัติบน Apache
ใช้คำสั่งนี้เพื่อขอใบรับรองและตั้งค่าให้ Apache อัตโนมัติ:
sudo certbot --apache -d example.com -d www.example.comกระบวนการจะประกอบด้วย:
- ยืนยันความเป็นเจ้าของโดเมน
- ออกใบรับรอง SSL
- ตั้งค่า SSL บน Apache
- ตั้งค่า Redirect เป็น HTTPS
ตรวจสอบการใช้งาน SSL
เปิดเบราว์เซอร์แล้วเข้า https://example.com/ ถ้าเห็นไอคอนรูปกุญแจในช่อง URL แสดงว่า HTTPS ทำงานปกติ
ตั้งค่า SSL ด้วยตนเอง (Manual)
ถ้าไม่ใช้ certbot --apache สามารถตั้งค่าด้วยมือได้ดังนี้:
1. เปิดใช้งานโมดูล SSL
sudo a2enmod ssl
sudo systemctl restart apache22. แก้ไขไฟล์ Virtual Host สำหรับ SSL
sudo nano /etc/apache2/sites-available/example.com-le-ssl.confเนื้อหาตัวอย่าง:
<VirtualHost *:443>
ServerAdmin admin@example.com
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
<Directory /var/www/example.com/public_html>
Options -Indexes +FollowSymLinks
AllowOverride All
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/example.com_error.log
CustomLog ${APACHE_LOG_DIR}/example.com_access.log combined
</VirtualHost>3. เปิดใช้และรีสตาร์ท Apache
sudo a2ensite example.com-le-ssl.conf
sudo systemctl restart apache2การตั้งค่าอัปเดตใบรับรองอัตโนมัติ
ใบรับรอง Let’s Encrypt มีอายุ 90 วัน ควรตั้งค่าให้ต่ออายุอัตโนมัติ
1. ทดสอบการต่ออายุด้วย certbot
sudo certbot renew --dry-run2. ตรวจสอบตารางเวลาอัปเดต
sudo systemctl list-timers | grep certbotแก้ปัญหา SSL ที่พบบ่อย
1. Apache ไม่โหลดใบรับรอง
sudo systemctl restart apache2
sudo apachectl configtest2. ใบรับรองหมดอายุ
sudo certbot renew --force-renewal3. ไม่ผ่านการยืนยัน Let’s Encrypt
ตรวจสอบ Firewall ให้เปิดพอร์ต 80/443:
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw reloadสรุป
- พื้นฐาน SSL/TLS
- ตั้งค่า SSL ฟรีด้วย Let’s Encrypt และ Apache
- การอัปเดตใบรับรองอัตโนมัติ
- แก้ไขปัญหาทั่วไปเกี่ยวกับ SSL
6. การเสริมความปลอดภัยให้เว็บเซิร์ฟเวอร์
การตั้งค่า Firewall (UFW)
บน Ubuntu แนะนำให้ใช้ UFW (Uncomplicated Firewall) เพื่อบล็อกการเข้าถึงที่ไม่จำเป็น
ตรวจสอบสถานะปัจจุบันของ Firewall
sudo ufw statusอนุญาตเฉพาะพอร์ตที่จำเป็น
sudo ufw default deny incoming
sudo ufw default allow outgoing- SSH (พอร์ต 22)
sudo ufw allow 22/tcp- HTTP (พอร์ต 80)
sudo ufw allow 80/tcp- HTTPS (พอร์ต 443)
sudo ufw allow 443/tcpเปิดใช้งาน Firewall
sudo ufw enableเสริมความปลอดภัย SSH
SSH เป็นเป้าหมายการโจมตีแบบ brute-force จึงควรปรับแต่งเพื่อความปลอดภัย
เปลี่ยนพอร์ต SSH และปิด root login
sudo nano /etc/ssh/sshd_configแก้ไขค่า:
Port 2222 # เปลี่ยนจาก 22 เป็นพอร์ตอื่น
PermitRootLogin no # ไม่อนุญาต root login
PasswordAuthentication no # ปิด password login ใช้ SSH key แทนบันทึกแล้วรีสตาร์ท SSH:
sudo systemctl restart sshติดตั้ง Fail2Ban เพื่อป้องกัน SSH
sudo apt install fail2ban -yตั้งค่า:
sudo nano /etc/fail2ban/jail.localเพิ่มบรรทัดนี้:
[sshd]
enabled = true
port = 2222
maxretry = 3
bantime = 600เปิดใช้งานและเริ่ม Fail2Ban:
sudo systemctl restart fail2ban
sudo systemctl enable fail2banเสริมความปลอดภัย Apache
ซ่อนข้อมูลเวอร์ชัน Apache
sudo nano /etc/apache2/conf-available/security.confตั้งค่าต่อไปนี้:
ServerTokens Prod
ServerSignature Offsudo systemctl restart apache2ปิด Directory Listing
sudo nano /etc/apache2/apache2.confค้นหาและลบ Indexes ในบรรทัดนี้:
<Directory /var/www/>
Options -Indexes +FollowSymLinks
AllowOverride All
Require all granted
</Directory>sudo systemctl restart apache2ปิดใช้งาน Apache Modules ที่ไม่จำเป็น
sudo a2dismod autoindex
sudo a2dismod status
sudo systemctl restart apache2เพิ่ม Security Headers
เปิดใช้ mod_headers
sudo a2enmod headers
sudo systemctl restart apache2เพิ่ม Header ในไฟล์ Virtual Host
sudo nano /etc/apache2/sites-available/example.com.confเพิ่มใน <VirtualHost>:
<IfModule mod_headers.c>
Header always set X-Content-Type-Options "nosniff"
Header always set X-XSS-Protection "1; mode=block"
Header always set X-Frame-Options "SAMEORIGIN"
Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains"
</IfModule>sudo systemctl restart apache2สรุป
- การตั้งค่า UFW (Firewall)
- ป้องกัน SSH (เปลี่ยนพอร์ต/ใช้ Fail2Ban)
- เสริมความปลอดภัย Apache (ซ่อนเวอร์ชัน, ปิด directory listing, เพิ่ม security header)
7. การเพิ่มประสิทธิภาพ (Performance Optimization)
ปรับจูน Apache ให้เร็วขึ้น
การตั้งค่าปรับจูนช่วยให้ Apache ทำงานได้เร็วขึ้นและรองรับโหลดสูง
เลือก MPM (Multi-Processing Module) ที่เหมาะสม
apachectl -M | grep mpmถ้าเป็น mpm_prefork_module สามารถเปลี่ยนเป็น mpm_event เพื่อประสิทธิภาพสูงขึ้นได้
sudo a2dismod mpm_prefork
sudo a2enmod mpm_event
sudo systemctl restart apache2เปิดใช้งาน KeepAlive
sudo nano /etc/apache2/apache2.confเพิ่มหรือแก้ไขบรรทัด:
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 5sudo systemctl restart apache2ตั้งค่า Cache
เปิดใช้ mod_expires (Browser Cache)
sudo a2enmod expires
sudo systemctl restart apache2เพิ่มในไฟล์ Virtual Host:
<IfModule mod_expires.c>
ExpiresActive On
ExpiresDefault "access plus 1 month"
ExpiresByType image/jpg "access plus 1 year"
ExpiresByType image/jpeg "access plus 1 year"
ExpiresByType image/png "access plus 1 year"
ExpiresByType text/css "access plus 1 month"
ExpiresByType application/javascript "access plus 1 month"
</IfModule>sudo systemctl restart apache2ใช้ Server Cache (mod_cache)
sudo a2enmod cache cache_disk
sudo systemctl restart apache2เพิ่มใน Virtual Host:
<IfModule mod_cache.c>
CacheEnable disk /
CacheRoot /var/cache/apache2/mod_cache_disk
CacheDefaultExpire 86400
</IfModule>sudo systemctl restart apache2บีบอัดข้อมูลด้วย mod_deflate
sudo a2enmod deflate
sudo systemctl restart apache2เพิ่มใน Virtual Host:
<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/html text/plain text/xml
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE image/svg+xml
</IfModule>sudo systemctl restart apache2จำกัด Request ด้วย mod_ratelimit
sudo a2enmod ratelimit
sudo systemctl restart apache2เพิ่มใน Virtual Host:
<Location />
SetOutputFilter RATE_LIMIT
SetEnv rate-limit 200
</Location>sudo systemctl restart apache2สรุป
- จูน Apache (เลือก MPM/KeepAlive/Cache/บีบอัดข้อมูล/จำกัด request)
- ช่วยให้เว็บโหลดไว รองรับผู้ใช้จำนวนมากขึ้น
8. การแก้ปัญหา (Troubleshooting)
Apache ไม่สามารถเริ่มทำงานหรือหยุดเอง
ตรวจสอบสถานะ Apache
sudo systemctl status apache2หากขึ้น Active: failed แปลว่ามีข้อผิดพลาดเกิดขึ้น
ดูบันทึกข้อผิดพลาด (Error Log)
sudo journalctl -xe
sudo tail -f /var/log/apache2/error.logตรวจสอบพอร์ตที่ใช้งาน
sudo netstat -tulnp | grep ':80'sudo lsof -i:80ถ้ามีโปรแกรมอื่นใช้พอร์ต 80 ให้เปลี่ยนพอร์ตหรือหยุดโปรแกรมนั้น
ปัญหาเกี่ยวกับ SSL Certificate
ใบรับรอง SSL หมดอายุ
sudo certbot renew --force-renewalข้อผิดพลาด AH02572: Failed to configure at least one certificate
เปิดไฟล์ /etc/apache2/sites-available/example.com-le-ssl.conf แล้วตรวจสอบ:
SSLCertificateFile /etc/letsencrypt/live/example.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pemถ้าถูกต้องแล้วให้รีสตาร์ท Apache
sudo systemctl restart apache2เว็บไซต์แสดงข้อผิดพลาด 403, 404, 500
403 Forbidden
sudo chown -R www-data:www-data /var/www/example.com/public_html
sudo chmod -R 755 /var/www/example.com/public_html404 Not Found
ตรวจสอบว่า DocumentRoot ถูกต้อง:
DocumentRoot /var/www/example.com/public_htmlถ้า mod_rewrite ยังไม่ได้เปิด:
sudo a2enmod rewrite
sudo systemctl restart apache2500 Internal Server Error
ดู error log:
sudo tail -f /var/log/apache2/error.logหรือเปลี่ยนชื่อไฟล์ .htaccess ชั่วคราวเพื่อทดสอบ
mv /var/www/example.com/public_html/.htaccess /var/www/example.com/public_html/.htaccess.bakปัญหาด้านประสิทธิภาพ (Performance)
เช็คโหลด Apache
tophtopถ้า htop ไม่มี ให้ติดตั้งด้วย sudo apt install htop
ปิด Apache Modules ที่ไม่ใช้
sudo a2dismod status
sudo a2dismod autoindex
sudo systemctl restart apache2ตั้งค่า Cache ให้เหมาะสม
sudo a2enmod cache cache_diskปัญหาเครือข่าย (Network)
เช็ค IP Address
ip acurl ifconfig.meเช็คว่าพอร์ตถูกเปิด
sudo netstat -tulnp | grep LISTENsudo lsof -i :80ถ้าพอร์ต 80/443 ไม่ขึ้น ให้ตรวจสอบ Firewall ว่าอนุญาตแล้ว
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw reloadสรุป
- วิธีแก้ปัญหา Apache ไม่เริ่มทำงาน
- วิธีแก้ปัญหา SSL
- การแก้ไข error 403 / 404 / 500
- ปรับจูนและตรวจสอบประสิทธิภาพ
- ตรวจสอบการเชื่อมต่อ Network
9. สรุป
สิ่งที่ได้เรียนรู้จากบทความนี้
| หัวข้อ | เนื้อหา |
|---|---|
| 1. บทนำ | แนวคิดพื้นฐานของ Ubuntu Web Server และเป้าหมายของบทความ |
| 2. การติดตั้งและตั้งค่า Ubuntu | วิธีติดตั้งอัปเดต และตั้งค่า Firewall |
| 3. การติดตั้ง Apache | วิธีติดตั้งและตรวจสอบการทำงานของ Apache |
| 4. Virtual Host | วิธีโฮสต์หลายเว็บไซต์ในเครื่องเดียว |
| 5. SSL/TLS | การเปิด HTTPS ด้วย Let’s Encrypt |
| 6. ความปลอดภัย | การตั้งค่า Firewall, SSH, Apache ให้ปลอดภัย |
| 7. ปรับประสิทธิภาพ | การใช้ Cache, การบีบอัดข้อมูล และจูน Apache |
| 8. การแก้ปัญหา | วิธีรับมือกับข้อผิดพลาดทั่วไป |
ขั้นตอนต่อไป
เมื่อเซิร์ฟเวอร์ Ubuntu Web Server พร้อมใช้งานแล้ว คุณสามารถเรียนรู้หัวข้อขั้นสูงต่อไปนี้เพื่อสร้างระบบที่สมบูรณ์ยิ่งขึ้น เช่น
- ✅ ติดตั้ง WordPress หรือ PHP Application
- ✅ ติดตั้งฐานข้อมูล MySQL / MariaDB
- ✅ ทำ Reverse Proxy (Nginx + Apache)
- ✅ สร้างระบบออโต้สเกลบน AWS, GCP, Azure
- ✅ ตั้งค่า Log Monitoring (fail2ban, logwatch ฯลฯ)
คำถามที่พบบ่อย (FAQ)
Q1: ควรเลือก Nginx หรือ Apache บน Ubuntu?
A1: ถ้าเน้น Static Content ให้ใช้ Nginx ถ้า Dynamic Content (เช่น PHP) ให้ใช้ Apache หรือใช้ร่วมกันก็ได้ (Nginx reverse proxy หน้า Apache)Q2: SSL Certificate อัปเดตอัตโนมัติได้หรือไม่?
A2: หากติดตั้ง Certbot สามารถตั้ง cron job ให้ต่ออายุอัตโนมัติได้ ตรวจสอบด้วยsudo certbot renew --dry-runQ3: จะเสริมความปลอดภัย Web Server ได้อย่างไร?
A3: ใช้ Fail2Ban ป้องกัน brute-force, ซ่อนเวอร์ชัน Apache, ปิดโมดูลที่ไม่จำเป็นQ4: จะเพิ่มประสิทธิภาพ Apache อย่างไร?
A4: ปรับ MPM, ใช้ cache, เปิดการบีบอัดข้อมูล (mod_deflate)Q5: เว็บไซต์ขึ้น 403 Forbidden เพราะอะไร?
A5: ตรวจสอบ owner เป็นwww-data และสิทธิ์ 755 ด้วย chmod -R 755สรุปสุดท้าย
การติดตั้ง Ubuntu Web Server ครอบคลุมตั้งแต่พื้นฐานจนถึงเทคนิคขั้นสูง เมื่อเข้าใจหลักการเหล่านี้แล้ว คุณจะสามารถสร้างระบบที่ปลอดภัยและมีประสิทธิภาพได้
🚀 ขอให้บทความนี้ช่วยให้คุณสร้างและดูแลเว็บเซิร์ฟเวอร์ได้อย่างมืออาชีพ! 🚀



