การสร้าง WordPress บน EC2 (Bitnami)

การสร้าง WordPress บน EC2 (Bitnami)

เริ่มต้นใช้งาน Amazon EC2 (Bitnami) ใน AWS Thailand Region ด้วยคำแนะนำที่เข้าใจง่ายและเหมาะสำหรับผู้เริ่มต้น พร้อมเทคนิคเพิ่มประสิทธิภาพด้วย CloudFront และ Route 53

สวัสดีครับ POP จากบริษัท Classmethod (Thailand) ครับ

ครั้งนี้จะมาอธิบายเกี่ยวกับการเปิดใช้งาน EC2 (Bitnami) บน EC2 และวิธีการ Login WordPress
พร้อมแสดงผลเว็บไซต์ผ่าน CloudFront รวมถึงการเปลี่ยน Domain name ด้วย Route 53

เมื่อพร้อมแล้วมาเข้าเรื่องกันเลย

Amazon EC2 คืออะไร

za5noq4o6uydlu0yoqrp
Amazon EC2 (Elastic Compute Cloud) คือบริการคลาวด์จาก AWS (Amazon Web Services) ที่ให้คุณสามารถสร้างและจัดการเซิร์ฟเวอร์เสมือน (Virtual Servers) หรือที่เรียกว่า Instances ได้อย่างยืดหยุ่น โดยคุณสามารถเลือกขนาด ประสิทธิภาพ ระบบปฏิบัติการ และการตั้งค่าต่าง ๆ ของเซิร์ฟเวอร์ได้ตามความต้องการ

การสร้าง Key Pair

หากเข้าใจเกี่ยวกับ Key pair แล้ว มาเริ่มสร้าง Key pair กันเลย

ค้นหาและเลือก EC2
search-ec2-202508

เลือก Key Pairs จากเมนูด้านซ้าย
menu-kp-202501

คลิก Create key pair
button-kp-202501

แล้วจะสร้าง Key pair ดังนี้
・Name: tinnakorn-bitnami (ป้อนตามต้องการ)
・Key pair type: RSA (ค่าเริ่มต้น)
・Private key file format: .pem (สำหรับเชื่อมต่อกับ VSCode)
・คลิก Create key pair
create_key_pair-1

หลังจากสร้าง Key Pair เสร็จแล้ว จะมีลักษณะดังนี้
・มีข้อความแจ้งเตือนขึ้นมาว่า "Successfully created key pair"
・ไฟล์ .pem จะถูกดาวน์โหลดมาที่คอมพิวเตอร์และชื่อไฟล์จะถูกกำหนดตามที่เราได้ตั้งชื่อไว้โดยอัตโนมัติ
create_key_pair-2

การเปิดใช้งาน EC2 Instance

การเปิดใช้งาน Instance จะดำเนินการใน EC2 เช่นเดียวกับการสร้าง Key Pair

เลือก Instances จากเมนูด้านซ้าย
menu-instance-202501

คลิก Launch instances
button-launch-instance

มาที่หัวข้อ Name and tags
・ป้อนชื่อที่ต้องการในช่อง Name เช่น tinnakorn-bitnami
create_ec2_bitnami-1

ต่อไปหัวข้อ Application and OS Images (Amazon Machine Image) คือ Instance จะมีเซิร์ฟเวอร์ให้เลือกใช้มากมาย เช่น macOS, Red Hat, SUSE Linux, Ubuntu, Microsoft Windows, Debian เป็นต้น ซึ่งในบทความนี้จะใช้ Bitnami ในการติดตั้ง
・ค้นหา Bitnami + Enter แล้วรอสักครู่
create_ec2_bitnami-2

เลือกแท็บ AWS Marketplace AMIs แล้วรอสักครู่ ก็จะเห็น Bitnami แสดงขึ้นมา ให้คลิก Select ตัวเวอร์ชันปัจจุบัน (ณ วันที่อัปเดตบทความ 2025/08/15 คือ WordPress Certified by Bitnami and Automattic)
create_ec2_bitnami-3

