Contents
- 1 Giới thiệu Sự đơn giản của triển khai WordPress trong AWS Cloud.
- 2 Lợi ích của việc dùng AWS CloudFormation
- 3 Kiến trúc triển khai WordPress EC2 “một nút nhấn”
- 4 Hướng dẫn triển khai “một nút nhấn” WordPress trên AWS EC2
- 5 Mẫu CloudFormation YAML tham khảo
- 6 Kết luận: Sức mạnh của CloudFormation cho triển khai thực tế
Giới thiệu Sự đơn giản của triển khai WordPress trong AWS Cloud.
Có thể sếp hay khách hàng của bạn yêu cầu bạn demo ứng dụng wordpress trên đám mây AWS và chắc chắn bạn phải mất hàng giờ để triển khai và cấu hình hạ tầng hệ thống. Vậy bạn có tin là chỉ cần một click nhấn nút và trong một vài phút là có thể dễ dàng tạo 1 website WordPress chuyên nghiệp trên đám mây AWS, ngay cả người mới biết về AWS cũng có thể làm được, và trong bài viết này tôi sẽ hướng dẫn bạn làm việc này nhé!
Việc triển khai một website WordPress trên AWS EC2 thường đòi hỏi chúng ta cần phải thực hiện nhiều bước làm thủ công: Như tạo máy chủ EC2, cài đặt phần mềm (Apache, PHP, MySQL), tạo cơ sở dữ liệu và kết nối ứng dụng với database với nhau. Điều này có thể mất thời gian và dễ sai sót cho người mới. Tuy nhiên, với AWS CloudFormation – dịch vụ Infrastructure as Code của AWS – chúng ta có thể tự động hoá toàn bộ quá trình này chỉ với “một click” (một lần kích hoạt duy nhất). Việc sử dụng AWS CloudFormation để tạo hệ thống hạ tầng là cực rất dễ cho chúng ta vì nó cho phép bạn định nghĩa tất cả tài nguyên (EC2, RDS, VPC, v.v.) trong một file template, và AWS sẽ lo việc khởi tạo và cấu hình chúng theo đúng thứ tự phụ thuộc. Bạn không cần phải tạo từng tài nguyên hay cấu hình thủ công, CloudFormation sẽ tự động thiết lập cho bạn một cách nhanh chóng và chuẩn xác. Kết quả là bạn có một website WordPress hoạt động chỉ sau vài phút, đơn giản như sử dụng dịch vụ hosting truyền thống nhưng linh hoạt hơn nhiều.
Quan trọng hơn, cách làm này đơn giản và hiệu quả ở chỗ: chỉ với một lần triển khai, bạn có được toàn bộ hạ tầng cần thiết cho WordPress trên AWS. Điều này cực kỳ hữu ích cho người mới bắt đầu với AWS hoặc các system admins, devops và developers muốn có giải pháp tự động để triển khai WordPress cho công việc của mình. Thay vì lặp lại các bước cài đặt trên giao diện web console của AWS, bạn chỉ việc sử dụng một template CloudFormation đã soạn sẵn – việc còn lại CloudFormation sẽ lo cho bạn, thật là tuyệt vời phải không!!!. Và kết quả không chỉ nhanh mà còn hạn chế lỗi do thao tác thủ công và đảm bảo mọi thứ nhất quán. Đây chính là “một nút nhấn” thần kỳ giúp tiết kiệm thời gian và công sức cho bạn.
Lợi ích của việc dùng AWS CloudFormation
Sử dụng AWS CloudFormation mang lại nhiều lợi ích quan trọng khi triển khai hạ tầng, đặc biệt với WordPress trên EC2:
-
Tự động hóa (Automation): CloudFormation cho phép bạn tự động tạo và cấu hình mọi tài nguyên AWS chỉ bằng cách chạy một template. Bạn có thể định nghĩa toàn bộ hạ tầng (máy chủ EC2, cơ sở dữ liệu RDS, mạng VPC…) trong một file YAML/JSON duy nhất, và CloudFormation sẽ tự động build nên hạ tầng đó cho bạn. Nhờ tự động hóa, bạn loại bỏ được các thao tác lặp lại và giảm thiểu lỗi cấu hình do con người làm.
-
Nhất quán và có thể tái sử dụng (Consistency & Reusability): Một template CloudFormation có thể được dùng đi dùng lại nhiều lần để tạo ra các môi trường hạ tầng giống hệt nhau. Điều này đảm bảo tính nhất quán giữa các lần triển khai (ví dụ dev, test, prod đều giống nhau). Bạn chỉ cần viết template một lần, sau đó có thể triển khai ở nhiều vùng (region) khác nhau hoặc cho nhiều dự án khác nhau một cách lặp lại và đồng nhất.
-
Quản lý dễ dàng và theo dõi phiên bản: Các template CloudFormation thực chất là code hạ tầng (Infrastructure as Code), do đó bạn có thể lưu chúng trong Git hoặc hệ thống quản lý mã nguồn. Nhờ vậy, mọi thay đổi đều được theo dõi, kiểm soát và có thể rollback lại nếu cần. Mỗi lần chạy template (tạo một stack), CloudFormation cũng sẽ theo dõi trạng thái và sự kiện triển khai, giúp bạn dễ dàng giám sát quá trình và khắc phục nếu có lỗi.
-
Tiết kiệm thời gian cho DevOps: Thay vì cấu hình thủ công từng máy chủ, CloudFormation giúp các kỹ sư DevOps và System Admin, Developers tập trung vào công việc quan trọng hơn. Hạ tầng được thiết lập một cách nhanh chóng, nhất quán, giúp đẩy nhanh quá trình phát triển và triển khai ứng dụng. Chỉ cần một nút bấm, bạn có thể có ngay một môi trường WordPress hoàn chỉnh, thay vì dành hàng giờ thiết lập thủ công – đây chính là sức mạnh mà nhiều người làm #DevOps mong muốn.
Tóm lại, CloudFormation mang lại #automation cho việc triển khai hạ tầng: Loại bỏ lỗi do con người, đảm bảo cấu hình chuẩn xác trên mọi môi trường, và giúp việc quản lý hạ tầng AWS trở nên đơn giản như quản lý codes. Đối với triển khai WordPress, điều này có nghĩa là bạn sẽ có một website chạy ổn định, đúng cấu hình chỉ sau một lần chạy template, thay vì phải thao tác qua nhiều bước cấu hình phức tạp.
Kiến trúc triển khai WordPress EC2 “một nút nhấn”
Trong giải pháp này, chúng ta sẽ triển khai WordPress theo mô hình hai tầng (2-tiers): Tầng ứng dụng web (WordPress chạy trên EC2) và tầng cơ sở dữ liệu (MySQL trên RDS). Toàn bộ hạ tầng được tạo mới hoàn toàn trong một VPC riêng để đảm bảo tính cách ly và bảo mật. Kiến trúc cụ thể gồm có:
-
VPC mới với 2 Subnet (mạng con): CloudFormation sẽ tạo một Virtual Private Cloud (VPC) mới để chứa các tài nguyên. VPC này được chia thành một public subnet và một private subnet tại hai Availability Zone khác nhau. Public subnet sẽ dùng để đặt máy chủ web EC2, cho phép người dùng truy cập từ ngoài internet vào website. Private subnet sẽ dùng cho RDS MySQL, không gán IP public để đảm bảo cơ sở dữ liệu không bị truy cập trực tiếp từ internet. Việc tách ra làm hai subnet như vậy giúp tăng cường bảo mật: máy DB chỉ giao tiếp với máy EC2 trong cùng VPC, còn máy EC2 giao tiếp với internet thông qua public subnet và Internet Gateway. (Mặc định VPC cũng sẽ có bảng định tuyến; public subnet được gắn Internet Gateway để EC2 có thể vào được internet, còn private subnet không có route ra internet để nhằm cô lập database).
-
Máy chủ EC2 (Web Server) chạy Amazon Linux 2023: Máy chủ EC2 sẽ chạy hệ điều hành Amazon Linux 2023 bản Minimal AMI (kernel mặc định) – đây là bản Amazon Linux mới, tối ưu cho cloud và đủ nhẹ để chạy trên instance nhỏ. Chúng ta chọn Amazon Linux 2023 vì tính cập nhật và hiệu xuất tốt, đồng thời dùng AMI minimal giúp cài đúng những thành phần cần thiết (LAMP stack) mà không dư thừa. Template CloudFormation sẽ tự động lấy ID AMI Amazon Linux 2023 bản mới nhất (bản minimal) từ Parameter Store của AWS, nên bạn luôn có hệ điều hành mới nhất mà không cần cập nhật thủ công. Trên EC2 này, CloudFormation sẽ cấu hình để cài đặt Apache (httpd), PHP và mã nguồn WordPress thông qua user data script khi máy khởi động lên. Nói cách khác, EC2 khởi chạy xong sẽ tự động trở thành một web server WordPress sẵn sàng phục vụ.
-
Cơ sở dữ liệu Amazon RDS MySQL (db.t3.micro): Thay vì cài MySQL trên chính máy EC2, chúng ta sử dụng Amazon RDS để tạo một database MySQL riêng. RDS sẽ chạy phiên bản MySQL 8.x trên một instance loại db.t3.micro (thuộc Free Tier của AWS). Việc dùng RDS mang lại lợi ích: quản lý dễ dàng (tự động backup, update), hiệu năng ổn định, và quan trọng là tách biệt database khỏi máy chủ chạy ứng dụng – mô hình này chuyên nghiệp và an toàn hơn. RDS instance sẽ được đặt trong subnet riêng (không gán IP public), do đó chỉ máy EC2 trong VPC mới có thể kết nối đến nó (thông qua Security Group cho phép kết nối MySQL giữa EC2 và RDS). CloudFormation sẽ tạo sẵn database name, username và password theo tham số mà bạn cung cấp.
-
Các thành phần mạng và bảo mật khác: Template cũng sẽ thiết lập các Security Groups cần thiết: một security group cho EC2 mở cổng HTTP (80) và SSH (22) từ Internet để bạn có thể truy cập vào website và (tuỳ chọn) SSH vào EC2, và một security group cho RDS mở cổng MySQL (3306) nhưng chỉ cho phép nguồn từ security group của EC2 (có nghĩa là chỉ EC2 WordPress mới thấy và truy cập được vào MySQL). Ngoài ra, CloudFormation tạo Internet Gateway gắn vào VPC để kết nối Internet cho subnet public, cùng route table định tuyến internet traffic (0.0.0.0/0) qua gateway này. Tất cả các tài nguyên (VPC, subnet, EC2, RDS, security group, gateway, route…) đều được CloudFormation khai báo và tạo tự động trong template. Nhờ đó, chỉ sau một lần chạy stack, toàn bộ hệ thống hạ tầng kiến trúc trên sẽ được build lên đầy đủ: một máy chủ web Apache/PHP chạy WordPress và một database MySQL sẵn sàng, kết nối với nhau trong môi trường mạng cô lập. Chúng ta có thể có một hình dung chung về kiến trúc hệ thống như sau: VPC mới chứa EC2 (public subnet) + Internet Gateway cho phép EC2 public ra ngoài internet và từ bên ngoài có thể truy cập dịch vụ web chạy trên EC2, và RDS MySQL (private subnet) chỉ chấp nhận kết nối vào database từ EC2.
(Thực tế, CloudFormation có thể tạo hầu như mọi tài nguyên AWS mà bạn cần – từ mạng VPC, subnet, Internet Gateway, bảo mật bằng Security Group, máy chủ EC2, cho đến RDS database và hơn thế nữa. Tất cả đều được mô tả trong template và tạo ra trong một lần chạy.)
Hướng dẫn triển khai “một nút nhấn” WordPress trên AWS EC2
Dưới đây là các bước chi tiết để bạn triển khai website WordPress trên AWS EC2 bằng CloudFormation chỉ với một lần thực hiện. Ngay cả người mới cũng có thể làm theo dễ dàng:
1. Chuẩn bị template CloudFormation YAML: Đầu tiên, bạn cần có file template CloudFormation định nghĩa hạ tầng WordPress như mô tả ở trên. Bạn có thể sử dụng template mẫu bằng cách truy cập vào github của mình qua đường Link: https://raw.githubusercontent.com/phuongluuho/newcode/refs/heads/main/wordpress-ec2.yaml. Hãy Download file này và lưu vào máy tính của bạn (ví dụ đặt tên là wordpress_ec2_rds.yaml). Template này đã được cấu hình để tạo đủ các tài nguyên: VPC, subnet, security group, EC2 cài WordPress, và RDS MySQL như đã trình bày. Nếu muốn, bạn có thể mở file để tham khảo cấu trúc và các thông số (có chú thích tiếng Anh trong file để giải thích từng phần).
2. Mở CloudFormation trên AWS Console và tạo Stack: Login vào AWS Management Console của tài khoản AWS của bạn. Tìm đến dịch vụ CloudFormation (bạn có thể gõ “CloudFormation” trong ô Search (tìm dịch vụ) ở trên cùng).

