目次

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 เป็นเว็บเซิร์ฟเวอร์ แนะนำสเปกขั้นต่ำดังนี้

รายการขั้นต่ำแนะนำ
OSUbuntu 22.04 LTSUbuntu 22.04 LTS
CPU1GHz ขึ้นไป2GHz ขึ้นไป
RAM512MB2GB ขึ้นไป
Storage10GB ขึ้นไป20GB ขึ้นไป
Networkเชื่อมต่ออินเทอร์เน็ตแนะนำเป็นอินเทอร์เน็ตความเร็วสูง

ดาวน์โหลดและติดตั้ง Ubuntu

Ubuntu สามารถดาวน์โหลดได้จาก https://ubuntu.com/download/server ให้ดาวน์โหลดไฟล์ ISO แล้วติดตั้งผ่าน VirtualBox หรือ VMware (เครื่องเสมือน) หรือจะติดตั้งลงใน เซิร์ฟเวอร์จริงหรือ VPS ก็ได้

ขั้นตอนการติดตั้ง:

  1. สร้างสื่อสำหรับติดตั้ง (Installation Media)
  • ใช้ USB (แนะนำใช้เครื่องมืออย่าง Rufus)
  • หรือ mount ไฟล์ ISO บน Virtual Machine
  1. ดำเนินการติดตั้งตาม Wizard
  • เลือกภาษาเป็น “ไทย” หรือที่ต้องการ
  • ตรวจสอบการเชื่อมต่อเครือข่าย
  • ตั้งชื่อผู้ใช้และรหัสผ่าน
  • เลือกติดตั้ง SSH Server (สามารถติดตั้งทีหลังได้)
  1. หลังติดตั้ง OS เสร็จ ให้รีสตาร์ท
  2. เข้าสู่ระบบและเริ่มตั้งค่าเบื้องต้น

การตั้งค่าเบื้องต้นหลังติดตั้ง Ubuntu

หลังจากติดตั้ง Ubuntu เสร็จควรตั้งค่าต่อไปนี้ทันที

  1. อัปเดตแพ็กเกจให้เป็นเวอร์ชันล่าสุด
sudo apt update && sudo apt upgrade -y

→ ติดตั้งแพตช์ความปลอดภัยและอัปเดตซอฟต์แวร์ล่าสุด

  1. ตั้งค่า Timezone
sudo timedatectl set-timezone Asia/Bangkok

→ ตั้งเวลาเป็นเวลาประเทศไทย (ICT)

  1. เปิดใช้งาน Firewall
sudo ufw enable

→ เปิด Firewall เพื่อป้องกันการเข้าถึงที่ไม่พึงประสงค์

  1. ตั้งค่า 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 apache2

Apache จะเริ่มทำงานและรับคำขอเว็บได้ทันที

ตั้งให้ 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.me

2. ทดสอบในเว็บเบราว์เซอร์

เปิดเบราว์เซอร์แล้วพิมพ์

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 แบบ:

  1. Name-based Virtual Host – หลายโดเมนอยู่บน IP เดียว (เป็นแบบที่นิยมใช้ที่สุด)
  • โฮสต์หลายเว็บด้วย IP เดียว
  • เหมาะกับเว็บโฮสติ้งทั่วไป
  1. 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_html

2. เปลี่ยนเจ้าของโฟลเดอร์

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_html

3. สร้างไฟล์ 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.html

4. สร้างไฟล์ตั้งค่า 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 apache2

6. ทดสอบในเครื่อง (แก้ไข 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

กระบวนการจะประกอบด้วย:

  1. ยืนยันความเป็นเจ้าของโดเมน
  2. ออกใบรับรอง SSL
  3. ตั้งค่า SSL บน Apache
  4. ตั้งค่า Redirect เป็น HTTPS

ตรวจสอบการใช้งาน SSL

เปิดเบราว์เซอร์แล้วเข้า https://example.com/ ถ้าเห็นไอคอนรูปกุญแจในช่อง URL แสดงว่า HTTPS ทำงานปกติ

ตั้งค่า SSL ด้วยตนเอง (Manual)

ถ้าไม่ใช้ certbot --apache สามารถตั้งค่าด้วยมือได้ดังนี้:

1. เปิดใช้งานโมดูล SSL

sudo a2enmod ssl
sudo systemctl restart apache2

2. แก้ไขไฟล์ 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-run

2. ตรวจสอบตารางเวลาอัปเดต

sudo systemctl list-timers | grep certbot

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

1. Apache ไม่โหลดใบรับรอง

sudo systemctl restart apache2
sudo apachectl configtest

2. ใบรับรองหมดอายุ

sudo certbot renew --force-renewal

3. ไม่ผ่านการยืนยัน 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 Off
sudo 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 5
sudo 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_html

404 Not Found

ตรวจสอบว่า DocumentRoot ถูกต้อง:

DocumentRoot /var/www/example.com/public_html

ถ้า mod_rewrite ยังไม่ได้เปิด:

sudo a2enmod rewrite
sudo systemctl restart apache2

500 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

top
htop

ถ้า 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 a
curl ifconfig.me

เช็คว่าพอร์ตถูกเปิด

sudo netstat -tulnp | grep LISTEN
sudo 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-run

Q3: จะเสริมความปลอดภัย 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 ครอบคลุมตั้งแต่พื้นฐานจนถึงเทคนิคขั้นสูง เมื่อเข้าใจหลักการเหล่านี้แล้ว คุณจะสามารถสร้างระบบที่ปลอดภัยและมีประสิทธิภาพได้

🚀 ขอให้บทความนี้ช่วยให้คุณสร้างและดูแลเว็บเซิร์ฟเวอร์ได้อย่างมืออาชีพ! 🚀