แล้วคลิก Subscribe now แล้วรอสักครู่
create_ec2_bitnami-4

เมื่อเลือก Bitnami เสร็จแล้วจะแสดงหน้าจอแบบนี้
create_ec2_bitnami-5

ต่อไปหัวข้อ Instance type นี้คือ เราสามารถเลือก Type CPU Memory ที่จะนำไปใช้งานได้ตามความต้องการ ไม่ว่าเว็บไซต์จะมีขนาดเล็กหรือขนาดใหญ่ ก็สามารถเลือกขนาดความจุของ CPU Memory ได้ตามความเหมาะสม
・ค้นหาและเลือก t3.micro
・แล้วจะได้สเปค Family: t3 | 2 vCPU | 1 GiB Memory ตามที่เราเลือก
create_ec2_bitnami-6

ต่อไปหัวข้อ Key pair (login)
・เลือก Key pair name - required ที่สร้างไว้เมื่อสักครู่นี้
create_ec2_bitnami-7

ต่อไปหัวข้อ Network settings
・คลิก Edit
create_ec2_bitnami-8

แล้วมาที่หัวข้อ 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
create_ec2_bitnami-9

ต่อไปหัวข้อ Configure storage นี้คือ เราสามารถเพิ่ม Storage ในส่วนของ Size (GiB) ได้ โดยค่าเริ่มต้นจะเป็น 10 GiB
ในตัวอย่างนี้จะใช้เป็นค่าเริ่มต้น ก็จะไม่ทำการตั้งค่าใดๆ
create_ec2_bitnami-10

เมื่อตั้งค่าทุกอย่างเสร็จแล้ว มาที่หัวข้อ Summary ด้านขวา
แล้วตรวจสอบรายละเอียดการตั้งค่า และคลิก Launch instance
create_ec2_bitnami-11

แล้วจะแสดงหน้าจอแบบนี้ โดยระบบจะเริ่มต้นเปิดใช้งาน Instance ตามที่เราตั้งค่าไว้
ทีนี้ให้คลิก (i-xxxxxxxxxx) หรือเลื่อนลงมาด้านล่างสุด แล้วคลิก View all instances ก็ได้
create_ec2_bitnami-12

ค้นหา Instance ของเรา แล้วสังเกตที่ Status Checks จะเห็นว่ามีสถานะเป็น Initializing คือ Instance กำลังเริ่มต้น
create_ec2_bitnami-13

เมื่อ Instance เริ่มต้นเสร็จเรียบร้อยแล้ว จะมีสถานะเป็น ✅ 3/3 checks passed
create_ec2_bitnami-14

การเชื่อมโยง Elastic IP addresses ให้กับ Instance (Bitnami)

เพื่อไม่ให้ Public IPv4 address ของ Instance เกิดการเปลี่ยนแปลงหลังจากการ Stop/Start Instance จำเป็นต้องเชื่อมโยง Elastic IP addresses ให้กับ Instance (Bitnami) ก่อน

ดูตัวอย่างได้ที่ลิงก์ด้านล่างนี้
https://dev.classmethod.jp/articles/how-to-link-eip-to-ec2-instance/

การเชื่อมต่อกับ EC2 Instance ด้วย VSCode

ครั้งนี้จะเชื่อมต่อ EC2 Instance ด้วย VSCode เนื่องจากง่ายต่อการจัดการระบบในอนาคต

ดูตัวอย่างได้ที่ลิงก์ด้านล่างนี้
https://dev.classmethod.jp/articles/install-extention-remote-ssh-in-vscode-connect-ec2/

ข้อควรระวัง ในตัวอย่างด้านบนนี้จะเป็นการเชื่อมต่อสำหรับ 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
connect_ec2_on_vscode-1

กรณีที่เข้ามาที่โฟลเดอร์ดังกล่าวครั้งแรก จะแสดง POP-UP แบบนี้ ให้ติ๊ก ✅️ Trust the authors of all files in the patent folder 'home' แล้วคลิก Yes, I trust the authors เพื่อเข้าไปที่โฟลเดอร์ตามที่เราเลือก
connect_ec2_on_vscode-2