Tại màn hình CloudFormation, nhấn nút Create Stack (Tạo stack) > Và chọn “With new resources (standard)” để tạo stack mới.

Tiếp theo, trong màn hình Create stack, chọn Upload a template file (Tải file mẫu lên) > Click “Choose file”.

Và duyệt chọn file YAML wordpress_ec2_rds.yaml bạn đã chuẩn bị ở bước trước.

3. Sau đó bấm Next để tiếp tục. (CloudFormation cho phép bạn upload template và nó sẽ đọc định nghĩa hạ tầng từ file YAML đó để tạo stack mới).

4. Điền các tham số (Parameters) cần thiết: Sau khi upload template, CloudFormation sẽ hiển thị một trang cho phép bạn nhập Parameters – tức những tham số đầu vào mà template yêu cầu. Với template WordPress này, bạn sẽ cần nhập một số thông tin sau:
-
DBName: Tên database WordPress sẽ sử dụng. Bạn có thể đặt là
wordpresshoặc một tên tùy ý (chỉ bao gồm chữ, số, không khoảng trắng). Template mặc định là “wordpress” nếu bạn không đổi. -
DBUser: Tên user admin cho cơ sở dữ liệu MySQL. Bạn có thể đặt ví dụ
adminhoặcwordpress_user. Lưu ý tên user chỉ nên dùng chữ và số, không chứa ký tự đặc biệt. -
DBPassword: Mật khẩu cho user database ở trên. Lưu ý: Mật khẩu cần đủ độ phức tạp (ít nhất 8 ký tự, có chữ hoa, chữ thường, số hoặc ký tự đặc biệt) để thỏa mãn yêu cầu của RDS. Hãy nhập mật khẩu mạnh nhưng bạn cũng cần nhớ hoặc lưu lại để lát nữa dùng kết nối WordPress. Khi nhập mật khẩu, giao diện AWS sẽ không hiển thị (do thuộc tính NoEcho), bạn phải nhập cẩn thận 2 lần để chắc chắn chính xác.
-
KeyName (tùy chọn): Tên của EC2 Key Pair mà bạn đã tạo để có thể SSH vào máy EC2. Bạn có thể chọn một Key Pair đã tồn tại trong tài khoản AWS của mình (tương ứng với region mà bạn đang triển khai). (Chú ý: Cần tạo sẵn một Key Pair trong dịch vụ EC2 trước rồi chọn keypair đó ở đây để đề phòng trường hợp cần truy cập máy chủ gỡ lỗi).
Ngoài ra, có một số tham số có thể có sẵn giá trị mặc định trong template (ví dụ VPC CIDR, subnets CIDR, phiên bản MySQL…) bạn không cần chỉnh nếu chưa hiểu rõ. Sau khi điền xong các mục bắt buộc (đặc biệt DBUser/DBPassword), Click Next.

