Triển khai ứng dụng trên Linux Instance

Triển khai ứng dụng trên Linux

  1. 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
    

    create vpc for linux instance

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

    git version
    

    create vpc for linux instance

  3. Thực hiện clone repository code ứng dụng

    cd ~ec2-user
    git clone https://github.com/First-Cloud-Journey/000004-EC2.git
    

    create vpc for linux instance

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

    cd 000004-EC2
    

    create vpc for linux instance

    ls
    

    create vpc for linux instance

  5. 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

    create vpc for linux instance

  6. Tiếp theo chúng ta thực hiện dependencies installation

    • express
    • Dotenv
    • express-handlebars
    • body-parser
    • mysql
    npm install express dotenv express-handlebars body-parser mysql
    

    create vpc for linux instance

    ! 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:

    • Bước 1: Gỡ cài đặt nodemon
    npm uninstall --save-dev nodemon
    
    • Bước 2: Cài đặt lại nodemon với phiên bản mới nhất
    npm install nodemon@latest --save-dev
    
    • Bước 3: Kiểm tra lại các lỗ hổng bảo mật
    npm audit
    

    create vpc for linux instance

    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.

  7. Kiểm tra các dependencies đã cài đặt. Thư mục node_modules xuất hiện.

    ls
    

    create vpc for linux instance

  8. Tạo file .env

    touch .env
    

    create vpc for linux instance

  9. 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

    create vpc for linux instance

    • Note: Trong bài lab chúng ta sử dụng database name là awsuser và thông tin database đã được cấu hình ở bước cấu hình bảo mật database (password: 123Admin)
  10. Kiểm tra cấu hình database

    ls -a
    

    create vpc for linux instance

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

    npm start
    

    create vpc for linux instance

    ! 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

      • Hãy thay thế const exphbs = require('express-handlebars'); bằng:
      const { engine } = require('express-handlebars');
      
      • Và thay thế 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.

    create vpc for linux instance

  12. Trong giao diện EC2

    • Chọn Instances
    • Chọn Linux-instance
    • Sao chép Public IPv4 DNS address
  13. 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

    create vpc for linux instance

    create vpc for linux instance

  14. Trong giao diện phpMyAdmin, chúng ta thực hiện SQL Dummy Data

    • Chọn awsuser database
    • Chọn SQL
    • Dán đoạn code SQL query vào
    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')
    
    • Chọn Format
    • Chọn Go

    create vpc for linux instance

    create vpc for linux instance

  15. Refresh giao diện ứng dụng

    create vpc for linux instance

  16. Xem user

    create vpc for linux instance

  17. Chỉnh sửa user

    create vpc for linux instance

  18. Thêm user

    create vpc for linux instance

  19. Tìm kiếm user

    create vpc for linux instance

  20. Database sau khi insert item

    create vpc for linux instance

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

    create vpc for linux instance