การ Login WordPress Admin

คลิกไฟล์ bitnami_credentials
แล้วตรวจสอบและคัดลอก username กับ password เตรียมไว้สำหรับใช้ Login WordPress Admin ในขั้นตอนถัดไป โดยในตัวอย่างนี้จะแสดงใน Line ที่ 4
connect_ec2_on_vscode-3

นำ Elastic IP ที่เชื่อมโยงให้กับ Instance (Bitnami) ไปเปิดบนเว็บเบราว์เซอร์ที่เราใช้งาน
จะเห็นว่าแสดงเป็นหน้าจอเริ่มต้นของเว็บไซต์ WordPress

http://[Elastic IP addresses]

login_wp_bitnami-1

ต่อไปพิมพ์ /wp-admin ต่อท้าย Elastic IP addresses (เมื่อมาหน้าจอ Log in แล้ว URL จะแสดงไม่ตรงกับที่เราป้อน ก็ไม่เป็นไร)
แล้วป้อน username กับ passwprd ที่คัดลอกจากไฟล์ "bitnami_credentials" ในหน้าจอ VSCode แล้วคลิก Log in ตามด้านล่างนี้

http://[Elastic IP addresses]/wp-admin

login_wp_bitnami-2

เมื่อป้อน username กับ passwprd แล้ว จะแสดงหน้าจอ WordPress Admin แบบนี้
และให้สังเกตที่ URL จะเห็นว่าตรงกับที่เราป้อนแล้ว
login_wp_bitnami-3

การแสดงผลเว็บไซต์ที่สร้างจาก EC2 ด้วย CloudFront

เราสามารถเพิ่มประสิทธิภาพและความปลอดภัยในการเข้าถึงเว็บไซต์ได้อย่างง่ายดายด้วย CloudFront

ดูตัวอย่างได้ที่ลิงก์ด้านล่างนี้
https://dev.classmethod.jp/articles/how-to-display-the-website-on-ec2-with-cloudfront-v2/

ตัวอย่างผลลัพธ์หลังจากสร้าง CloudFront แล้ว

resource_results-cf-1

resource_results-cf-2

การเปลี่ยนชื่อ Domain name (DNS) เว็บไซต์ด้วย Route 53 และ AWS Certificate Manager

เมื่อแสดงผลเว็บไซต์ที่สร้างจาก EC2 ด้วย CloudFront ได้แล้ว เราสามารถเปลี่ยน Domain name (DNS) เพื่อเพิ่มความเชื่อถือให้กับเว็บไซต์ด้วยชื่อที่เราต้องการได้อีกด้วย

ดูตัวอย่างได้ที่ลิงก์ด้านล่างนี้
https://dev.classmethod.jp/articles/how-to-set-up-ssl-and-dns-on-cloudfront-using-acm-and-route53-v2/

ตัวอย่างผลลัพธ์หลังจากเปลี่ยนชื่อ Domain name (DNS) แล้ว

Amazon Route 53 = บริการ DNS (Domain Name System) ที่มีความพร้อมใช้งานสูงและปรับขนาดได้ สำหรับการแปลงชื่อโดเมนเป็น IP และบริหารจัดการการรับส่งทราฟฟิกไปยังแอปพลิเคชัน
resource_results-route53

AWS Certificate Manager (ACM) = บริการที่ช่วยจัดเตรียม จัดการ และปรับใช้ SSL/TLS Certificate ได้ง่าย เพื่อความปลอดภัยของเว็บไซต์และแอปพลิเคชันโดยไม่ต้องจัดการใบรับรองเอง
request_certificate_route53_cf-7

การเชื่อมต่อ SSL certificate ใน CloudFront = การกำหนดให้ CloudFront ใช้ SSL/TLS Certificate จาก ACM เพื่อเข้ารหัสการเชื่อมต่อและให้ผู้ใช้เข้าถึงเว็บไซต์ผ่าน HTTPS ได้อย่างปลอดภัย
set_domain_cf-1
set_domain_cf-2

