การติดตั้งแอปพลิเคชันลง Server Amazon Linux 2 ผ่าน User data

การติดตั้งแอปพลิเคชันลง Server Amazon Linux 2 ผ่าน User data สามารถติดตั้งโดยการวางคำสั่งลง User data ในระหว่างการสร้าง Instance ได้โดยไม่ต้องติดตั้งด้วยตัวเองหลังจากสร้าง Instance เสร็จ

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

ผมป๊อปนะครับ ครั้งนี้ผมจะมาแนะนำการติดตั้งแอปพลิเคชันลง Server Amazon Linux 2 ผ่าน User data ในระหว่างที่ทำการสร้าง EC2 Instance

การสร้าง Key Pairs

ค้นหา?︎ EC2» เลือกEC2
Search-EC2

คลิกKey Pairs
menu_keypairs

คลิกCreate key pair
KP-2

ใส่ชื่อที่ต้องการในช่อง Name เช่นwindows-tinnakorn» คลิกCreate key pair
key-userdata-1

หลังจากสร้าง Key Pair เสร็จแล้ว ไฟล์.ppkจะถูกดาวน์โหลดมาที่คอมพิวเตอร์และชื่อไฟล์จะเปลี่ยนไปตามที่เราได้ตั้งชื่อไว้โดยอัตโนมัติ
key-userdata-2

การสร้าง EC2 Instance (Amazon Linux 2)

ค้นหา?︎ EC2» เลือกEC2
Search-EC2

คลิกInstance
Instance-select

คลิกLaunch instances
Ins-win-1

Step 1: Choose an Amazon Machine Image (AMI) คือ Instance จะมีเซิร์ฟเวอร์ให้เลือกใช้มากมาย เช่น macOS, Red Hat, SUSE Linux, Ubuntu, Microsoft Windows, Debian เป็นต้น ซึ่งในบล็อกนี้จะใช้ Amazon Linux 2 AMI (HVM) ในการติดตั้ง

» Amazon Linux 2 AMI (HVM) - Kernel 5.10, SSD Volume Type คลิกSelect
create_instance_userdata-1

Step 2: Choose an Instance Type คือ เราสามารถเลือก Type CPU Memory ที่จะนำไปใช้งานได้ตามความต้องการ ไม่ว่าเว็บไซต์จะมีขนาดเล็กหรือขนาดใหญ่ ก็สามารถเลือกขนาดความจุของ CPU Memory ได้ตามความเหมาะสม

» เลือก Family => t3a | Type => t3a.nano | vCPUs => 2 | Memory => 0.5(สามารถเลือกใช้งานได้ตามความต้องการ)
» คลิกNext: Configure Instance Details
create_instance_userdata-2

Step 3: Configure Instance Details

» เลื่อนลงมาด้านล่างสุด แล้วตั้งค่าตามด้านล่างนี้
» ดูที่หัวข้อ User data แล้วใส่คำสั่งตามนี้

#!/bin/bash
yum update -y
amazon-linux-extras install -y php8.0
yum install -y httpd
systemctl start httpd
systemctl enable httpd

» คลิกNext: Add Storage
create_instance_userdata-3

Step 4: Add Storage คือ ในส่วนของ Size (GiB) เราสามารถเพิ่ม Storage ได้ โดยค่าเริ่มต้นจะเป็น 8GB

» คลิกNext: Add Tags
create_instance_userdata-4

Step 5: Add Tags » คลิกAdd Tage
create_instance_userdata-5

» Key:Name | Value:tinnakorn-userdata(ใส่ชื่ออะไรก็ได้)
» คลิกNext: Configure Security Group
create_instance_userdata-6

Step 6: Configure Security Group คือ การตั้งค่า My IP เพื่อจำกัดการเชื่อมต่อ SSH จากทุกตำแหน่ง ซึ่งในส่วนนี้จะทำให้สามารถเชื่อมต่อ SSH จาก My IP (ที่อยู่ IP ปัจจุบันของคุณ) ได้เท่านั้น และในส่วนของ HTTP จะใช้ในการแสดงผลหน้าเว็บไซต์นั่นเอง

เปลี่ยนชื่อ Security group name กับ Description เป็นชื่ออะไรก็ได้ เช่นtinnakorn-userdata
เปลี่ยน Type SSH ให้เป็น Source:My IP
คลิกปุ่มAdd Rule
เลือก Type ให้เป็นHTTP
เปลี่ยน Type HTTP ให้เป็น Source:Anywhere
คลิกReview and Launch
create_instance_userdata-7

Step 7: Review Instance Launch » คลิกLaunch
create_instance_userdata-8

ในส่วนของ POPUP ให้ทำตามขั้นตอนด้านล่าง
» Select a key pair:tinnakorn-userdata | RSA(ให้เลือก key pair ที่สร้างไว้ตอนแรก key pair)
» คลิก Checkbox
» คลิกLaunch Instances
create_instance_userdata-9

ถ้ามีข้อความแจ้งเตือนสีเขียวเหมือนรูปภาพด้านล่างนี้ เท่ากับว่าการสร้าง Instance เสร็จสิ้น จากนั้นให้คลิกView Instances
create_instance_userdata-10

หลังจากสร้าง Instance เสร็จแล้ว ให้สังเกตคำว่า Status Checks จะเห็นว่ามีสถานะเป็น? Initializingคือ Instance กำลังทำการสตาร์ทระบบขึ้นมานั่นเอง
create_instance_userdata-11

