Bỏ qua

22.AMI demo1

1-Click Deployment

https://console.aws.amazon.com/cloudformation/home?region=us-east-1#/stacks/create/review?templateURL=https://learn-cantrill-labs.s3.amazonaws.com/awscoursedemos/0007-aws-associate-ec2-ami-demo/A4L_VPC_PUBLICINSTANCE_AL2023.yaml&stackName=AMIDEMO

Lesson Commands
# DBName=database name for wordpress
# DBUser=mariadb user for wordpress
# DBPassword=password for the mariadb user for wordpress
# DBRootPassword = root password for mariadb

# STEP 1 - Configure Authentication Variables which are used below
DBName='a4lwordpress'
DBUser='a4lwordpress'
DBPassword='4n1m4l$L1f3'
DBRootPassword='4n1m4l$L1f3'

# STEP 2 - Install system software - including Web and DB
sudo dnf install wget php-mysqlnd httpd php-fpm php-mysqli mariadb105-server php-json php php-devel -y


# STEP 3 - Web and DB Servers Online - and set to startup

sudo systemctl enable httpd
sudo systemctl enable mariadb
sudo systemctl start httpd
sudo systemctl start mariadb


# STEP 4 - Set Mariadb Root Password
sudo mysqladmin -u root password $DBRootPassword