การตั้งค่า URL และบังคับ HTTPS ใน WordPress

กลับมาที่หน้าจอ VSCode ที่เชื่อมต่อกับ EC2 Instance (Bitnami)

แล้วเปิด Terminal ขึ้นมา โดยคลิก New Terminal หรือกดปุ่มคีย์ลัด [Ctrl+`] ก็ได้
แล้วรันคำสั่งสร้าง symbolic link สำหรับโฟลเดอร์ wordpress ตามด้านล่างนี้ ก็จะมีโฟลเดอร์ wordpress แสดงขึ้นมาแบบนี้

ln -s /bitnami/wordpress /home/bitnami

set_url_https_wp-1

ปิดแท็บ Terminal แล้วเปิดไฟล์ wp-config.php ในโฟลเดอร์ wordpress
แล้ว comment บรรทัดที่ 106-107 แบบนี้
set_url_https_wp-2

แล้วคัดลอกโค้ดด้านล่างนี้วางในไฟล์ 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

set_url_https_wp-3

เพิ่มเติมเกี่ยวกับการตั้งค่า URL และบังคับ HTTPS ใน WordPress

หากไม่ตั้งค่าส่วนนี้ แล้วเปิด URL ด้านล่างนี้ จะทำให้แสดงหน้าจอโดยมี UI แปลกๆ แบบนี้

https://[Recode name ใน Route 53]/wp-admin

test_url_bitnami-2

ทดสอบ DNS ที่แปลงแล้ว

กลับมาที่หน้าจอเว็บเบราว์เซอร์อีกครั้ง แล้ว Reload จะสังเกตว่าแสดงหน้าจอเหมือนเดิม

https://[Recode name ใน Route 53]

set_domain_cf-2

ทีนี้มาลองเปิด URL ตามด้านล่างนี้ แล้ว Log in เข้ามายัง WordPress Admin อีกครั้ง จะเห็นว่าสามารถเข้าถึง WordPress Admin ได้เช่นกัน

https://[Recode name ใน Route 53]/wp-admin

test_url_bitnami

บล็อกการเข้าถึงที่ไม่ผ่าน Amazon CloudFront

โดยปกติ EC2 Instance ที่มี Public DNS สามารถถูกเข้าถึงโดยตรงจากภายนอกได้ แต่เราสามารถใช้ Managed Prefix Lists (Amazon CloudFront) กำหนดใน Security Group หรือ Network ACL เพื่อบล็อกการเข้าถึงโดยตรงจากอินเทอร์เน็ต และอนุญาตให้เข้าถึงผ่าน CloudFront เท่านั้นได้ วิธีนี้ช่วยเพิ่มความปลอดภัยให้กับระบบได้มากยิ่งขึ้น

block_connect_with-managed_prefix_list

ดูตัวอย่างที่ลิงก์ด้านล่างนี้
https://dev.classmethod.jp/articles/block-access-not-through-amazon-cloudfront/

สรุป

เราสามารถสร้าง WordPress ด้วย AMI Bitnami อย่างง่ายดาย

นอกจากนี้ยังสามารถเพิ่มประสิทธิภาพโดยการเพิ่มความรวดเร็ว ความปลอดภัย และความน่าเชื่อถือในการใช้งานเว็บไซต์ได้ด้วยบริการ เช่น Amazon CloudFront, Amazon Route 53 และ AWS Certificate Manager (ACM) เป็นต้น

ผมหวังว่าบทความนี้จะเป็นประโยชน์ให้กับผู้อ่านได้นะครับ

POP (Tinnakorn Maneewong) จากบริษัท Classmethod (Thailand) ครับ !

บทความที่เกี่ยวข้อง

この記事をシェアする

facebookのロゴhatenaのロゴtwitterのロゴ

© Classmethod, Inc. All rights reserved.