Chúng ta sử dụng git để clone source code. Trước hết, cài đặt git bằng lệnh sau:
sudo dnf install git

Kiểm tra cài đặt git thành công bằng lệnh
git version

Thực hiện clone repository code ứng dụng
cd ~ec2-user
git clone https://github.com/First-Cloud-Journey/000004-EC2.git

Đến thư mục của bài lab 000004-EC2 và kiểm tra các file
cd 000004-EC2

ls

NPM là viết tắt của Node package manager là một công cụ tạo và quản lý các thư viện lập trình Javascript cho Node.js. Sử dụng npm init khởi tạo project sẽ tạo ra file package.json mẫu.
npm init
Note: Bạn tiến hành cấu hình thông tin của ứng dụng và được lưu trong file package.json

Tiếp theo chúng ta thực hiện dependencies installation
npm install express dotenv express-handlebars body-parser mysql

! Cách khắc phục các lỗ hổng bảo mật liên quan đến Nodemon
Nếu sau khi chạy lệnh npm audit mà số lượng vulnerabilities > 0, bạn có thể thử gỡ bỏ và cài đặt lại nodemon theo các bước sau:
npm uninstall --save-dev nodemon
npm install nodemon@latest --save-dev
npm audit

Giải thích:
Nodemon là công cụ hỗ trợ phát triển giúp tự động khởi động lại ứng dụng khi mã nguồn thay đổi.
Các phiên bản nodemon cũ có thể sử dụng dependency chứa lỗ hổng bảo mật.
Việc cài đặt lại nodemon sẽ cập nhật các dependency lên phiên bản an toàn hơn, giúp giảm hoặc loại bỏ các cảnh báo bảo mật.
Kiểm tra các dependencies đã cài đặt. Thư mục node_modules xuất hiện.
ls

Tạo file .env
touch .env

Sử dụng vi để chỉnh sửa file .env. Ta thực hiện cấu hình database:
DB_HOST=localhost
DB_NAME=awsuser
DB_USER=root
DB_PASS=password
Hướng dẫn nhanh sử dụng vi / vim
Mở file: vi <tên_file>
Vào chế độ chỉnh sửa (insert mode): Nhấn phím i
Lưu và thoát: Nhấn Esc, sau đó gõ :wq rồi nhấn Enter
Thoát mà không lưu: Nhấn Esc, sau đó gõ :q! rồi nhấn Enter

Kiểm tra cấu hình database
ls -a

Khởi động lại Express server. Sử dụng Nodemon để tiết kiệm thời gian
npm start

! Khắc phục lỗi TypeError: exphbs is not a function (Express Handlebars)
Vấn đề: Khi khởi động ứng dụng Express, xuất hiện lỗi sau: TypeError: exphbs is not a function
Nguyên nhân: Các phiên bản mới của express-handlebars đã thay đổi cách import và khởi tạo module. Cú pháp cũ không còn được hỗ trợ.
Cách khắc phục: Trong file app.js
const exphbs = require('express-handlebars'); bằng:const { engine } = require('express-handlebars');
app.engine('hbs', engine({ extname: '.hbs' })); bằng:app.engine('hbs', engine({ extname: '.hbs' }));
Bạn có thể sử dụng vi hoặc nano để chỉnh sửa file app.js.

Trong giao diện EC2
Dán Public IPv4 DNS address vào trình duyệt và cổng 5000. Quan sát giao diện AWS FCJ Management


Trong giao diện phpMyAdmin, chúng ta thực hiện SQL Dummy Data
INSERT INTO `user`
(`id`, `first_name`, `last_name`, `email`, `phone`, `comments`, `status`) VALUES
(NULL, 'Amanda', 'Nunes', 'anunes@ufc.com', '012345 678910', '', 'active'),
(NULL, 'Alexander', 'Volkanovski', 'avolkanovski@ufc.com', '012345 678910', '', 'active'),
(NULL, 'Khabib', 'Nurmagomedov', 'knurmagomedov@ufc.com', '012345 678910', '', 'active'),
(NULL, 'Kamaru', 'Usman', 'kusman@ufc.com', '012345 678910', '', 'active'),
(NULL, 'Israel', 'Adesanya', 'iadesanya@ufc.com', '012345 678910', '', 'active'),
(NULL, 'Henry', 'Cejudo', 'hcejudo@ufc.com', '012345 678910', '', 'active'),
(NULL, 'Valentina', 'Shevchenko', 'vshevchenko@ufc.com', '012345 678910', '', 'active'),
(NULL, 'Tyron', 'Woodley', 'twoodley@ufc.com', '012345 678910', '', 'active'),
(NULL, 'Rose', 'Namajunas ', 'rnamajunas@ufc.com', '012345 678910', '', 'active'),
(NULL, 'Tony', 'Ferguson ', 'tferguson@ufc.com', '012345 678910', '', 'active'),
(NULL, 'Jorge', 'Masvidal ', 'jmasvidal@ufc.com', '012345 678910', '', 'active'),
(NULL, 'Nate', 'Diaz ', 'ndiaz@ufc.com', '012345 678910', '', 'active'),
(NULL, 'Conor', 'McGregor ', 'cmcGregor@ufc.com', '012345 678910', '', 'active'),
(NULL, 'Cris', 'Cyborg ', 'ccyborg@ufc.com', '012345 678910', '', 'active'),
(NULL, 'Tecia', 'Torres ', 'ttorres@ufc.com', '012345 678910', '', 'active'),
(NULL, 'Ronda', 'Rousey ', 'rrousey@ufc.com', '012345 678910', '', 'active'),
(NULL, 'Holly', 'Holm ', 'hholm@ufc.com', '012345 678910', '', 'active'),
(NULL, 'Joanna', 'Jedrzejczyk ', 'jjedrzejczyk@ufc.com', '012345 678910', '', 'active')


Refresh giao diện ứng dụng

Xem user

Chỉnh sửa user

Thêm user

Tìm kiếm user

Database sau khi insert item

Giao diện của instance khi khởi động local server
