icon picker
Deploy

***Concept ❤️✅

✅Concept about DNS
VIết tắt “Domain Name System”, mang ý nghĩa đầy đủ là Hệ thống phân giải tên miền ​*Hiểu ngắn gọn → DNS cơ bản là một hệ thống chuyển đổi các tên miền website mà chúng ta đang sử dụng, ở dạng sang một địa chỉ IP dạng số tương ứng với tên miền đó và ngược lại
*Chức năng:: → DNS được hiểu là 1 người phiên dịch, dịch 1 địa chỉ IP gồm 4 nhóm số khác nhau
Ex:: 421.64.875.899 hoặc ngược lại → thay vì user nhớ IP của hosting , → user chỉ cần nhớ tên website, brower sẽ tự động nhận diện. → Bất cứ khi nào bạn truy cập vào website tùy ý or gửi 1 email, → DNS đóng vai trò rất quan trọng trong trường hợp này.

TIP DEPLOY ❤️✅

In project:: config environment variable

***For nextjs

Below is the multiple .env files
.env.development
.env.staging
.env.prestaging
.env.production
→ There’s only 3 envs that offcially supported for now, it is “development, test, production”
::with next dev use “development”
::with next build & next start uses “production” env
→ if you need build for production env, but using “.env.staging”, then you need to add env-cmd package and... config into package.json "build:staging": "env-cmd -f .env.staging yarn build && yarn start"
*use env-cmd:: cho phép sử dụng env như một biến phụ thuộc vào từng môi trường.

**Deploy to vercel❤️❤️❤️

✅Deploy
→ Lên trang chủ deploy và config domain, ...
Environment variables
+ Để ý sau khi config environment variable thì reDeploy

**Deploy to Netify❤️❤️❤️


**Deploy to AWS Amplify (AWS)❤️❤️❤️

**Deploy to S3 (AWS)❤️❤️❤️

***Lab document
aws s3 ls hiển thị list bucket
aws s3 ls s3://{buckname}/{path} dir bucket
aws s3 mb s3://{buckname} tạo bucket
aws s3 rb s3://{buckname} xóa bucket trường hợp bucket có data
aws s3 rb s3://{buckname} --force xóa bucket trường hợp bucket không có dữ liệu
aws s3 sync {folder path} s3://{buckname}/{path} Đồng bộ lên bucket trường hợp này chỉ thêm và update mà không xóa
aws s3 sync {folder path} s3://{buckname}/{path} --delete Đồng bộ với thư mục local sẽ xóa file nếu không tồn tại ở local
aws s3 cp {file path} s3://{buckname}/{path} copy file từ local lên s3
aws s3 mv {file path} s3://{buckname}/{path} move file từ local lên s3
aws s3 rm s3://{buckname}/{file path} xóa file
aws s3 rm s3://{buckname}/{folder path} --recursive xóa thư mụcaws s3 ls hiển thị list bucket
aws s3 ls s3://{buckname}/{path} dir bucket
aws s3 mb s3://{buckname} tạo bucket
aws s3 rb s3://{buckname} xóa bucket trường hợp bucket có data
aws s3 rb s3://{buckname} --force xóa bucket trường hợp bucket không có dữ liệu
aws s3 sync {folder path} s3://{buckname}/{path} Đồng bộ lên bucket trường hợp này chỉ thêm và update mà không xóa
aws s3 sync {folder path} s3://{buckname}/{path} --delete Đồng bộ với thư mục local sẽ xóa file nếu không tồn tại ở local
aws s3 cp {file path} s3://{buckname}/{path} copy file từ local lên s3
aws s3 mv {file path} s3://{buckname}/{path} move file từ local lên s3
aws s3 rm s3://{buckname}/{file path} xóa file
aws s3 rm s3://{buckname}/{folder path} --recursive xóa thư mục

**Server Amazon EC2 (AWS)❤️❤️❤️

✅Syntax/command-line
~ Truy cập vào quyền admin sudo su - / thoát quyền admin: exit
~ Tạo user: useradd {name}
~ Tạo password: passwd {name}
→ tạo server thì mặc định của ec2 sẽ phải truy cập thông qua ssh key, or có thể set lại quyền thông qua syntax dướivi /etc/ssh/sshd_config → Tìm đến “PaswordAuth...” set is yes
~ Xóa user: userdel {name}
~ Tạo ssh key, chuyển qua user mà muốn tạo ssh-key ​ssh-keygen -t rsa cd /home/{username}/.ssh/ ls -la mv id_rsa.pub authorized_keys (đổi tên) chmod 600 authorized_keys(tắt quyền cho user khác ko read cho file pub_key)
✅Tạo Apache → là một phần mềm web server, giống như Nginx
yum install httpd -y (cài đặt apache) service httpd start (run) telnet localhost 80 / nếu chưa có telnet: yum install telnet truy cập trên EC2 (mở cổng 80 cho firewall, click vào launch-wizard-3) cd /var/www/html/ mkdir {name-folder} → tạo 1 folder để lưu trữ web vi /etc/httpd/conf/httpd.conf → check cấu hình apache chown -Rf : apache tw-react-ui/ → cấu hình chuyển sang group tw-react-ui vi /etc/httpd/conf/httpd.conf → Cấu hình tên miền lên server
<VirtualHost *:80>
ServerAdmin info@thaiaws.click
DocumentRoot /var/www/html/tw-react-ui
ServerName ec2.thaiaws.click
<Directory "/var/www/html/tw-react-ui">
Order deny,allow
Allow from all
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
service httpd restart → restart cấu hình ​id thai → check id thai xem có trong group chưa ​usermod -a -G apache thai → add thai vào group apache ​chmod 775 tw-react-ui → set thêm quyền write cho folder tw-react-ui/ ​→ chèn thêm file, tại file index.html và run ​sudo systemctl restart nginx sudo restart 0

