Web動(dòng)態(tài)網(wǎng)站可以根據(jù)用戶的偏好、行為歷史等信息定制化展示內(nèi)容,提供更加個(gè)性化的服務(wù)。那么如何部署動(dòng)態(tài)網(wǎng)站?本篇教程旨在通過AWS云平臺(tái)部署一個(gè)典型的Web動(dòng)態(tài)網(wǎng)站,由NodeJS及MySQL構(gòu)建,采用多可用區(qū)部署的方式來提高網(wǎng)站的可靠性。接下來將由站長(zhǎng)百科詳細(xì)為大家介紹。
一、AWS產(chǎn)品說明
本文主要基于AWS(亞馬遜云與科技)產(chǎn)品進(jìn)行部署,涉及產(chǎn)品包括:
- Amazon RDS:提供數(shù)據(jù)庫服務(wù)(12個(gè)月免費(fèi))
- Amazon CloudFront:CDN加速(永久免費(fèi))
- Amazon VPC:虛擬私有云
- Amazon EC2:亞馬遜云服務(wù)器(12個(gè)月)
- Amazon ELB:負(fù)載均衡
亞馬遜云科技官網(wǎng):點(diǎn)擊訪問(新客注冊(cè)立享100+免費(fèi)云產(chǎn)品及服務(wù))
二、架構(gòu)概述
本教程使用典型的三層Web架構(gòu),包括:負(fù)載均衡器、應(yīng)用服務(wù)器及數(shù)據(jù)庫。VPC內(nèi)的NAT網(wǎng)關(guān)和ELB節(jié)點(diǎn)位于公有子網(wǎng),其它資源則放置于私有子網(wǎng),從而增強(qiáng)系統(tǒng)安全性。此外Route 53將托管和解析域名,CloudFront則用來加速靜態(tài)和動(dòng)態(tài)內(nèi)容的加載,同時(shí)提升網(wǎng)站安全性。
下圖展示了所采用的架構(gòu):
三、部署流程
在開始之前,確保已進(jìn)入AWS控制臺(tái)。如果還沒有賬戶,請(qǐng)先進(jìn)行注冊(cè):
相關(guān)推薦:《亞馬遜云科技賬號(hào)注冊(cè)流程》(國(guó)內(nèi)用戶)
四、網(wǎng)絡(luò)規(guī)劃與安全設(shè)置
VPC是創(chuàng)建的私有網(wǎng)絡(luò),可以自定義網(wǎng)絡(luò)配置,包括CIDR分配、子網(wǎng)劃分、路由表設(shè)置等。通過安全組,可以控制進(jìn)出網(wǎng)卡的流量。
1、創(chuàng)建VPC
通過AWS CloudFormation模板可以迅速創(chuàng)建所需的VPC資源。此VPC包含兩個(gè)公有子網(wǎng)(共享路由表)、兩個(gè)私有子網(wǎng)(分別有獨(dú)立的路由表)及兩個(gè)NAT Gateway。
打開CloudFormation控制臺(tái)并選擇“創(chuàng)建堆棧”。
然后輸入以下URL以獲取VPC模板:
https://workshop-binc.s3.cn-northwest-1.amazonaws.com.cn/cfn/vpc-with-natgw.yaml
繼續(xù)點(diǎn)擊默認(rèn)設(shè)置,完成堆棧創(chuàng)建。大約1-2分鐘后即可完成創(chuàng)建。
2、創(chuàng)建安全組
進(jìn)入Amazon EC2控制臺(tái),選擇安全組并點(diǎn)擊“創(chuàng)建安全組”。
為以下各項(xiàng)創(chuàng)建安全組并添加入站規(guī)則:
(1)ELB安全組
- 名稱:SG-ALB-HA-Workshop
- 描述:SG-ALB-HA-Workshop
- 協(xié)議:HTTP(端口80)
- 來源:0.0.0.0/0
(2)Bastion安全組
- 名稱:SG-Bastion-HA-Workshop
- 描述:SG-Bastion-HA-Workshop
- 協(xié)議:SSH(端口22)
- 來源:0.0.0.0/0
(3)AppServer安全組
- 名稱:SG-AppServer-HA-Workshop
- 描述:SG-AppServer-HA-Workshop
- 協(xié)議:自定義TCP(端口3000)
- 來源:SG-ALB-HA-Workshop(安全組ID)
(4)RDS安全組
- 名稱:SG-RDS-HA-Workshop
- 描述:SG-RDS-HA-Workshop
- 協(xié)議:MySQL/Aurora(端口3306)
- 來源:SG-AppServer-HA-Workshop(安全組ID)
五、創(chuàng)建數(shù)據(jù)庫
1、創(chuàng)建數(shù)據(jù)庫子網(wǎng)組
打開RDS控制臺(tái)。
2、創(chuàng)建數(shù)據(jù)庫實(shí)例
接下來,先點(diǎn)擊 添加與此VPC相關(guān)的所有子網(wǎng),然后刪除CIDR為10.192.11.0/24 及 10.192.10.0/24的公有子網(wǎng),只保留兩個(gè)私有子網(wǎng)即可。
3、新建數(shù)據(jù)庫實(shí)例
這里我們創(chuàng)建一個(gè)RDS MySQL 5.7.31的數(shù)據(jù)庫實(shí)例,實(shí)例類型選擇db.t2.medium,并開啟多可用區(qū)部署(創(chuàng)建備用實(shí)例)。
存儲(chǔ)保留默認(rèn)設(shè)置即可。
其余保留默認(rèn)設(shè)置即可。
六、創(chuàng)建應(yīng)用服務(wù)器模板
打開EC2控制臺(tái),選擇“創(chuàng)建實(shí)例”,并按照以下配置創(chuàng)建服務(wù)器:
1、 服務(wù)器配置
操作系統(tǒng):Ubuntu Server 18.04(AMI ID: ami-0071f6f4df15863cc 或 ami-0a22b8776bb32836b)
- 實(shí)例類型:t3.small
- VPC:選擇創(chuàng)建的VPC
- 子網(wǎng):選擇一個(gè)公有子網(wǎng)
- 安全組:SG-AppServer-HA-Workshop和SG-Bastion-HA-Workshop
2、安裝應(yīng)用程序及依賴
連接到EC2實(shí)例并執(zhí)行以下命令安裝所需的軟件和依賴:
sudo apt update sudo apt install nodejs npm memcached -y # 下載并解壓應(yīng)用程序 wget https://workshop-binc.s3.cn-northwest-1.amazonaws.com.cn/code/workshop_ha.tgz tar -xf workshop_ha.tgz cd workshop_ha npm install sudo npm install -g sequelize-cli pm2
3、數(shù)據(jù)庫初始化
修改配置文件~/workshop_ha/config/config.json
"development": { ... "host": "xxxxxx.xxxx.rds.cn-north-1.amazonaws.com.cn", // 修改為數(shù)據(jù)庫endpoint "username": "your user name", // 數(shù)據(jù)庫用戶名 "password": "your password", // 數(shù)據(jù)庫密碼 ... } 執(zhí)行如下命令創(chuàng)建schema: sequelize-cli db:create sequelize-cli db:migrate
4、設(shè)置應(yīng)用程序開機(jī)自啟動(dòng)
使用pm2來管理應(yīng)用程序并設(shè)置開機(jī)自啟動(dòng):
pm2 startup sudo env PATH=$PATH:/usr/bin /usr/local/lib/node_modules/pm2/bin/pm2 startup systemd -u ubuntu --hp /home/ubuntu pm2 start app.js pm2 status # 確保狀態(tài)為online pm2 save
# 執(zhí)行如下命令,確認(rèn)應(yīng)用程序有正常的返回 curl -I localhost:3000 >> HTTP/1.1 200 OK # 設(shè)置開機(jī)自啟動(dòng) pm2 save
5、創(chuàng)建AMI鏡像
回到EC2控制臺(tái),為這臺(tái)EC2創(chuàng)建AMI鏡像。
七、設(shè)置負(fù)載均衡及彈性伸縮
1、創(chuàng)建目標(biāo)組
在目標(biāo)組控制臺(tái)創(chuàng)建目標(biāo)組,選擇默認(rèn)設(shè)置并完成創(chuàng)建。
2、創(chuàng)建啟動(dòng)模板
通過AWS云服務(wù)器啟動(dòng)模板控制臺(tái)創(chuàng)建啟動(dòng)模板,選擇一個(gè)密鑰對(duì)并完成創(chuàng)建。
3、創(chuàng)建Auto Scaling組
在Auto Scaling控制臺(tái)創(chuàng)建Auto Scaling組,選擇已創(chuàng)建的啟動(dòng)模板,配置伸縮策略并完成創(chuàng)建。
其余步驟,均保持默認(rèn)值,然后點(diǎn)擊【跳至檢查】,并完成創(chuàng)建。
4、創(chuàng)建負(fù)載均衡器
在負(fù)載均衡器控制臺(tái)創(chuàng)建ALB,選擇相應(yīng)的安全組和目標(biāo)組,完成創(chuàng)建。
跳過第二步;第三步,選擇安全組:SG-ALB-HA-Workshop;第四步,選擇現(xiàn)有目標(biāo)組 TG-HA-Workshop;其余步驟保留默認(rèn)值,完成創(chuàng)建。
稍等片刻,等待ALB的狀態(tài)進(jìn)入Active,復(fù)制DNS名稱,ALB-HA-Workshop-xxxx.cn-north-1.elb.amazonaws.com.cn,在瀏覽器新標(biāo)簽頁打開。
注意:DNS解析生效時(shí)間稍長(zhǎng),約5分鐘左右,需耐心等待。
正常情況下,可以進(jìn)入如下頁面,嘗試刷新幾次,可以觀察到 az, instance_id 均會(huì)發(fā)生變化,表明流量通過ALB發(fā)送到了不同的后端EC2。
為了驗(yàn)證應(yīng)用的健壯性,我們嘗試將其中一臺(tái)EC2做關(guān)機(jī)處理,模擬機(jī)器故障情況。
接下來,我們進(jìn)入AutoScalingGroup頁面,觀察到如下活動(dòng)歷史記錄,表明ASG探測(cè)到實(shí)例處于不健康狀態(tài),將其終止之后開啟了一臺(tái)新的實(shí)例。
稍等一會(huì),實(shí)例通過目標(biāo)組的健康檢查之后,再次刷新網(wǎng)頁,可以觀察到新的實(shí)例已經(jīng)投入使用。
八、配置CloudFront
1、配置Amazon CloudFront
在CloudFront控制臺(tái)創(chuàng)建分配,選擇源服務(wù)器和配置緩存策略,其他設(shè)置可以保持默認(rèn)。完成后,等待CNAME狀態(tài)為Active。
2、添加域名解析記錄
在Route 53里面選擇“托管區(qū)域”,然后點(diǎn)擊為該網(wǎng)站準(zhǔn)備的域名。
點(diǎn)擊“創(chuàng)建記錄”。
填入內(nèi)容如下(需根據(jù)您的實(shí)際情況調(diào)整內(nèi)容):
創(chuàng)建完成后,顯示如下:
等新增的DNS記錄生效后,就可以通過在瀏覽器輸入CNAME域名訪問到我們所托管的網(wǎng)站了。
使用自定義域名進(jìn)行訪問:
相關(guān)推薦:
《Amazon Lightsail上啟動(dòng)cPanel & WHM實(shí)例教程》
《如何搭建個(gè)人網(wǎng)盤(35GB免費(fèi)存儲(chǔ)空間)》
《亞馬遜云科技Amazon EC2部署DeepSeek-R1蒸餾模型教程》
-
廣告合作
-
QQ群號(hào):4114653