4. Xác nhận các tùy chọn và tạo Stack: Trang kế tiếp có thể cho bạn thiết lập thẻ (tags) hoặc các tùy chọn nâng cao cho stack – bạn có thể bỏ qua nếu không cần. Nhấn Next để đến trang xem lại (Review). Tại đây, kiểm tra lại các tham số đã điền và các thiết lập. và click vào Submit để chạy Stack.

Ngay sau khi click vào Submit, CloudFormation sẽ bắt đầu quá trình tạo các tài nguyên trong template.

5. Chờ stack hoàn tất triển khai: Bạn sẽ được chuyển đến trang theo dõi tiến trình của stack. Tại đây, CloudFormation liệt kê các sự kiện (Events) cho biết tài nguyên nào đang được tạo. Quá trình này mất vài phút. Máy chủ EC2 thường tạo nhanh (1-2 phút) còn RDS MySQL có thể mất khoảng 5 phút hoặc hơn để sẵn sàng. Bạn có thể nhấn F5 để làm mới trạng thái hoặc vào tab Resources hoặc Events để xem tiến trình. Khi tất cả hoàn tất, stack sẽ ở trạng thái CREATE_COMPLETE màu xanh lá. Lúc này, toàn bộ hạ tầng WordPress đã sẵn sàng cho bước tiếp theo.

