Triển khai ứng dụng

Cài đặt Git trên Amazon EC2 2023

Dưới đây là các bước cơ bản để cài đặt Git trên máy ảo Amazon EC2 chạy hệ điều hành Amazon Linux 2023.

  1. Trước tiên, hãy cập nhật các gói hệ thống để đảm bảo bạn đang sử dụng phiên bản mới nhất:
sudo dnf update -y
  1. Sử dụng lệnh sau để cài đặt Git
sudo yum install git -y
  1. Cài đặt MySQL command-line client
sudo dnf install mariadb105 -y
  1. Kiểm tra phiên bản Git và MySQL đã được cài đặt thành công chưa:
git --version && mariadb --version

Create a VPC

  1. Quay lại giao diện db-instance
  • Cuộn xuống phần Connectivity & security, chọn mục Endpoints
  • Sao chép Endpoint
  1. Kết nối tới MySQL command-line client (không mã hóa)
  • Với tham số -h, hãy thay thế bằng DNS name (endpoint) của DB instance. Bạn có thể tìm thấy DNS name trong bảng điều khiển chi tiết (detail console) của RDS đã tạo.
  • Với tham số -P, hãy thay thế bằng cổng (port) của DB instance (mặc định là 3306).
  • Với tham số -u, hãy thay thế bằng master user bạn đã thiết lập khi tạo RDS.
  • Sau khi chạy lệnh, hãy nhập mật khẩu của master user mà bạn đã đặt trong quá trình tạo RDS.
mysql -h [YOUR-RDS-ENDPOINT] -P 3306 -u admin -p

Create a VPC

Hiển thị Database

Nếu cơ sở dữ liệu fcaj chưa tồn tại, hãy sử dụng lệnh sau để tạo cơ sở dữ liệu mới có tên “fcaj”:

SHOW DATABASES;

Create a VPC

Tạo Database

Nếu bạn muốn tạo thêm một cơ sở dữ liệu mới, bạn có thể sử dụng lệnh sau:

CREATE DATABASE IF NOT EXISTS fcaj;

Create a VPC

Sử dụng Database

Tiếp theo, chúng ta sử dụng cơ sở dữ liệu fcaj bằng lệnh này. Lệnh này cho biết tất cả các lệnh SQL sau đó sẽ được thực thi trong cơ sở dữ liệu fcaj.

USE fcaj;

Create a VPC

Tạo bảng “user”

Chúng ta đã tạo và sử dụng cơ sở dữ liệu. Bây giờ, chúng ta sẽ định nghĩa một bảng “user” trong cơ sở dữ liệu này bằng đoạn SQL sau:

