การสร้าง WordPress บน EC2 (Bitnami)
สวัสดีครับ POP จากบริษัท Classmethod (Thailand) ครับ
ครั้งนี้จะมาอธิบายเกี่ยวกับการเปิดใช้งาน EC2 (Bitnami) บน EC2 และวิธีการ Login WordPress
พร้อมแสดงผลเว็บไซต์ผ่าน CloudFront รวมถึงการเปลี่ยน Domain name ด้วย Route 53
เมื่อพร้อมแล้วมาเข้าเรื่องกันเลย
Amazon EC2 คืออะไร
Amazon EC2 (Elastic Compute Cloud) คือบริการคลาวด์จาก AWS (Amazon Web Services) ที่ให้คุณสามารถสร้างและจัดการเซิร์ฟเวอร์เสมือน (Virtual Servers) หรือที่เรียกว่า Instances ได้อย่างยืดหยุ่น โดยคุณสามารถเลือกขนาด ประสิทธิภาพ ระบบปฏิบัติการ และการตั้งค่าต่าง ๆ ของเซิร์ฟเวอร์ได้ตามความต้องการ
การสร้าง Key Pair
หากเข้าใจเกี่ยวกับ Key pair แล้ว มาเริ่มสร้าง Key pair กันเลย
ค้นหาและเลือก EC2
เลือก Key Pairs
จากเมนูด้านซ้าย
คลิก Create key pair
แล้วจะสร้าง Key pair ดังนี้
・Name: tinnakorn-bitnami
(ป้อนตามต้องการ)
・Key pair type: RSA
(ค่าเริ่มต้น)
・Private key file format: .pem
(สำหรับเชื่อมต่อกับ VSCode)
・คลิก Create key pair
หลังจากสร้าง Key Pair เสร็จแล้ว จะมีลักษณะดังนี้
・มีข้อความแจ้งเตือนขึ้นมาว่า "Successfully created key pair"
・ไฟล์ .pem
จะถูกดาวน์โหลดมาที่คอมพิวเตอร์และชื่อไฟล์จะถูกกำหนดตามที่เราได้ตั้งชื่อไว้โดยอัตโนมัติ
การเปิดใช้งาน EC2 Instance
การเปิดใช้งาน Instance จะดำเนินการใน EC2 เช่นเดียวกับการสร้าง Key Pair
เลือก Instances
จากเมนูด้านซ้าย
คลิก Launch instances
มาที่หัวข้อ Name and tags
・ป้อนชื่อที่ต้องการในช่อง Name เช่น tinnakorn-bitnami
ต่อไปหัวข้อ Application and OS Images (Amazon Machine Image) คือ Instance จะมีเซิร์ฟเวอร์ให้เลือกใช้มากมาย เช่น macOS, Red Hat, SUSE Linux, Ubuntu, Microsoft Windows, Debian เป็นต้น ซึ่งในบทความนี้จะใช้ Bitnami
ในการติดตั้ง
・ค้นหา Bitnami
+ Enter แล้วรอสักครู่
เลือกแท็บ AWS Marketplace AMIs
แล้วรอสักครู่ ก็จะเห็น Bitnami แสดงขึ้นมา ให้คลิก Select
ตัวเวอร์ชันปัจจุบัน (ณ วันที่อัปเดตบทความ 2025/08/15 คือ WordPress Certified by Bitnami and Automattic
)
แล้วคลิก Subscribe now
แล้วรอสักครู่
เมื่อเลือก Bitnami เสร็จแล้วจะแสดงหน้าจอแบบนี้
ต่อไปหัวข้อ Instance type นี้คือ เราสามารถเลือก Type CPU Memory ที่จะนำไปใช้งานได้ตามความต้องการ ไม่ว่าเว็บไซต์จะมีขนาดเล็กหรือขนาดใหญ่ ก็สามารถเลือกขนาดความจุของ CPU Memory ได้ตามความเหมาะสม
・ค้นหาและเลือก t3.micro
・แล้วจะได้สเปค Family: t3 | 2 vCPU | 1 GiB Memory
ตามที่เราเลือก
ต่อไปหัวข้อ Key pair (login)
・เลือก Key pair name - required ที่สร้างไว้เมื่อสักครู่นี้
ต่อไปหัวข้อ Network settings
・คลิก Edit
แล้วมาที่หัวข้อ Firewall (security groups)
จากนั้นเปลี่ยนชื่อ "Security group name" และ "Description" ตามต้องการ เช่น tinnakorn-bitnami
และหัวข้อ Inbound security groups rules นี้คือ การตั้งค่า My IP เพื่อจำกัดการเชื่อมต่อ SSH จากทุกตำแหน่ง ซึ่งในส่วนนี้จะทำให้สามารถเชื่อมต่อ SSH จาก My IP (ที่อยู่ IP ปัจจุบันของคุณ) ได้เท่านั้น และในกรณีที่ใช้ HTTP จะเป็นการแสดงผลหน้าเว็บไซต์
・เปลี่ยน Source type ของ ssh ให้เป็น Source type: My IP
ต่อไปหัวข้อ Configure storage นี้คือ เราสามารถเพิ่ม Storage ในส่วนของ Size (GiB) ได้ โดยค่าเริ่มต้นจะเป็น 10 GiB
ในตัวอย่างนี้จะใช้เป็นค่าเริ่มต้น ก็จะไม่ทำการตั้งค่าใดๆ
เมื่อตั้งค่าทุกอย่างเสร็จแล้ว มาที่หัวข้อ Summary ด้านขวา
แล้วตรวจสอบรายละเอียดการตั้งค่า และคลิก Launch instance
แล้วจะแสดงหน้าจอแบบนี้ โดยระบบจะเริ่มต้นเปิดใช้งาน Instance ตามที่เราตั้งค่าไว้
ทีนี้ให้คลิก (i-xxxxxxxxxx
) หรือเลื่อนลงมาด้านล่างสุด แล้วคลิก View all instances
ก็ได้
ค้นหา Instance ของเรา แล้วสังเกตที่ Status Checks จะเห็นว่ามีสถานะเป็น Initializing
คือ Instance กำลังเริ่มต้น
เมื่อ Instance เริ่มต้นเสร็จเรียบร้อยแล้ว จะมีสถานะเป็น ✅ 3/3 checks passed
การเชื่อมโยง Elastic IP addresses ให้กับ Instance (Bitnami)
เพื่อไม่ให้ Public IPv4 address ของ Instance เกิดการเปลี่ยนแปลงหลังจากการ Stop/Start Instance จำเป็นต้องเชื่อมโยง Elastic IP addresses ให้กับ Instance (Bitnami) ก่อน
ดูตัวอย่างได้ที่ลิงก์ด้านล่างนี้
การเชื่อมต่อกับ EC2 Instance ด้วย VSCode
ครั้งนี้จะเชื่อมต่อ EC2 Instance ด้วย VSCode เนื่องจากง่ายต่อการจัดการระบบในอนาคต
ดูตัวอย่างได้ที่ลิงก์ด้านล่างนี้
ข้อควรระวัง ในตัวอย่างด้านบนนี้จะเป็นการเชื่อมต่อสำหรับ EC2 Instance (Amazon Linux)
ดังนั้นโปรดใช้ Config นี้ในการเชื่อมต่อกับ bitnami
Host [display-name]
HostName [Elastic-IP-address]
User bitnami
Port 22
IdentityFile [path-to-.pem-file] # เช่น IdentityFile ~/.ssh/my-key.pem
เมื่อเชื่อมต่อเสร็จแล้วให้เข้าไปที่โฟลเดอร์ /home/bitnami/
แบบนี้ แล้วคลิก OK
กรณีที่เข้ามาที่โฟลเดอร์ดังกล่าวครั้งแรก จะแสดง POP-UP แบบนี้ ให้ติ๊ก ✅️ Trust the authors of all files in the patent folder 'home'
แล้วคลิก Yes, I trust the authors
เพื่อเข้าไปที่โฟลเดอร์ตามที่เราเลือก
การ Login WordPress Admin
คลิกไฟล์ bitnami_credentials
แล้วตรวจสอบและคัดลอก username กับ password เตรียมไว้สำหรับใช้ Login WordPress Admin ในขั้นตอนถัดไป โดยในตัวอย่างนี้จะแสดงใน Line ที่ 4
นำ Elastic IP ที่เชื่อมโยงให้กับ Instance (Bitnami) ไปเปิดบนเว็บเบราว์เซอร์ที่เราใช้งาน
จะเห็นว่าแสดงเป็นหน้าจอเริ่มต้นของเว็บไซต์ WordPress
http://[Elastic IP addresses]
ต่อไปพิมพ์ /wp-admin
ต่อท้าย Elastic IP addresses (เมื่อมาหน้าจอ Log in แล้ว URL จะแสดงไม่ตรงกับที่เราป้อน ก็ไม่เป็นไร)
แล้วป้อน username กับ passwprd ที่คัดลอกจากไฟล์ "bitnami_credentials" ในหน้าจอ VSCode แล้วคลิก Log in
ตามด้านล่างนี้
http://[Elastic IP addresses]/wp-admin
เมื่อป้อน username กับ passwprd แล้ว จะแสดงหน้าจอ WordPress Admin แบบนี้
และให้สังเกตที่ URL จะเห็นว่าตรงกับที่เราป้อนแล้ว
การแสดงผลเว็บไซต์ที่สร้างจาก EC2 ด้วย CloudFront
เราสามารถเพิ่มประสิทธิภาพและความปลอดภัยในการเข้าถึงเว็บไซต์ได้อย่างง่ายดายด้วย CloudFront
ดูตัวอย่างได้ที่ลิงก์ด้านล่างนี้
ตัวอย่างผลลัพธ์หลังจากสร้าง CloudFront แล้ว
การเปลี่ยนชื่อ Domain name (DNS) เว็บไซต์ด้วย Route 53 และ AWS Certificate Manager
เมื่อแสดงผลเว็บไซต์ที่สร้างจาก EC2 ด้วย CloudFront ได้แล้ว เราสามารถเปลี่ยน Domain name (DNS) เพื่อเพิ่มความเชื่อถือให้กับเว็บไซต์ด้วยชื่อที่เราต้องการได้อีกด้วย
ดูตัวอย่างได้ที่ลิงก์ด้านล่างนี้
ตัวอย่างผลลัพธ์หลังจากเปลี่ยนชื่อ Domain name (DNS) แล้ว
Amazon Route 53 = บริการ DNS (Domain Name System) ที่มีความพร้อมใช้งานสูงและปรับขนาดได้ สำหรับการแปลงชื่อโดเมนเป็น IP และบริหารจัดการการรับส่งทราฟฟิกไปยังแอปพลิเคชัน
AWS Certificate Manager (ACM) = บริการที่ช่วยจัดเตรียม จัดการ และปรับใช้ SSL/TLS Certificate ได้ง่าย เพื่อความปลอดภัยของเว็บไซต์และแอปพลิเคชันโดยไม่ต้องจัดการใบรับรองเอง
การเชื่อมต่อ SSL certificate ใน CloudFront = การกำหนดให้ CloudFront ใช้ SSL/TLS Certificate จาก ACM เพื่อเข้ารหัสการเชื่อมต่อและให้ผู้ใช้เข้าถึงเว็บไซต์ผ่าน HTTPS ได้อย่างปลอดภัย
การตั้งค่า URL และบังคับ HTTPS ใน WordPress
กลับมาที่หน้าจอ VSCode ที่เชื่อมต่อกับ EC2 Instance (Bitnami)
แล้วเปิด Terminal ขึ้นมา โดยคลิก New Terminal
หรือกดปุ่มคีย์ลัด [Ctrl+`] ก็ได้
แล้วรันคำสั่งสร้าง symbolic link สำหรับโฟลเดอร์ wordpress ตามด้านล่างนี้ ก็จะมีโฟลเดอร์ wordpress
แสดงขึ้นมาแบบนี้
ln -s /bitnami/wordpress /home/bitnami
ปิดแท็บ Terminal แล้วเปิดไฟล์ wp-config.php
ในโฟลเดอร์ wordpress
แล้ว comment บรรทัดที่ 106-107
แบบนี้
แล้วคัดลอกโค้ดด้านล่างนี้วางในไฟล์ wp-config.php
ตั้งแต่บรรทัดที่ 92 ใต้ comment ของ /* Add any custom values between this line and the "stop editing" line. */
ได้เลย
แล้วเปลี่ยน [Recode Name ใน Route 53]
ให้เป็นของคุณ แล้ว Save ให้เรียบร้รอย (อย่าลืมลบ comment ข้างหลังออกด้วย)
$_SERVER['HTTPS'] = 'on'; # เปิดใช้งาน HTTPS เพื่อบังคับให้ WordPress ทำงานผ่าน HTTPS
define( 'WP_HOME', 'https://[Recode Name ใน Route 53]/' ); # การตั้งค่า URL หน้าเว็บหลัก ของ WordPress
define( 'WP_SITEURL', 'https://[Recode Name ใน Route 53]/' ); # การตั้งค่า URL ตำแหน่ง WordPress core ของ WordPress
เพิ่มเติมเกี่ยวกับการตั้งค่า URL และบังคับ HTTPS ใน WordPress
หากไม่ตั้งค่าส่วนนี้ แล้วเปิด URL ด้านล่างนี้ จะทำให้แสดงหน้าจอโดยมี UI แปลกๆ แบบนี้
https://[Recode name ใน Route 53]/wp-admin
ทดสอบ DNS ที่แปลงแล้ว
กลับมาที่หน้าจอเว็บเบราว์เซอร์อีกครั้ง แล้ว Reload จะสังเกตว่าแสดงหน้าจอเหมือนเดิม
https://[Recode name ใน Route 53]
ทีนี้มาลองเปิด URL ตามด้านล่างนี้ แล้ว Log in เข้ามายัง WordPress Admin อีกครั้ง จะเห็นว่าสามารถเข้าถึง WordPress Admin ได้เช่นกัน
https://[Recode name ใน Route 53]/wp-admin
บล็อกการเข้าถึงที่ไม่ผ่าน Amazon CloudFront
โดยปกติ EC2 Instance ที่มี Public DNS สามารถถูกเข้าถึงโดยตรงจากภายนอกได้ แต่เราสามารถใช้ Managed Prefix Lists (Amazon CloudFront) กำหนดใน Security Group หรือ Network ACL เพื่อบล็อกการเข้าถึงโดยตรงจากอินเทอร์เน็ต และอนุญาตให้เข้าถึงผ่าน CloudFront เท่านั้นได้ วิธีนี้ช่วยเพิ่มความปลอดภัยให้กับระบบได้มากยิ่งขึ้น
ดูตัวอย่างที่ลิงก์ด้านล่างนี้
สรุป
เราสามารถสร้าง WordPress ด้วย AMI Bitnami อย่างง่ายดาย
นอกจากนี้ยังสามารถเพิ่มประสิทธิภาพโดยการเพิ่มความรวดเร็ว ความปลอดภัย และความน่าเชื่อถือในการใช้งานเว็บไซต์ได้ด้วยบริการ เช่น Amazon CloudFront, Amazon Route 53 และ AWS Certificate Manager (ACM) เป็นต้น
ผมหวังว่าบทความนี้จะเป็นประโยชน์ให้กับผู้อ่านได้นะครับ
POP (Tinnakorn Maneewong) จากบริษัท Classmethod (Thailand) ครับ !