Click vào tab Outputs của stack ở đây sẽ xuất URL truy cập website WordPress (public DNS hoặc IP của EC2) và Endpoint của RDS. và copy WebserverURL của instance WordPress.

6. Truy cập website WordPress và hoàn tất cài đặt: Bây giờ, hãy mở trình duyệt web và dán URL đó vào trình duyệt, bạn sẽ thấy trang cài đặt WordPress xuất hiện> chọn ngôn ngữ và Click Continue.

-
Bước hoàn tất cài đặt WordPress: WordPress sẽ cho phép bạn tạo Site Title (tiêu đề trang), cùng tài khoản Admin cho website (username, mật khẩu, email). Điền các thông tin mong muốn (bạn có thể thay đổi sau trên WordPress). Nhấn Install WordPress.

-
Chúc mừng, website WordPress của bạn đã được cài đặt thành công! > Click login.

-
Bây giờ bạn có thể đăng nhập vào dashboard WordPress hoặc truy cập trang chủ, hãy nhập Username và Password> click Login (Tất cả đều đang chạy trên hạ tầng AWS của bạn. Hãy lưu ý rằng EC2 đang chạy trong Free Tier (t2.micro hoặc t3.micro) nên phù hợp cho thử nghiệm hoặc trang nhỏ; nếu lưu lượng lớn có thể cần nâng cấp cấu hình).