CREATE TABLE `user`
(
    `id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    `first_name` VARCHAR(45) NOT NULL,
    `last_name` VARCHAR(45) NOT NULL,
    `email` VARCHAR(100) NOT NULL UNIQUE,
    `phone` VARCHAR(15) NOT NULL,
    `comments` TEXT NOT NULL,
    `status` ENUM('active', 'inactive') NOT NULL DEFAULT 'active'
) ENGINE = InnoDB;

Lệnh này định nghĩa cấu trúc của bảng “user” với các cột như “id”, “first_name”, “last_name”, “email”, “phone”, “comments” và “status”. Các cột này thể hiện thông tin về người dùng, và cột “id” được đặt làm khóa chính tự động tăng. Create a VPC

Thêm dữ liệu vào bảng “user”

Cuối cùng, chúng ta có thể thêm dữ liệu vào bảng “user” bằng lệnh INSERT INTO. Dưới đây là một ví dụ thêm một số bản ghi vào bảng:

INSERT INTO `user`
(`first_name`, `last_name`, `email`, `phone`, `comments`, `status`)
VALUES
('Amanda', 'Nunes', 'anunes@ufc.com', '012345 678910', 'I love FCAJ', 'active'),
('Alexander', 'Volkanovski', 'avolkanovski@ufc.com', '012345 678910', 'I love FCAJ', 'active'),
('Khabib', 'Nurmagomedov', 'knurmagomedov@ufc.com', '012345 678910', 'I love FCAJ', 'active'),
('Kamaru', 'Usman', 'kusman@ufc.com', '012345 678910', 'I love FCAJ', 'active'),
('Israel', 'Adesanya', 'iadesanya@ufc.com', '012345 678910', 'I love FCAJ', 'active'),
('Henry', 'Cejudo', 'hcejudo@ufc.com', '012345 678910', 'I love FCAJ', 'active'),
('Valentina', 'Shevchenko', 'vshevchenko@ufc.com', '012345 678910', 'I love FCAJ', 'active'),
('Tyron', 'Woodley', 'twoodley@ufc.com', '012345 678910', 'I love FCAJ', 'active'),
('Rose', 'Namajunas', 'rnamajunas@ufc.com', '012345 678910', 'I love FCAJ', 'active'),
('Tony', 'Ferguson', 'tferguson@ufc.com', '012345 678910', 'I love FCAJ', 'active'),
('Jorge', 'Masvidal', 'jmasvidal@ufc.com', '012345 678910', 'I love FCAJ', 'active'),
('Nate', 'Diaz', 'ndiaz@ufc.com', '012345 678910', 'I love FCAJ', 'active'),
('Conor', 'McGregor', 'cmcGregor@ufc.com', '012345 678910', 'I love FCAJ', 'active'),
('Cris', 'Cyborg', 'ccyborg@ufc.com', '012345 678910', 'I love FCAJ', 'active'),
('Tecia', 'Torres', 'ttorres@ufc.com', '012345 678910', 'I love FCAJ', 'active'),
('Ronda', 'Rousey', 'rrousey@ufc.com', '012345 678910', 'I love FCAJ', 'active'),
('Holly', 'Holm', 'hholm@ufc.com', '012345 678910', 'I love FCAJ', 'active'),
('Joanna', 'Jedrzejczyk', 'jjedrzejczyk@ufc.com', '012345 678910', 'I love FCAJ', 'active');

Create a VPC

Hiển thị tất cả thông tin được lưu trữ trong bảng.

Xem tất cả thông tin hiện đang được lưu trữ trong bảng “user”

SELECT * FROM user;

Tạo VPC

Triển khai ứng dụng

  1. Clone kho lưu trữ từ GitHub bằng lệnh sau:
git clone https://github.com/thienluhoan/000006-EC2.git

Tạo VPC

  1. Điều hướng đến thư mục lab:
cd 000006-EC2
  1. Sử dụng nano .env để nhập các biến môi trường, sau đó nhập mã sau để thiết lập kết nối với cơ sở dữ liệu. Nhớ đổi tên trường DB_HOST cho phù hợp.
DB_HOST='YOUR-RDS-ENDPOINT'
DB_NAME='fcaj'
DB_USER='admin'
DB_PASS='Aa12345#'

Tạo VPC 4. Chạy nano script.sh để dán đoạn code sau. Dưới đây là Bash script để cài đặt Node.js trên Amazon EC2 Linux:

#!/bin/bash

# Thoát ngay lập tức nếu một lệnh trả về mã lỗi (non-zero status)
set -e

# --- Cấu hình Môi trường ---
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m' # Không màu

echo -e "${GREEN}Đang bắt đầu Script triển khai (Deployment Script)...${NC}"

# --- Bước 1: Thiết lập môi trường NVM & Node.js ---
export NVM_DIR="$HOME/.nvm"

# Tải NVM nếu đã cài đặt, nếu không thì tiến hành cài đặt mới
if [ -s "$NVM_DIR/nvm.sh" ]; then
    echo -e "${YELLOW}Đang tải NVM hiện có từ $NVM_DIR...${NC}"
    \. "$NVM_DIR/nvm.sh"
else
    echo -e "${YELLOW}Đang cài đặt NVM (Node Version Manager)...${NC}"
    curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.3/install.sh | bash
    \. "$NVM_DIR/nvm.sh"
fi

# Cài đặt Node.js phiên bản LTS và đặt làm phiên bản mặc định cho các phiên làm việc sau
echo -e "${YELLOW}Đang cài đặt Node.js LTS...${NC}"
nvm install --lts
nvm use --lts
nvm alias default 'lts/*'

# Xác minh phiên bản
NODE_VERSION=$(node -v)
NPM_VERSION=$(npm -v)
echo -e "${GREEN}Phiên bản Node: ${NODE_VERSION}${NC}"
echo -e "${GREEN}Phiên bản NPM: ${NPM_VERSION}${NC}"

# --- Bước 2: Cài đặt PM2 toàn cục ---
# Kiểm tra nếu PM2 chưa được cài đặt; nếu chưa, tiến hành cài đặt global
if ! command -v pm2 &> /dev/null; then
    echo -e "${YELLOW}Đang cài đặt PM2 (Production Process Manager) toàn cục...${NC}"
    npm install pm2 -g
else
    echo -e "${GREEN}PM2 đã được cài đặt trước đó.${NC}"
fi

# --- Bước 3: Khởi tạo dự án ---
# Tạo file package.json nếu nó chưa tồn tại trong thư mục hiện tại
if [ ! -f package.json ]; then
    echo -e "${YELLOW}Đang khởi tạo package.json...${NC}"
    npm init -y
fi

# --- Bước 4: Cài đặt các gói phụ thuộc  ---
echo -e "${YELLOW}Đang cài đặt các production dependencies...${NC}"
npm install express dotenv express-handlebars body-parser mysql

echo -e "${YELLOW}Đang cài đặt các development dependencies...${NC}"
npm install --save-dev nodemon

# --- Bước 5: Cấu hình NPM Script ---
# Thêm các script 'start' và 'dev' vào package.json bằng lệnh
echo -e "${YELLOW}Đang cấu hình các script trong package.json...${NC}"
npm pkg set scripts.start="pm2 start app.js --name 'app' --watch"
npm pkg set scripts.dev="nodemon app.js"

# --- Bước 6: Thiết lập quản lý tiến trình ---
echo -e "${YELLOW}Thiết lập PM2 tự động chạy khi khởi động hệ thống (system boot)...${NC}"

# Tạo và thực thi script startup của PM2, ánh xạ chính xác đường dẫn Node
sudo env PATH=$PATH:$(dirname $(which node)) $(which pm2) startup systemd -u $USER --hp $HOME

# --- Hoàn tất ---
echo -e "${GREEN}Script triển khai đã hoàn tất thành công!${NC}"
echo -e "${YELLOW}---------------------------------------------------------${NC}"
echo -e "${YELLOW}Các bước tiếp theo:${NC}"
echo -e "${YELLOW}1. Chạy lệnh 'source ~/.bashrc' để làm mới terminal của bạn.${NC}"
echo -e "${YELLOW}2. Chạy lệnh 'npm start' để khởi chạy ứng dụng qua PM2.${NC}"
echo -e "${YELLOW}3. Chạy lệnh 'pm2 save' để lưu danh sách tiến trình nhằm tự động khởi động lại.${NC}"
echo -e "${YELLOW}---------------------------------------------------------${NC}"

Create a VPC 5. Sử dụng lệnh chmod +x script.sh để cấp quyền thực thi cho tệp.

Tạo VPC

  1. Chạy bash script.sh để bắt đầu cài đặt Tạo VPC Tạo VPC

  2. Cần chạy source ~/.bashrc để làm mới terminal của bạn.

  3. Chạy npm start để khởi động ứng dụng của bạn thông qua PM2.

  4. Chạy pm2 save để đóng băng danh sách tiến trình của bạn để tự động khởi động lại. Tạo VPC

  5. Chạy lệnh pm2 status để hiển thị trạng thái hiện tại của tất cả các ứng dụng đang được PM2 quản lý. Khi chạy lệnh này, bạn sẽ nhận được tổng quan về từng ứng dụng, bao gồm các chi tiết như trạng thái (đang chạy, đã dừng, v.v.), mức sử dụng bộ nhớ, mức sử dụng CPU và số lần khởi động lại. Điều này giúp giám sát hiệu suất và tình trạng của các ứng dụng Node.js một cách hiệu quả.

Tạo VPC

  1. Quay lại bảng điều khiển EC2, chọn ec2-instance để sao chép địa chỉ IPv4 công cộng. Tạo VPC

  2. Mở trình duyệt web và nhập địa chỉ IP hoặc tên miền của phiên bản EC2, theo sau là cổng 5000, ví dụ: http://<địa chỉ IP hoặc tên miền> :5000. Thao tác này sẽ thiết lập kết nối đến ứng dụng của bạn đang chạy trên cổng 5000. Tạo VPC

(Tùy chọn) Một số lệnh SQL để kiểm tra thông tin cơ sở dữ liệu trong hệ quản trị cơ sở dữ liệu (DBMS) như MySQL hoặc PostgreSQL:

  1. Chọn một cơ sở dữ liệu cụ thể để làm việc:
USE database_name;

Lệnh này sẽ chuyển bạn từ cơ sở dữ liệu hiện tại sang cơ sở dữ liệu có tên “database_name”. Sau khi sử dụng lệnh này, tất cả các lệnh SQL tiếp theo sẽ áp dụng cho cơ sở dữ liệu này.

  1. Hiển thị cấu trúc của một bảng cụ thể:
DESCRIBE table_name;

Lệnh này sẽ cho bạn biết cấu trúc của bảng có tên “table_name”, bao gồm tên cột, kiểu dữ liệu và các thuộc tính khác của cột.

  1. Hiển thị thông tin về kích thước cơ sở dữ liệu:
SELECT table_schema "fcaj", SUM(data_length + index_length) / 1024 / 1024 "Kích thước cơ sở dữ liệu (MB)"
FROM information_schema.tables
GROUP BY table_schema;

Lệnh này sẽ hiển thị thông tin về kích thước của các cơ sở dữ liệu trong hệ thống, tính bằng Megabyte (MB).

Hãy nhớ thay thế “database_name” và “table_name” bằng tên cụ thể của cơ sở dữ liệu và bảng bạn muốn kiểm tra. Các lệnh này giúp bạn quản lý và kiểm tra thông tin về cơ sở dữ liệu của mình.

Tạo VPC