Tuesday, September 29, 2020

Cấu hình travel-blog trên AWS

EC2 instance

Tạo EC2 instance ubuntu 20.4 với default VPC

cài đặt nginx

sudo apt install nginx

cài đặt mongodb

sudo apt install mongodb

git clone 3 project vào thư mục blog

drwxrwxr-x  3 ubuntu ubuntu 4096 Sep 30 03:37 dump/

-rw-r--r--  1 ubuntu ubuntu 2006 Sep 30 03:38 ecosystem.config.js

drwxrwxr-x 10 ubuntu ubuntu 4096 Sep 30 03:35 travel-blog/

drwxrwxr-x 10 ubuntu ubuntu 4096 Sep 30 03:35 travel-blog-admin/

drwxrwxr-x  4 ubuntu ubuntu 4096 Sep 30 03:35 travel-blog-static/

đưa dữ liệu ban đầu vào mongodb

mongorestore dump/

cài đặt nvm

curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.36.0/install.sh | bash

cài đặt node v12 và npm

nvm install lts/erbium

cài đặt pm2

npm install pm2@latest -g

cài đặt gulp

npm install --global gulp-cli

chạy nodejs production

pm2 start ecosystem.config.js

cấu hình nginx server block

cd /etc/nginx/sites-available

tạo 3 file

-rw-r--r-- 1 root root  225 Sep 30 04:05 admin.thesologuy.info

-rw-r--r-- 1 root root  225 Sep 30 04:05 static.thesologuy.info

-rw-r--r-- 1 root root  225 Sep 30 04:04 thesologuy.info

nội dung
server {
       listen 80;
       listen [::]:80;

       server_name thesologuy.info;

       root /var/www/thesologuy.info;
       index index.html;

       location / {
               try_files $uri $uri/ =404;
       }
}
link 3 file đến thư mục site-enabled
sudo ln -s /etc/nginx/sites-available/thesologuy.info /etc/nginx/sites-enabled/
..
cấu hình nginx reverse proxy
sudo nano /etc/nginx/sites-available/static.thesologuy.info và sửa location như sau
server {
...
    location / {
        proxy_pass http://localhost:3000;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
    }
...
}
2 file còn lại làm tương tự
chú ý port 
static.thesologuy.info => 3000
admin.thesologuy.info => 3001
thesologuy.info => 3002
..
kiểm tra lại
sudo nginx -t
restart nginx
sudo systemctl restart nginx

Load balancer

chọn loại application( http/https)
chon listener CHỈ bao gồm cả http
tạo target group và thêm ec2 instance đã tạo vào group này

Route 53

Tạo hosted zone cho thesologuy.info (mặc định sẽ tạo SOA và NS record)
Tạo 2 bản ghi type A loại simple routing cho thesologuy.info và *.thesologuy.info
trỏ 2 bản ghi này vào load balancer vừa tạo

Đến đây thì có thể vào http://thesologuy.info và http://admin.thesologuy.info để sử dụng

AWS certificate

Tạo mới certificate từ ACM (AWS certificate manager):
tạo mới certificate cho cả 2 loại domain name: thesologuy.info và *.thesologuy.info
tạo CNAME record cho thesologuy.info

Load balancer

Thêm listenr HTTPS vào load balancer, trỏ nó đến target group có ec2 instance
listener này sử dụng certificate vưà tạo

1 comment:

  1. CHÚ Ý: khi đăng ký mới 1 domain thì Route 53 sẽ tự động tạo 1 hosted zone. nếu xóa hosted zone này đi và tạo lại cái khác thì sẽ ko bị lỗi
    nguyên nhân : những hosted zone được tạo lần sau sẽ được AWS cấu hình bừa, cần phải sửa lại
    khi đó phải sửa lại DNS của domain cho giống với NS record của hosted zone (cấu hình như vậy sẽ ko lỗi )
    hoặc ngược lại, sửa NS record và SOA record của hosted zone cho giống với DNS của domain (theo logic thì ko lỗi, nhưng hiện tại thì cấu hình như vậy sẽ lỗi)

    ReplyDelete