**Deploy to Amazon ECS (AWS)❤️❤️❤️

✅ECR


✅ECS

**Distributed web clone (CDN)❤️❤️❤️

*CDN là 1 khái niệm, chuyên đi cache content network *Deploy app web với mạng phân phối nội dung (CDN) Ref:
✅Các bên làm về CDN (bên cho thuê máy chủ lưu trữ web clone) - cloudflare - cloudfront
*CloudFront ❤️✅ → là dịch vụ CDN, chuyên đi cache content web
uc:: nếu deploy 1 dự án bên hạ tầng US, nhưng có 1 khách hàng bên singapo truy cập vào (thì phải mất 1 khoảng time rất lâu). cdn sinh ra để giải quyết vấn đề đó, nó sẽ cache lại web và phân phối nó ở mọi hạ tầng mà nó đặt tại các nước trên thế giới. → khi đó khách hàng truy cập thay vì đến hạ tầng bên US thì nó sẽ điều hướng sang hạ tầng gần nhất
Flow: + 1 html (gọi là origin), được build hạ tầng tại US + CFD (CloudFront Distribution), được cấu hình tại các hạ tầng như (Sing, Korea, ...) → Khi cấu hình CFD trên origin, ta có OAI (origin access identity) tác dụng là để CFD có quyền truy cập vào origin
Tính năng:: + TTL: khi 1 web, dữ liệu được làm mới và đẩy lên thì TTL là time mà CFD được refesh, chưa hết time của TTL thì data vẫn là cũ + Invalidations: refesh những file với dữ liệu mới trên các location cfd
Khuyết điểm:: + S3 buckets phải trùng với tên website → nên để giải quyết vấn đề trên, sd () → sử dụng 1 domain
*Cấu hình Hosted Zone Route 53 AWS ❤️✅ → Đó là chuyển nhà cung cấp từ domain sẵn có và chuyển nó sang aws *Có 1 web và domain đang live, giờ muốn thay đổi nhà cung cấp sang aws (web, subWeb), cho nó trỏ vào cloudFront thì làm có các bước bên dưới. ​
image.png
Các bước:: 1. Hosted zone 2. Config record 3. Update DNS
BT:: 1. Ví dụ tên website “thaiaws” thì s3 bucket phải là “thaiaws”, vì đây là tên global và ko ai có thể sử dụng nó nữa
2. S3 bucket bản chất là theo region vì thế nên khi khách hàng truy cập vẫn sẽ bị delay để lấy dữ liệu
3. domain ko có https
Different between CNAM & A ​Ref:

Các tool/library

*PM2

→ Là một công cụ quản lý tiến trình. → Cơ bản nó sẽ giữ cho app luôn chạy, mỗi khi có pull code mới sẽ restart lại app, để giữ độ ổn định

CI/CD ❤️✅

CI: (Condinuous integration - phương pháp phát triển phần mềm, merge liên tục), tích hợp code thường xuyên → CI phát hiện ra code trên repo đã được thay đổi, từ đó triggle để build, chạy các unit test, integration test
CD: (Condinuous delivery - chuyển giao liên tục), quá trình này sẽ kiểm tra tất cả các thay đổi về code đã được build và code trong môi trường kiểm thử → Cho phép dev tự động hóa quá trình testing (bao gồm - UI testing, integration testing)
CI/CD: là quá trình làm việc liên tục và tự động hóa của phần mềm → Để quá trình được kiểm tra liên tục thì CI/CD cần tích hợp vào vòng đời của phát triển phần mềm
Lợi ích: → Hạn chế rủi ro → Thay đổi code nhỏ → Giảm thiểu ảnh hưởng của lỗi hiệu quả → Đảm bảo logic → Tập trung công việc hơn → Nâng cao chất lượng code thông qua quy trình → Phát triển kỹ năng unit test của dev → Tối ưu tốc độ phát triển của sản phẩm
image.png
*CI/CD pipeline: là tập hợp các công cụ và quy trình ​
image.png
Những cách tích hợp CI/CD:
image.png
*CI/CD + webhooks(github) + jenkins:
*CI/CD pipeline + github action:


Want to print your doc?
This is not the way.
Try clicking the ⋯ next to your doc name or using a keyboard shortcut (
CtrlP
) instead.