Hướng dẫn config server react js deployment năm 2024
Trong bài viết này, mình sẽ hướng dẫn các bạn deploy lên production website Next.js lên Vultr VPS. Với Node.Js thì tương tự 99.99% nhé (chắc khác mỗi 1 câu lệnh build code) Show
Chúng ta sẽ tiến hành tạo một VPS mới (máy chủ riêng ảo) với hệ điều hành Ubuntu, cấu hình server để có thể chạy được ứng dụng Node.js, cấu hình tên miền, sử dụng Nginx web server và setup mã hóa HTTPS/SSL cho website của bạn để nó có đường link là Your identification has been saved in /c/Users/dutha/.ssh/id_duthanhduoc10 Your public key has been saved in /c/Users/dutha/.ssh/id_duthanhduoc10.pub 6. Trước khi bắt đầu hướng dẫn này, bạn cần có một ứng dụng Node.Js hoặc Next.Js chạy không lỗi ở máy tính của các bạn. Với Next.js bạn cần build code các bạn ở local để chắc chắn rằng nó không có lỗi nào, đôi khi bạn chạy Một khi bạn đã chuẩn bị xong rồi thì mình sẽ bắt đầu nhé. Dưới đây là video full hướng dẫn deploy NextJs / NodeJs lên VPS 👇🏻 🥇Tạo một Vultr Server InstanceTrước hết chúng ta cần tạo một instance VPS, ở đây mình dùng dịch vụ VPS của Vultr nhé. Đăng ký gói 5$/tháng rẻ bèo à 🤣. Để tạo được một VPS trên Vultr thì bạn cần 2 thứ:
🥈Tạo một Instance mới trên VultrSau khi đăng nhập thành công, Vào phần Product và click vào Deploy A New Server Tạo mới instance vultrCó khá nhiều loại VPS cho anh em chọn dựa vào nhu cầu, rẻ nhất thì chọn Cloud Compute (mình chọn cái này)Chọn loại CPU và vị trí đặt Server tùy nhu cầu các bạnChọn hệ điều hành cho server. Các bạn chọn Ubuntu 22.04 LTS x64 nhéChọn dung lượng/tốc độ server. Mình chọn 5$/tháng cho rẻ nhất nhé.Tiếp theo là những cái dịch vụ add thêm, anh em nào muốn rẻ thì cứ chọn như mình. Auto backup và dịch vụ thêm.Tiếp theo anh em cần thêm SSH key của anh em vào Vultr Profile. Anh em click vào Add New để thêm một SSH Key vào nhé Click add new để thêm SSH Key vào nhéNếu anh em đã có một SSH key ở máy tính rồi thì chỉ cần thêm cái public key của anh em vào đây là được. Sau khi thêm rồi back trở lại màn hình vừa rồi enter cái tên vps là được. Mục đích của cái SSH key này là giúp server verify rằng chỉ có máy tính cá nhân của ae mới có thể truy cập được vào VPS instance này. Thêm ssh key các bạn vào đây, nhập cái name là tên ssh key các bạn. Ví dụ: Máy tính Windows 11Nếu anh em chưa có SSH key ở máy tính cần tạo một SSH Key ở máy tính cá nhân, tham khảo bước dưới nhé. Xong rồi nhấn chọn cái SSH Key vừa thêm vào & kiểm tra giá cả nhấn Deploy Now là được Deploy vps thôi anh em🥈Tạo SSH key ở máy tính cá nhânNếu anh em đã có một SSH Key ở máy tính rồi thì không cần tạo mới, anh em có thể bỏ qua bước này 🥉Tạo SSH key
bash ssh-keygen -t ed25519 -C "[email protected]" Điều này sẽ tạo một SSH key mới, sử dụng email đã được cung cấp như một nhãn trong SSH key (bạn có thể mở public key của SSH key lên sẽ thấy email trong đó) Nó sẽ yêu cầu bạn nhập tên file để lưu, nếu bạn enter thì nó sẽ lấy tên file mặc định như trong dấu touch /c/Users/dutha/.ssh/config 0. bash Enter file in which to save the key (/c/Users/dutha/.ssh/id_ed25519): Nếu bạn chưa quen với ssh key thì mình khuyên bạn nên enter, đừng thay đổi tên file làm gì Lưu ý là khi nhập tên file phải nhập đầy đủ đường dẫn lưu file tương tự như trong dấu Tiếp theo nó sẽ yêu cầu bạn nhập passphrase (tương tự password thôi). Cá nhân mình thì không nhập, cứ Enter thôi vì khi nhập sau này mỗi khi làm việc với Git phải nhập passphrase khá mệt bash Enter passphrase (empty for no passphrase): bash Enter same passphrase again: Sau khi tạo thành công thì nó sẽ sinh ra cho bạn 2 file là private key và public key theo đường dẫn mà bạn nhập tên file. File chứa public key sẽ có đuôi touch /c/Users/dutha/.ssh/config 2 phía sau. bash Your identification has been saved in /c/Users/dutha/.ssh/id_duthanhduoc10 Your public key has been saved in /c/Users/dutha/.ssh/id_duthanhduoc10.pub Để đọc nội dung public SSH key thì bạn chỉ có khá nhiều cách, bạn dùng cách nào dưới đây cũng được. Ví dụ file public key của mình bên trên là touch /c/Users/dutha/.ssh/config 3
Sau khi có public key rồi thì chỉ cần quay trở lại trang web đang làm dỡ lúc nãy, click vào Add New để thêm SSH Key vào. 🥉Tạo filetouch /c/Users/dutha/.ssh/config 6 (chỉ làm khi bạn đặt tên file ssh khác tên file mặc định) Trong trường hợp bạn thay đổi tên file thì bạn phải tạo một file touch /c/Users/dutha/.ssh/config 6 trong thư mục touch /c/Users/dutha/.ssh/config 8 với nội dung như dưới đây thì github mới hiểu được. cd vào thư mục touch /c/Users/dutha/.ssh/config 8 Tạo 1 file touch /c/Users/dutha/.ssh/config 6 trong thư mục touch /c/Users/dutha/.ssh/config 8 của user nano /c/Users/dutha/.ssh/config 2. Anh em thay thế chữ nano /c/Users/dutha/.ssh/config 2 thành username anh em nhé. bash touch /c/Users/dutha/.ssh/config Edit file touch /c/Users/dutha/.ssh/config 6 vừa tạo bash nano /c/Users/dutha/.ssh/config Copy đoạn code phía dưới vào, sửa nano /c/Users/dutha/.ssh/config 5 thành tên file chứa private key ssh của bạn bash Host github.com HostName github.com User git IdentityFile ~/.ssh/ten_file_private_key_ssh Để lưu thì nhấn nano /c/Users/dutha/.ssh/config 6 -> nano /c/Users/dutha/.ssh/config 7 -> nano /c/Users/dutha/.ssh/config 8 Thế là xong! 🥇Cấu hình vps server của bạnBây giờ bạn đã có một server mới toanh dựa trên những gì bạn đã lựa chọn. Trong phần này, chúng ta sẽ truy cập server thông qua OpenSSH Client. Tất nhiên anh em cũng có thể dùng Putty, tham khảo bài này để biết cách Kết nối đến một server sử dụng SSH key 🥈Truy cập đến server sử dụng rootSau khi tạo xong một instance VPS thì anh em sẽ có các thông tin như Username (root) và địa chỉ IP cũng như Password Thông tin instance sau khi tạoBây giờ để truy cập đến server thì anh em cần chuẩn bị cho mình 3 thứ
OK, Bây giờ anh em mở terminal lên gõ câu lệnh bên dưới, thay thế Host github.com HostName github.com User git IdentityFile ~/.ssh/ten_file_private_key_ssh 0 là địa chỉ IP server của anh em. Nếu xuất hiện warning hay cảnh báo gì, cứ chấp thuận nó. Nếu anh em dùng tên file mặc định lúc tạo ssh key ở máy cá nhân thì tự động nó sẽ vào luôn mà không cần nhập password. Nếu tạo một cái tên file khác thì dùng câu lệnh dưới đây, truyền cái đường dẫn đến file private key của anh em vào. Như thế này thì anh em sẽ không cần nhập password của Host github.com HostName github.com User git IdentityFile ~/.ssh/ten_file_private_key_ssh 1 user nữa. bash ssh -i /path/to/your/id_rsa root@ip_address Sau khi login thành công thì bây giờ anh em đã ở trong server Vultr rồi. Root user trong môi trường Linux có quyền hạn rất rộng, vì nên bạn không nên dùng nó thường xuyên. Nhỡ đâu anh em thay đổi gì đó vô tình làm hại hệ điều hành là toang. Do đó, ở bước tiếp theo chúng ta sẽ tạo một tài khoản thay thế để giới hạn quyền hành cho các tác vụ hằng ngày. Nếu anh em gặp lỗi WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! thì chỉ cần chạy câu lệnh 🥈Tạo một user mới trên linuxSau khi đã login như một root user rồi, bây giờ các bạn gõ câu lệnh bên dưới (thay thế nano /c/Users/dutha/.ssh/config 2 là username của các bạn) Nó sẽ yêu cầu tạo password cho username này, anh em nhập vào và ghi nhớ nhé. Một số câu hỏi tùy chọn còn lại anh em chỉ cần nhấn nano /c/Users/dutha/.ssh/config 8 để skip qua. Bây giờ anh em đã có một tài khoản user mới với các quyền hạn thông thường. Nhưng đôi khi thì anh em sẽ bị yêu cầu quyền root khi thực hiện các tác vụ đặc biệt. Lúc này anh em chỉ cần thêm câu lệnh Host github.com HostName github.com User git IdentityFile ~/.ssh/ten_file_private_key_ssh 7 trước mỗi dòng lệnh là được. Để làm được điều này, chúng ta cần thêm người dùng mới tạo vào nhóm Host github.com HostName github.com User git IdentityFile ~/.ssh/ten_file_private_key_ssh 7 trên vps Tại root user, chạy câu lệnh bên dưới để add user của bạn vào Host github.com HostName github.com User git IdentityFile ~/.ssh/ten_file_private_key_ssh 7 group (thay thế nano /c/Users/dutha/.ssh/config 2 với username của các bạn) bash usermod -aG sudo duoc Bây giờ thì user của bạn có thể chạy các câu lệnh với quyền hạn root! Các bạn có thể login VPS bằng username và password vừa tạo thay vì root user. Hoặc cũng có thể chuyển qua lại giữa các user bằng câu lệnh dưới đây (thay thế nano /c/Users/dutha/.ssh/config 2 là username của các bạn), nếu nó yêu cầu nhập password thì các bạn enter password của user đích đến. 🥈Thêm ssh key ở máy cá nhân vào user mới tạo trên VPSHiện tại thì chúng ta truy cập vào VPS với user Host github.com HostName github.com User git IdentityFile ~/.ssh/ten_file_private_key_ssh 1 thì không cần nhập mật khẩu, nhưng với user mới tạo thì cần phải nhập. Điều này không cần thiết và cũng không an toàn. Chúng ta có thể truy cập không cần nhập mật khẩu tương tự với Host github.com HostName github.com User git IdentityFile ~/.ssh/ten_file_private_key_ssh 1. Vậy nên chúng ta cần thêm ssh key vào user mới tạo, còn user Host github.com HostName github.com User git IdentityFile ~/.ssh/ten_file_private_key_ssh 1 thì nó đã tự động được thêm lúc deploy VPS rồi. 🚀Cách 1 thì chúng ta công cụ ssh -i /path/to/your/id_rsa root@ip_address 5 (cái ssh -i /path/to/your/id_rsa root@ip_address 5 này đã cài sẵn trên git bash, các máy linux, mac workstation thì có thể cài theo ) Thay thế ssh -i /path/to/your/id_rsa root@ip_address 7 thành đường dẫn public key anh em, ssh -i /path/to/your/id_rsa root@ip_address 8 thành username và ip address tương ứng. bash Enter file in which to save the key (/c/Users/dutha/.ssh/id_ed25519): 0 🚀Cách 2 thì chúng ta làm thủ công
🥈Cài đặt Node.Js lên VPS UbuntuLogin hoặc chuyển sang user mới tạo nhé Cập nhật các package mới Cập nhật các package đã cài trong máy Cài đặt NVM để quản lý Node.Js version cho dễ. Bên dưới là câu lệnh cài NVM theo version hiện tại mình viết bài này, nếu anh em muốn cài theo version mới nhất thì bash Enter file in which to save the key (/c/Users/dutha/.ssh/id_ed25519): 1 Sau khi cài NVM xong nhưng anh em vẫn chưa dùng được đâu, anh em tắt terminal đi và login vào lại user mới tạo nhé. Bây giờ thì anh em mới có thể dùng NVM được. Tiếp theo anh em sẽ cài Node.Js Tùy theo version Node.Js anh em chạy ở local, anh em nên cài đúng version để tránh trường hợp local chạy được nhưng deploy thì lại hẻo. Nếu muốn cài phiên bản 21 thì Còn nếu muốn cài phiên bản mới nhất thì Sau khi cài Node.js xong thì để kiểm tra Node.Js version mấy chỉ cần 🥈Cấu hình Git trên VPSĐể có thể kéo code về server thì anh em cần cấu hình git trên server, mỗi khi có cập nhật mới ở code thì chỉ cần truy cập vào server kéo code về, chạy lại các câu lệnh deploy là được. Đây là bước cơ bản, sau này anh em sẽ có thể thiết kế các hệ thống CI CD tự động deploy. Chuyện đó để những bài khác nhé. Bây giờ anh em thực hiện lại y hệt cái bước tạo SSH Keys ở máy tính cá nhân, chỉ khác là anh em tạo ở VPS. Để ý cái vụ tên file nhé, anh em nào không rõ thì cứ để mặc định đi, vì sửa tên tầm bậy là phải tạo file touch /c/Users/dutha/.ssh/config 6 như bên trên đó. bash ssh-keygen -t ed25519 -C "[email protected]" Tiếp theo cứ nhấn Enter Enter và cuối cùng là copy public key, (anh em thay cái nano /c/Users/dutha/.ssh/config 2 thành username và Enter file in which to save the key (/c/Users/dutha/.ssh/id_ed25519): 01 thành tên file public key ssh của anh em) bash Enter file in which to save the key (/c/Users/dutha/.ssh/id_ed25519): 3 Lấy được public key, anh em thêm public key vào phần Add SSH Key Github của anh em. Sau khi add xong rồi thì anh em chỉ cần clone repo của anh em về VPS bash Enter file in which to save the key (/c/Users/dutha/.ssh/id_ed25519): 4 Sở dĩ chúng ta có thể dùng được câu lệnh git vì git được cài đặt sẵn trong VPS Ubuntu rồi. 🥈Deploy dự án Next.Js (hoặc Node.Js) trên Server VPSĐầu tiên cần cd vào đúng đường dẫn vừa clone về Cài yarn và pm2 global Nếu dự án anh em không dùng yarn thì không cần cài cũng được PM2 là một thư viện giúp quản lý tiến trình cho các ứng dụng Node.Js. Nó giúp ứng dụng Node.Js của anh em hoạt động mãi mãi, cho dù có reboot lại VPS thì nó sẽ mở lên lại ngay. bash Enter file in which to save the key (/c/Users/dutha/.ssh/id_ed25519): 5 Tiến hành cài đặt các package dự án Nếu ứng dụng Next.Js thì anh em cần build, còn Node.Js thì tùy code anh em có cần build hay không nhé Với Next.Js thì ta cần build dự án Tiếp theo chạy dự án Next.Js hoặc Node.Js lên coi thử có lỗi gì không Lúc này nếu không lỗi thì anh em có thể truy cập đến website (hoặc API) của anh em qua địa chỉ IP và port rồi Ví dụ IP của VPS mình là 45.12.123.123 và port Next.js mình là 3000 thì mình chỉ cần mở trình duyệt lên nhập URL Enter file in which to save the key (/c/Users/dutha/.ssh/id_ed25519): 02 vào là thấy Chạy ổn rồi thì anh em tắt App đi nhé, nhấn Enter file in which to save the key (/c/Users/dutha/.ssh/id_ed25519): 03 để tắt tiến trình Bây giờ chúng ta sẽ tiến hành chạy Next.js với PM2, anh em phải chắc chắn rằng đã ở trong đường dẫn của app rồi nhé Chạy câu lệnh bên dưới
bash Enter file in which to save the key (/c/Users/dutha/.ssh/id_ed25519): 6 Câu lệnh này sẽ khởi chạy ứng dụng Next.Js của anh em, sau đó hiển thị một cái bảng với name, process ID, status, CPU sử dụng,... Muốn xem các tiến trình đang chạy bởi pm2 thì dùng Mỗi khi reboot VPS thì chúng ta muốn pm2 khởi chạy lại các tiến trình trước đó, để làm được điều này Nó sẽ in ra kết quả tương tự như dưới đây bash Enter file in which to save the key (/c/Users/dutha/.ssh/id_ed25519): 7 Anh em cần copy cái dòng cuối cùng và chạy, như vậy thì PM2 luôn luôn start mỗi khi server khởi động Câu lệnh của bạn thì tương tự dưới đây bash Enter file in which to save the key (/c/Users/dutha/.ssh/id_ed25519): 8 Cái này sẽ tạo một đơn vị Enter file in which to save the key (/c/Users/dutha/.ssh/id_ed25519): 09 giúp PM2 chạy trên user của bạn mỗi khi khởi động. Để kiểm tra trạng thái của đơn vị Enter file in which to save the key (/c/Users/dutha/.ssh/id_ed25519): 09 mới tạo, sử dụng câu lệnh dưới. Thay thế nano /c/Users/dutha/.ssh/config 2 thành username của anh em. bash Enter file in which to save the key (/c/Users/dutha/.ssh/id_ed25519): 9 Có thể nó sẽ in ra Enter file in which to save the key (/c/Users/dutha/.ssh/id_ed25519): 12, nhưng an tâm. Bây giờ hãy tiến hành reboot lại VPS và gõ lại Enter file in which to save the key (/c/Users/dutha/.ssh/id_ed25519): 13 để check xem nó có ra Enter file in which to save the key (/c/Users/dutha/.ssh/id_ed25519): 14 không nhé. Bây giờ thì web app Next.Js của anh em đã chạy trên port Enter file in which to save the key (/c/Users/dutha/.ssh/id_ed25519): 15 mãi mãi (nếu anh em để mặc định), cho đến khi nói PM2 ngừng Để xem các tiến trình đang chạy trên PM2 thì gõ Trong tương lai, nếu có update code. Tất cả những gì anh em cần làm là thực hiện theo các bước dưới đây
🔥 Câu lệnh redeploy rút gọn của mình khi login vào vps đúng với username là bash Enter passphrase (empty for no passphrase): 0 Chỉ cần chạy 1 câu lệnh đó thôi là nó tự làm hết mọi thứ luôn, hoặc anh em có thể setup Github Action để nó tự deploy. 🥇Trỏ tên miền (domain) về VPSThường thì khi mua một tên miền thì nhà cung cấp tên miền đó sẽ cho anh em 2 thứ để setting
Và khi dùng 1 VPS thì cái instance đó cũng cho anh em 1 khu vực để setting DNS Cái tên miền của anh em sẽ dựa vào cái DNS này để phân giải tên miền, anh em có thể chọn dùng của nhà cung cấp tên miền hoặc bên VPS Cá nhân mình thì mình dùng bên nhà cung cấp tên miền nhé 🥈Trỏ tên miền chính về VPSBây giờ thì anh em chỉ cần vào phần chỉnh sửa bản ghi bên nhà cung cấp tên miền thêm 2 record sau Tương ứng là Tên record (Host) - Type - Value - TTL Nhớ sửa Enter file in which to save the key (/c/Users/dutha/.ssh/id_ed25519): 22 thành địa chỉ IP VPS của anh em, Enter file in which to save the key (/c/Users/dutha/.ssh/id_ed25519): 23 thành tên miền anh em.
🥈Trỏ tên miền con về VPSTrong trường hợp anh em dùng tên miền con (sub domain) dạng Enter file in which to save the key (/c/Users/dutha/.ssh/id_ed25519): 24 thì tạo 2 record type Enter file in which to save the key (/c/Users/dutha/.ssh/id_ed25519): 25 như sau
Những setting Nginx và Cerbot ở phía dưới anh em đổi lại thành tên miền con tương ứng nhé. 🥇Cài và cấu hình Nginx🥈Cài đặt Nginxbash Enter passphrase (empty for no passphrase): 1 🥈Cấu hình tường lửa (firewall)Nginx đăng ký trong ubuntu như một dịch vụ Enter file in which to save the key (/c/Users/dutha/.ssh/id_ed25519): 26 (tường lửa đơn giản). Chúng ta cần cấu hình lại một tí để truy cập đến Nginx dễ dàng hơn. Để liệt kê các cấu hình app mà Enter file in which to save the key (/c/Users/dutha/.ssh/id_ed25519): 26 biết thì chỉ cần gõ Các bạn sẽ nhận được danh sách profile dưới đây bash Enter passphrase (empty for no passphrase): 2 Có 3 loại profile có sẵn cho Nginx
Tất nhiên bây giờ ai mà dùng giao thức Enter file in which to save the key (/c/Users/dutha/.ssh/id_ed25519): 32 nữa, chuyển sang Enter file in which to save the key (/c/Users/dutha/.ssh/id_ed25519): 33 hết rồi. Vậy nên anh em mở full hết cho mình. bash Enter passphrase (empty for no passphrase): 3 Để kiểm tra thay đổi thì gõ Anh em sẽ thấy Enter file in which to save the key (/c/Users/dutha/.ssh/id_ed25519): 34 được list ra ở output Nếu nó ra Enter file in which to save the key (/c/Users/dutha/.ssh/id_ed25519): 12 nghĩa là tường lửa đã bị tắt, chúng ta nên bật tường lửa lên và chỉ nên mở một số port mà chúng ta dùng thôi nhé. Trong bài viết này là mình sẽ mở Enter file in which to save the key (/c/Users/dutha/.ssh/id_ed25519): 34 và Enter file in which to save the key (/c/Users/dutha/.ssh/id_ed25519): 37, vì nếu không mở Enter file in which to save the key (/c/Users/dutha/.ssh/id_ed25519): 37 thì anh em không ssh vào server được. bash Enter passphrase (empty for no passphrase): 4 Trong trường hợp anh em lỡ chọn Nginx HTTP mà giờ muốn xóa thì chỉ cần chạy bash Enter passphrase (empty for no passphrase): 5 🥈Test Nginx Web ServerĐể chắc chắn rằng service Nginx đang được chạy, chỉ cần chạy câu lệnh bash Enter passphrase (empty for no passphrase): 6 Nó sẽ ra output kiểu như thế này, nếu anh em thấy chữ Enter file in which to save the key (/c/Users/dutha/.ssh/id_ed25519): 39 nghĩa là thành công rồi đó bash Enter passphrase (empty for no passphrase): 7 Bây giờ anh em gõ địa chỉ IP server lên url trình duyệt ( Enter file in which to save the key (/c/Users/dutha/.ssh/id_ed25519): 40), nó sẽ ra cái trang chào mừng của Nginx dạng Welcome to nginx! 🥈Cấu hình Nginx làm Reverse ProxyBây giờ thì ứng dụng web của chúng ta đang chạy và lắng nghe trên Enter file in which to save the key (/c/Users/dutha/.ssh/id_ed25519): 41, nhưng không thể để người dùng truy cập thông qua cái port Enter file in which to save the key (/c/Users/dutha/.ssh/id_ed25519): 15 hay qua địa chỉ IP của VPS được. Vậy nên chúng ta cần sử dụng Nginx để làm cho mọi người truy cập web app chúng ta thông qua một domain. Để làm được điều này thì chúng ta cần sử dụng Nginx như một reverse proxy Trên các hệ thống Debian (ví dụ như Ubuntu), các file cấu hình Nginx server được lưu trữ trong thư mục Enter file in which to save the key (/c/Users/dutha/.ssh/id_ed25519): 43 và được kích hoạt thông qua thư mục Enter file in which to save the key (/c/Users/dutha/.ssh/id_ed25519): 44 Vậy nên chúng ta cần tạo một file cấu hình trong thư mục Enter file in which to save the key (/c/Users/dutha/.ssh/id_ed25519): 43 Đầu tiên cần di chuyển vào thư mục Enter file in which to save the key (/c/Users/dutha/.ssh/id_ed25519): 43 bash Enter passphrase (empty for no passphrase): 8 Sau đó, tạo một file cấu hình trong này (cần dùng Host github.com HostName github.com User git IdentityFile ~/.ssh/ten_file_private_key_ssh 7 để thực hiện những thay đổi trong đây) Với Enter file in which to save the key (/c/Users/dutha/.ssh/id_ed25519): 23 là tên file, thường thì mình sẽ để tên file là domain của mình để dễ quản lý. bash Enter passphrase (empty for no passphrase): 9 Mở file và edit bằng Enter file in which to save the key (/c/Users/dutha/.ssh/id_ed25519): 49 bash Enter same passphrase again: 0 Thêm đoạn code phía dưới vào, anh em paste vào rồi sửa cho nhanh.
nginx Enter same passphrase again: 1 Lưu và thoát bằng cách nhấn tổ hợp nano /c/Users/dutha/.ssh/config 6 -> nano /c/Users/dutha/.ssh/config 7 -> nano /c/Users/dutha/.ssh/config 8 Bây giờ chúng ta cần kích hoạt cái file vừa tạo thông qua thư mục Enter file in which to save the key (/c/Users/dutha/.ssh/id_ed25519): 55, chỉ cần chạy câu lệnh dưới đây Hãy chắc chắn rằng đã thay Enter file in which to save the key (/c/Users/dutha/.ssh/id_ed25519): 23 bằng tên file mà anh em vừa tạo bash Enter same passphrase again: 2 File cấu hình của anh em đã được liên kết đến thư mục Enter file in which to save the key (/c/Users/dutha/.ssh/id_ed25519): 55 Để tránh vấn đề hash bucket memory trong tương lai khi chúng ta thêm app, chúng ta cần tinh chỉnh một dòng trong file Enter file in which to save the key (/c/Users/dutha/.ssh/id_ed25519): 58 Mở nó lên bằng nano bash Enter same passphrase again: 3 Trong file đó, tìm cái dòng comment là Enter file in which to save the key (/c/Users/dutha/.ssh/id_ed25519): 59 và xóa cái ký tự Enter file in which to save the key (/c/Users/dutha/.ssh/id_ed25519): 60 để mở comment cho nó. Cuối cùng ta có như thế này nginx Enter same passphrase again: 4 Lưu và đóng file. Tiếp theo chúng ta sử dụng câu lệnh Enter file in which to save the key (/c/Users/dutha/.ssh/id_ed25519): 61 để kiểm tra lỗi cú pháp trong những file cấu hình đã được tạo hoặc edit: Nếu không có vấn đề gì, restart Nginx để enable những thay đổi vừa rồi. bash Enter same passphrase again: 5 🥇Cấu hình mã hóa HTTPS/SSLTiếp theo chúng ta sẽ sử dụng dịch vụ Let's Encrypt và phần mềm Certbot để lấy và cài đặt chứng chỉ SSL miễn phí cho tên miền chúng ta. Let's Encrypt là một Certificate Authority (CA) - Cơ quan cấp chứng chỉ, chúng ta có thể dễ dàng lấy chứng chỉ SSL miễn phí để kích hoạt mã hóa HTTPS trên web server. Điều này thực hiện đơn giản thông qua phần mềm Cerbot. Ok, bắt đầu thôi. 🥈Cài Certbot và lấy chứng chỉ SSLHướng dẫn mình lấy từ đây thôi 1.Cài Snapd bash Enter same passphrase again: 6 2.Nếu trước đó đã cài Certbot, hãy gỡ nó đi (nếu VPS mới toanh hoặc không biết gì thì bỏ qua bước này) bash Enter same passphrase again: 7 3.Cài Certbot bash Enter same passphrase again: 8 4.Chuẩn bị cerbot command bash Enter same passphrase again: 9 5.Cài và lấy chứng chỉ Hãy chắc chắn với mình rằng bạn đã trỏ tên miền về VPS thành công nhé, nếu chưa thì sẽ bị lỗi đấy! Bởi vì đây là lần đầu bạn chạy Cerbot trên server này, nó sẽ yêu cầu bạn enter địa chỉ email và yêu cầu bạn đồng ý điều khoản. Sau đó, Certbot sẽ giao tiếp với server của Let's Encrypt để verify domain của bạn. Nếu thành công, Certbot sẽ hỏi bạn muốn cấu hình HTTPS như thế nào. bash Your identification has been saved in /c/Users/dutha/.ssh/id_duthanhduoc10 Your public key has been saved in /c/Users/dutha/.ssh/id_duthanhduoc10.pub 0 Nếu in ra Enter file in which to save the key (/c/Users/dutha/.ssh/id_ed25519): 62 là thành công rồi. Chứng chỉ của anh em đã được tải về và cài đặt. Bây giờ thử vào website với url bắt đầu bằng Your identification has been saved in /c/Users/dutha/.ssh/id_duthanhduoc10 Your public key has been saved in /c/Users/dutha/.ssh/id_duthanhduoc10.pub 6 sẽ thấy thành quả. Cuối cùng là chúng ta sẽ kiểm tra xem tiến trình tự động làm mới chứng chỉ. Các chứng chỉ của Let's Encrypt's chỉ có hiệu lực 90 ngày. Vậy nên chúng ta cần tự động lấy lại khi nó hết hạn. Package Cerbot mà chúng ta đã cài sẽ giải quyết vấn đề này bằng cách chạy câu lệnh Enter file in which to save the key (/c/Users/dutha/.ssh/id_ed25519): 64 2 lần 1 ngày thông qua một bộ hẹn giờ Enter file in which to save the key (/c/Users/dutha/.ssh/id_ed25519): 09. Tính năng này sẽ được cung cấp bởi một script đặt trong Enter file in which to save the key (/c/Users/dutha/.ssh/id_ed25519): 66. Task này sẽ chạy 2 lần / 1 ngày và sẽ làm mới bất cứ chứng chỉ nào mà sẽ hết hạn trong 30 ngày tới. Để test tiến trình làm mới tự động, anh em có thể chạy câu lệnh dưới bash Your identification has been saved in /c/Users/dutha/.ssh/id_duthanhduoc10 Your public key has been saved in /c/Users/dutha/.ssh/id_duthanhduoc10.pub 1 Nếu không thấy bất cứ lỗi gì tức là thành công. Khi cần, Certbot sẽ làm mới chứng chỉ và reload Nginx để nhận các thay đổi. Nếu quá trình gia hạn tự động không thành công, Let's Encrypt sẽ gửi một thông báo đến email bạn đã chỉ định, cảnh báo bạn khi chứng chỉ của bạn sắp hết hạn. Bây giờ thì website Next.js (hoặc Node.Js) đã được deploy thành công. 🥇Kích hoạt HTTP2 trong NginxHTTP/2 là phiên bản kế thừa của HTTP/1.x và cung cấp nhiều ưu điểm như xử lý song song, full multiplex, nén header và thậm chí là cả server push. Điều quan trọng là thiết lập HTTP2 trong NGINX để cải thiện tốc độ và hiệu suất trang web. Trước khi kích hoạt thì cần đảm bảo rằng
Đầu tiên cần mở file cấu hình Nginx. Thay thế Enter file in which to save the key (/c/Users/dutha/.ssh/id_ed25519): 23 thành tên file cấu hình của bạn bash Your identification has been saved in /c/Users/dutha/.ssh/id_duthanhduoc10 Your public key has been saved in /c/Users/dutha/.ssh/id_duthanhduoc10.pub 2 Nếu đã kích hoạt SSL trong Nginx rồi thì sẽ có cái dòng này Thêm cái Enter file in which to save the key (/c/Users/dutha/.ssh/id_ed25519): 69 ở phía cuối trước cái dấu Enter file in which to save the key (/c/Users/dutha/.ssh/id_ed25519): 70 để thành như thế này bash Your identification has been saved in /c/Users/dutha/.ssh/id_duthanhduoc10 Your public key has been saved in /c/Users/dutha/.ssh/id_duthanhduoc10.pub 3 Cuối cùng thì nó sẽ có dạng như thế này bash Your identification has been saved in /c/Users/dutha/.ssh/id_duthanhduoc10 Your public key has been saved in /c/Users/dutha/.ssh/id_duthanhduoc10.pub 4 Kiểm tra lại file cấu hình có đúng không Restart lại Nginx Server bash Enter same passphrase again: 5 Để test HTTP2 thì vào keycnd 🥇Tóm lạiCuối cùng thành chúng ta đã hoàn thành việc triển khai ứng dụng Next.Js (hoặc Node.Js) lên môi trường Internet với một custom domain, mã hóa HTTPS/SSL, và Nginx reverse proxy trên một VPS của Vultr. AE cũng biết cách cập nhật lại website nếu có thay đổi gì trong tương lai. |