卡尼多隨筆

認識自我 • 感受世界 • 創造價值

0%

【圖文教學】免費在 AWS 上建一個 Node.js Web Server

文章裡面附了不少圖xD

建立 AWS 帳戶

如果沒有 AWS 帳戶,到這邊註冊個吧!

建立 EC2 執行個體 (Instance)

  1. 搜尋「EC2」,點按 EC2 項目底下的「Instances」

  1. 點按右上角「啟動新執行個體」

  1. Machine image 選免費的 Amazon Linux 2 AMI

Kernel 選最新版的,這篇有說為什麼:

We recommend you use Amazon Linux 2 with kernel 5.10 when launching new instances to benefit from new features and performance improvements.

  1. 選免費的「t2.micro」以後,按「審核和啟動」
    (如果想進一步做設置,可以按「下一步: 配置實例詳細信息」)

  1. 啟動吧!

  1. 創建新密鑰對 → 輸入密鑰對名稱 → 下載密鑰對
    (下載下來的密鑰對不要弄丟囉,之後會用到!)

  1. 啟動新實例

  1. 有了!

分配 Elastic IP 給 Instance

我是照著「Allocate an Amazon Elastic IP and associate it with your instance」這篇做的。

  1. 左側欄找到「彈性 IP」

  1. 右上角「配置彈性 IP 地址」

  1. 點「配置」

  1. 勾選那個彈性 IP 地址 → 動作 → 與彈性 IP 地址建立關聯

  1. 選你要建立關聯的執行個體 (Instance) 吧!

  1. 建立關聯

架設 Node.js Web Server

用 SSH 連進你的 Instance

  1. 參照「General prerequisites for connecting to your instance」這篇來取得 Instance 的 user name 以及 public DNS name

For Amazon Linux 2 or the Amazon Linux AMI, the user name is ec2-user.

  1. 同樣參照「General prerequisites for connecting to your instance」這篇,更改 private key (剛剛下載的密鑰對) 的權限

If you do not set these permissions, then you cannot connect to your instance using this key pair.

1
chmod 400 try-aws-ec2.pem
  1. 照「Connect to your Linux instance using SSH」這篇的做法,用 SSH 連進去!

(我把 try-aws-ec2.pem 放在終端機當前目錄下)

1
2
3
4
5
6
7
# 用「公有 IPv4 DNS」
ssh -i try-aws-ec2.pem ec2-user@ec2-54-254-94-30.ap-southeast-1.compute.amazonaws.com

# or

# 用「公有 IPv4 地址」
ssh -i try-aws-ec2.pem ec2-user@54.254.94.30

  1. 輸入「yes」按 enter

連進去了,開心 🎉

第 3. 步的文章,裡面有提到「Transfer files to Linux instances using an SCP client」,如果有需要轉移檔案的,可以參考一下!

設置 Node.js

  1. 照著「Tutorial: Setting Up Node.js on an Amazon EC2 Instance」這篇做即可安裝 Node.js,我就不重複了xD

  1. 簡單做一個 Node.js web server,測試用的,我是參考「How To Build Node.js Web Server From Scratch」這一篇
1
2
3
4
mkdir my-web-server
cd my-web-server
touch server.js
vim server.js

下面的 code 貼到裡面。(只是為了測試能不能跑,所以不是很介意沒自己寫這個部分)
也可以用 Express 來寫,這部分真的就是創意的發揮~

1
2
3
4
5
6
7
8
9
10
11
12
// server.js

var http = require('http');

var server = http.createServer(function(req, res) {
res.writeHead(200, { "Content-type": "text/plain" });
res.end("Hello world\n");
});

server.listen(3000, function() {
console.log('Server is running at 3000')
});
  1. 跑跑看 node server.js,看外部能不能連上

不行欸,為什麼啊?原來還差一個步驟!

編輯傳入規則

記得到「安全群組」編輯傳入規則新增 TCP <server的port>,才可透過 <Instance的IP位址>:<server的port> 連線,像是 54.254.94.30:3000

  1. 左側欄找到「安全群組」

  1. 勾選你欲修改的安全群組 → 動作 → 編輯傳入規則

  1. 新增規則

  1. 選「自訂 TCP」→ 連接埠範圍填 server 的 port → 來源選「0.0.0.0/0」代表接受任何來源的傳入 → 儲存規則

  1. 再來連連看,成功啦 🎉

Bonus

讓 Server 背景執行

我是參考「NodeJS Server to Linux Service Daemon 製作教學」這一篇,用的是「forever - npm」這個 CLI tool,或許有更好的做法!

裝 MySQL Server

我是直接照「How to Install MySQL server in Amazon Linux 2」這一篇的教學跑,裡面寫得很清楚,我就不重複了 😅


希望這篇教學文能幫助到您,我們下篇文見啦 😃