Bây giờ bạn đã có thể vào được màn hình quản trị của WordPress.

Chúc mừng bạn đã có 1 WordPress Website.

Mẹo: Sau khi xác nhận WordPress chạy ổn định, bạn nên thực hiện một số bước bổ sung: gán Elastic IP cho EC2 để IP không thay đổi khi reboot (tránh việc DNS name thay đổi ảnh hưởng website), thiết lập Route 53 nếu muốn dùng tên miền riêng trỏ về site, và xem xét bật HTTPS (có thể dùng AWS Certificate Manager + cấu hình HTTPS cho Apache) để bảo mật truy cập. Những bước này có thể không nằm trong phạm vi “một nút nhấn”, nhưng rất quan trọng cho triển khai thực tế.
Sau khi bạn hoàn thành việc thử nghiệm test triển khai hạ tầng trên theo yêu cầu, tiếp theo hãy xóa toàn bộ hạ tầng để tránh việc gây lãng phí tài nguyên hệ thống. Đầu tiên quay trở lại màn hình CloudFormation Stack của bạn> Click Delete.

Bây giờ bạn có thể quan sát thấy hạ tầng đang trong quá trình bị xóa.

Sau một vài phút bạn có thể thấy là toàn bộ hạ tầng đã được tạo trong các bước trên đã bị xóa.