เมื่อ Instance เริ่มต้นระบบเสร็จเรียบร้อยแล้ว จะมีสถานะเป็น☑ 2/2 checks passed
create_instance_userdata-12

การเชื่อมต่อ EC2 ด้วย PuTTY

คลิกที่ ID Instance
conncet_userdata

Copy IP Instance โดยคลิกที่Public IPv4 address
ซึ่ง IP Instance นี้ จะนำไปใช้ในโปรแกรม PuTTy เพื่อทำการเชื่อมต่อกับ Server Linux
conncet_userdata-1

เปิดโปรแกรม PuTTy ขึ้นมาก็จะมีลักษณะตามรูปภาพด้านล่าง
ขั้นตอนต่อไปจะเป็นการตั้งค่า PuTTy เพื่อเชื่อมต่อกับ Server Linux เรามาเริ่มตั้งค่าในหัวข้อถัดไปได้เลย
conncet_userdata-2

ในส่วนของ Session ให้ตั้งค่าตามนี้
คลิกSession
ใส่ IP Instance ที่คัดลอกมาจาก Instance ลงใน Host Name
Saved Sessions:tinnakorn-userdata(ใส่ชื่ออะไรก็ได้)
conncet_userdata-3

ในส่วนของ Connection ให้ตั้งค่าตามนี้
คลิกConnection
60
conncet_userdata-4

ในส่วนของ Data ให้ตั้งค่าตามนี้ คลิกData
Auto-login username:ec2-user
conncet_userdata-5

ในส่วนของ Auth ให้ตั้งค่าตามนี้
คลิก+SSH
คลิกAuth
คลิกBrowse...
conncet_userdata-6

ไฟล์ที่ถูกดาวน์โหลดมาโดยอัตโนมัติ ค่าเริ่มต้นจะเป็น C:\Users\your_computer_name\Downloads\tinnakorn-userdata.ppk
Browse ไฟล์ที่ได้จากการสร้าง Key Pair มาใช้งาน เช่นtinnakorn-userdata.ppk
คลิกOpen
conncet_userdata-7

การตั้งค่าของAuthเสร็จสิ้น conncet_userdata-8

กลับมาที่Sessionและตั้งค่าตามรูปภาพ
คลิกSession
คลิกSave(เป็นการบันทึกข้อมูลที่ได้ตั้งค่าไว้)
คลิกOpen
conncet_userdata-9

คลิกAccept
conncet_userdata-10

เมื่อเชื่อมต่อเสร็จแล้วจะได้หน้าตาแบบนี้
conncet_userdata-11

การตรวจสอบข้อมูลใน Server Amazon Linux 2

ก่อนดำเนินการในขั้นตอน ต้องทำการเปลี่ยน ec2-user ให้เป็น root ทุกครั้ง เพื่อที่จะสามารถจัดการระบบใน Server Amazon Linux 2 ได้

เรียกใช้คำสั่งนี้เพื่อเข้าสู่ระบบในฐานะผู้ใช้ที่มีสิทธิ์ root

sudo su -

check_userdata-1

เรียกใช้คำสั่งนี้เพื่อตรวจสอบสถานะการติดตั้งคำสั่งต่างๆ ที่ได้ใส่เข้าไปใน User data ของ Instance

less /var/log/cloud-init-output.log

check_userdata-2

เมื่อคำสั่งใน User data ทั้งหมดถูกติดตั้งเสร็จเรียบร้อยแล้ว จะได้หน้าตาแบบนี้
check_userdata-3

ตรวจสอบข้อมูลที่ถูกติดตั้งลงไป เช่น การติดตั้ง PHP8.0 สามารถตรวจสอบ version php ได้ด้วยคำสั่งนี้
แต่อาจจะต้องรอสักครู่เพื่อให้การติดตั้ง PHP8.0 เสร็จสิ้น

php -v

check_userdata-4

กลับมาที่หน้า EC2 Instance แล้ว Copy Public IPv4 address อีกครั้ง
conncet_userdata-1

จากนั้นนำ Public IPv4 address ของ Instance มาเปิดในหน้าเว็บเบราว์เซอร์ที่เรากำลังใช้งาน
จะเห็นว่าการติดตั้ง PHP8.0 เสร็จสิ้นและสามารถใช้งานได้
check_userdata-5-fix

สรุป

การติดตั้งแอปพลิเคชันลงใน Server Amazon Linux 2 สามารถทำได้หลายวิธี โดยการสาธิตในบทนี้เป็นการติดตั้งแอปพลิเคชันโดยวางคำสั่งใน User data ระหว่างการสร้าง Instance และเมื่อ Instance ถูกสร้างขึ้นแล้ว คำสั่งการติดตั้งแอปพลิเคชันต่างๆ ก็จะถูกรันใน Server Amazon Linux 2 โดยอัตโนมัติ วิธีนี้เป็นวิธีที่อำนวยความสะดวกมากๆ เพราะเราไม่ต้องเข้าไปยัง Server Amazon Linux 2 ผ่าน PuTTy เพื่อติดตั้งแอปพลิเคชันด้วยตัวเอง จึงทำให้การใช้งาน AWS นั้นมีความง่าย สะดวก รวดเร็ว และมีประสิทธิภาพมากยิ่งขึ้น

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