# STEP 5 - Install Wordpress
sudo wget http://wordpress.org/latest.tar.gz -P /var/www/html
cd /var/www/html
sudo tar -zxvf latest.tar.gz
sudo cp -rvf wordpress/* .
sudo rm -R wordpress
sudo rm latest.tar.gz


# STEP 6 - Configure Wordpress

sudo cp ./wp-config-sample.php ./wp-config.php
sudo sed -i "s/'database_name_here'/'$DBName'/g" wp-config.php
sudo sed -i "s/'username_here'/'$DBUser'/g" wp-config.php
sudo sed -i "s/'password_here'/'$DBPassword'/g" wp-config.php   
sudo chown apache:apache * -R


# STEP 7 Create Wordpress DB

echo "CREATE DATABASE $DBName;" >> /tmp/db.setup
echo "CREATE USER '$DBUser'@'localhost' IDENTIFIED BY '$DBPassword';" >> /tmp/db.setup
echo "GRANT ALL ON $DBName.* TO '$DBUser'@'localhost';" >> /tmp/db.setup
echo "FLUSH PRIVILEGES;" >> /tmp/db.setup
mysql -u root --password=$DBRootPassword < /tmp/db.setup
sudo rm /tmp/db.setup


# STEP 8 - Browse to http://your_instance_public_ipv4_ip




# Step 9

sudo dnf install -y cowsay


cowsay "oh hi"


Create file /etc/update-motd.d/40-cow

sudo nano /etc/update-motd.d/40-cow

#!/bin/sh
cowsay "Amazon Linux 2023 AMI - Animals4Life"

sudo chmod 755 /etc/update-motd.d/40-cow

sudo update-motd
sudo reboot

Relogin




## STEP 10 - CREATE AMI
## STEP 11 - USE AMI to launch an instance

https://learn-cantrill-labs.s3.amazonaws.com/awscoursedemos/0007-aws-associate-ec2-ami-demo/lesson_commands_AL2023.txt

🌟 Demo: Tạo custom AMI từ EC2 instance cài sẵn WordPress (Animals For Life) – Phần 1


1. Mục tiêu

  • Tạo một Amazon Machine Image (AMI) từ EC2 đã cài đặt và cấu hình sẵn WordPress
  • AMI này sẽ là “mẫu” để deploy nhanh hàng loạt máy chủ WordPress cho business Animals For Life, với banner động vật độc đáo khi đăng nhập.

2. Chuẩn bị hạ tầng

  1. Đăng nhập AWS (management account)
  2. Chọn region: us-east-1 (Northern Virginia)
  3. Deploy CloudFormation stack:
  4. Dùng link "one-click deployment" với stack name: AMI Demo
  5. Tick vào capabilities, nhấn Create stack
  6. Đợi trạng thái chuyển thành CREATE_COMPLETE
  7. Mở tài liệu lệnh: “Lesson Commands Document” (chứa toàn bộ các command cần chạy trên EC2)

3. Chuẩn bị EC2 Instance

  1. Vào AWS Console → EC2 → Instances (running)
  2. Chọn instance: A4L public EC2
  3. Kết nối:
  4. Chuột phải → Connect → EC2 Instance Connect
  5. Username: ec2-user → Connect

4. Cài đặt & cấu hình WordPress (làm nhanh vì đã thực hiện ở demo trước)

a. Đặt biến môi trường

export DB_NAME='a4l_wordpress_db'
export DB_USER='a4l_wordpress_user'
export DB_PASSWORD='Password123!!'
export DB_ROOT_PASSWORD='Password321!!'

b. Cài đặt phần mềm cần thiết

sudo dnf install mariadb105-server httpd wget -y

c. Enable và start dịch vụ

sudo systemctl enable httpd
sudo systemctl enable mariadb
sudo systemctl start httpd
sudo systemctl start mariadb

d. Đặt mật khẩu root cho MariaDB

sudo mysqladmin -u root password "$DB_ROOT_PASSWORD"

e. Tải và giải nén WordPress vào web root

sudo wget https://wordpress.org/latest.tar.gz -P /var/www/html
cd /var/www/html
sudo tar -zxvf latest.tar.gz
sudo cp -r wordpress/* .
sudo rm -rf wordpress
sudo rm -f latest.tar.gz

f. Tạo file wp-config.php và thay thế thông tin DB

sudo cp wp-config-sample.php wp-config.php
sudo sed -i "s/database_name_here/$DB_NAME/" wp-config.php
sudo sed -i "s/username_here/$DB_USER/" wp-config.php
sudo sed -i "s/password_here/$DB_PASSWORD/" wp-config.php

g. Phân quyền cho Apache

sudo chown -R apache:apache /var/www/html

h. Tạo script cấu hình database cho WordPress

echo "CREATE DATABASE $DB_NAME;" > /tmp/dbsetup.sql
echo "CREATE USER '$DB_USER'@'localhost' IDENTIFIED BY '$DB_PASSWORD';" >> /tmp/dbsetup.sql
echo "GRANT ALL PRIVILEGES ON $DB_NAME.* TO '$DB_USER'@'localhost';" >> /tmp/dbsetup.sql
echo "FLUSH PRIVILEGES;" >> /tmp/dbsetup.sql
sudo mysql -u root -p"$DB_ROOT_PASSWORD" < /tmp/dbsetup.sql
rm -f /tmp/dbsetup.sql

5. Kiểm tra trạng thái WordPress

  • Lấy IP public của EC2
  • Truy cập http://<EC2_Public_IP> trên trình duyệt
  • Nếu đúng, thấy giao diện cài đặt WordPress (chưa hoàn tất setup – chính xác như mong muốn để tạo AMI!)

6. Tuỳ biến EC2: Banner động vật khi đăng nhập

a. Cài đặt cowsay (utility tạo ASCII động vật)

sudo dnf install cowsay -y

b. Tạo file message of the day (MOTD) động vật

sudo nano /etc/update-motd.d/40-cow
# Dán vào bên trong file:
#!/bin/bash
cowsay "Welcome to Animals For Life EC2!"
- Ctrl+O để save, Ctrl+X để thoát

c. Set permission và force update MOTD

sudo chmod +x /etc/update-motd.d/40-cow
sudo run-parts /etc/update-motd.d > /run/motd.dynamic

d. Reboot lại instance để kiểm tra banner

sudo reboot
  • Sau khi reboot, reconnect lại EC2 (Instance Connect) sẽ thấy banner động vật khi đăng nhập.

7. Tổng kết phần 1

  • EC2 đã được cài sẵn WordPress (chưa hoàn tất cài đặt) + banner động vật cho business Animals For Life.
  • Đây là “mẫu gốc” để tạo AMI.
  • AMI này giúp deploy nhanh nhiều EC2 với cấu hình giống hệt (WordPress sẵn sàng, banner động vật).

Tiếp tục phần 2: Hướng dẫn tạo AMI từ instance này và kiểm tra launch EC2 mới từ AMI.