Mẫu CloudFormation YAML tham khảo
Về mẫu template CloudFormation YAML (đã được lược bớt một số phần không bắt buộc và thêm chú thích) để triển khai WordPress EC2 với RDS MySQL như mô tả. Bạn có thể dùng trực tiếp mẫu qua đường link mà mình đã cung cấp cho quá trình triển khai ở trên hoặc tùy chỉnh theo nhu cầu.
(Giải thích: Template trên tạo một VPC 10.0.0.0/16, trong đó subnet 10.0.0.0/24 (AZ1) là public cho EC2 và 10.0.1.0/24 (AZ2) là private cho RDS. EC2 dùng Amazon Linux 2023 AMI (tự động lấy ID mới nhất) cài LAMP + WordPress, RDS MySQL 8.0 db.t3.micro trong private subnet. Security Group được cấu hình để EC2 mở cổng 80/22 cho internet, RDS mở 3306 cho EC2. UserData của EC2 cài Apache, PHP, tải WordPress về và giải nén. Sau khi stack chạy xong, bạn truy cập URL đầu ra để cài đặt WordPress.)
Kết luận: Sức mạnh của CloudFormation cho triển khai thực tế
Qua hướng dẫn trên, bạn có thể thấy AWS CloudFormation thực sự biến việc triển khai một website WordPress trên AWS trở nên nhanh chóng và dễ dàng. Chỉ với một template và một lần nhấn “Create Stack”, toàn bộ hạ tầng từ máy chủ #EC2, cơ sở dữ liệu RDS, cho đến VPC, subnet, bảo mật… đã được thiết lập tự động và chính xác. Điều này không chỉ hữu ích cho mục đích thử nghiệm, học tập mà còn áp dụng được trong môi trường thực tế. Với CloudFormation, các nhóm phát triển và vận hành có thể triển khai hạ tầng phức tạp chỉ trong vài phút, đảm bảo tính nhất quán và tin cậy giữa các môi trường (dev/staging/prod).
Đối với những ai quan tâm đến DevOps và quản lý hạ tầng hiện đại, CloudFormation là một công cụ không thể thiếu – nó giúp hạ tầng trở nên “có thể lập trình” và quản lý như code, từ đó nâng cao độ tin cậy, khả năng mở rộng và giảm thiểu rủi ro. Triển khai WordPress ở ví dụ này chỉ là bề nổi: bạn hoàn toàn có thể mở rộng template để phục vụ các nhu cầu lớn hơn. Ví dụ, bạn có thể nâng cấp kiến trúc này thành mô hình cao sẵn sàng (High Availability) với Auto Scaling cho EC2, Multi-AZ RDS cho database, thậm chí bổ sung Load Balancer để cân bằng tải. Tất cả đều có thể được định nghĩa và tự động triển khai bằng CloudFormation một cách logic và có hệ thống.
Hãy tận dụng cơ hội để học hỏi thêm: thử chỉnh sửa template để nâng cấp hoặc tinh chỉnh cho phù hợp với bài toán thực tế của bạn. Bạn có thể tham khảo tài liệu AWS hoặc các mẫu có sẵn của cộng đồng để biết thêm các cấu hình nâng cao (ví dụ thêm HTTPS/SSL, tích hợp với dịch vụ khác, v.v.). Việc triển khai hạ tầng bằng CloudFormation không chỉ giúp tiết kiệm thời gian, chi phí mà còn mở ra hướng tiếp cận chuyên nghiệp, chuẩn hóa cho mọi dự án #AWS của bạn.
Với phương pháp “một nút nhấn” triển khai #WordPress trên AWS này, hy vọng bạn đã thấy được sự tiện lợi và mạnh mẽ của việc kết hợp #CloudFormation và các dịch vụ AWS như EC2, RDS. Chúc bạn thành công trong việc xây dựng website #DevOps của riêng mình và đừng ngần ngại khám phá thêm nhiều khả năng khác của CloudFormation cho các dự án tương lai!
#AWS#AmazonWebServices#WordPressOnAWS#EC2#CloudFormation#RDSEngine
#AWSHosting#WordPressHosting#AWSForBeginners#OneClickDeploy#DevOps#SystemAdmin
#CloudEngineer#InfrastructureAsCode#IaC#LinuxServer#MySQLDatabase#HighAvailability
#CloudSecurity#AWSFreeTier#LearnAWS#AWSCertification#CloudComputing#CloudDeployment
#AWSProjects#BeginnerFriendly#AWSCommunity#CloudCareer#TechGuide


