隨著企業(yè)上云與個(gè)人開發(fā)者對(duì)高效、穩(wěn)定計(jì)算資源的需求日益增長(zhǎng),選擇合適的云服務(wù)與部署方案至關(guān)重要。本文將以華為云彈性云服務(wù)器(ECS)為平臺(tái),結(jié)合寶塔面板與Nginx,詳細(xì)評(píng)測(cè)并演示如何同時(shí)部署Spring Boot后端與Vue.js前端項(xiàng)目,打造一站式全棧應(yīng)用托管環(huán)境。
一、華為云彈性云服務(wù)器(ECS)評(píng)測(cè)
華為云ECS以其穩(wěn)定可靠的性能、豐富的規(guī)格選擇和極具競(jìng)爭(zhēng)力的價(jià)格,成為眾多開發(fā)者的優(yōu)選。在本次部署實(shí)踐中,我們選擇一臺(tái)CentOS 7.x系統(tǒng)的ECS實(shí)例。其核心優(yōu)勢(shì)在于:
- 高性能與穩(wěn)定性:底層采用華為自研硬件與虛擬化技術(shù),提供穩(wěn)定的計(jì)算性能,網(wǎng)絡(luò)延遲低,尤其在國(guó)內(nèi)訪問(wèn)體驗(yàn)優(yōu)異。
- 靈活的配置與計(jì)費(fèi):支持按需、包年包月等多種計(jì)費(fèi)模式,CPU、內(nèi)存、帶寬、系統(tǒng)盤均可自由搭配,滿足從測(cè)試到生產(chǎn)的不同場(chǎng)景。
- 完善的安全與網(wǎng)絡(luò):配備免費(fèi)的基礎(chǔ)DDoS防護(hù)、安全組(防火墻)精細(xì)控制,VPC網(wǎng)絡(luò)隔離保障了應(yīng)用的安全運(yùn)行環(huán)境。
- 便捷的管理:通過(guò)華為云控制臺(tái)可以輕松進(jìn)行開關(guān)機(jī)、重置密碼、備份鏡像等操作,并集成豐富的監(jiān)控告警功能。
二、基礎(chǔ)軟件環(huán)境搭建:寶塔面板
為了簡(jiǎn)化服務(wù)器運(yùn)維管理,我們選擇安裝寶塔Linux面板(BT-Panel)。它是一款強(qiáng)大的服務(wù)器管理軟件,通過(guò)Web界面即可完成大部分運(yùn)維操作。
- 安裝寶塔面板:通過(guò)SSH連接華為云ECS,執(zhí)行官方的一鍵安裝腳本。安裝完成后,會(huì)提供面板地址、用戶名和密碼。
- 初始化環(huán)境:登錄寶塔面板后,通常會(huì)推薦安裝LNMP或LAMP套件。我們選擇安裝 Nginx 1.20+、 MySQL 5.7/8.0 和 Java項(xiàng)目管理器(用于管理Spring Boot)。同時(shí)安裝Node.js環(huán)境(用于Vue項(xiàng)目構(gòu)建)。寶塔的軟件商店使得這些安裝過(guò)程變得極其簡(jiǎn)單。
三、項(xiàng)目部署實(shí)戰(zhàn):Spring Boot + Vue
后端部署(Spring Boot):
1. 項(xiàng)目準(zhǔn)備:將Spring Boot項(xiàng)目打包成可執(zhí)行的JAR文件(如 myapp.jar)。確保其配置文件(application.yml/properties)中的數(shù)據(jù)庫(kù)連接等指向華為云ECS上的MySQL服務(wù)。
2. 上傳與部署:通過(guò)寶塔面板的文件管理器或FTP功能,將JAR包上傳至服務(wù)器目錄,例如 /www/wwwroot/backend/。
3. 使用Java項(xiàng)目管理器:在寶塔的“軟件商店”中找到并打開“Java項(xiàng)目管理器”。添加項(xiàng)目,設(shè)置項(xiàng)目路徑、JAR包名、端口號(hào)(如8080)及啟動(dòng)參數(shù)。管理器支持一鍵啟動(dòng)、停止、重啟和查看實(shí)時(shí)日志,極大簡(jiǎn)化了Spring Boot應(yīng)用的運(yùn)維。
前端部署(Vue.js):
1. 項(xiàng)目構(gòu)建:在本地開發(fā)環(huán)境,運(yùn)行 npm run build 生成靜態(tài)文件(位于 dist 目錄)。
2. 上傳文件:將 dist 文件夾內(nèi)的全部?jī)?nèi)容,上傳至服務(wù)器目錄,例如 /www/wwwroot/frontend/。
3. 配置Nginx站點(diǎn):在寶塔面板的“網(wǎng)站”菜單中,添加一個(gè)站點(diǎn),域名填寫你的域名或服務(wù)器IP地址,根目錄設(shè)置為 /www/wwwroot/frontend。PHP版本選擇“純靜態(tài)”。
四、核心環(huán)節(jié):Nginx配置實(shí)現(xiàn)前后端聯(lián)動(dòng)
這是實(shí)現(xiàn)“同時(shí)部署”的關(guān)鍵。我們需要修改Nginx配置,將API請(qǐng)求代理到后端的Spring Boot應(yīng)用,而其他請(qǐng)求則指向前端的靜態(tài)資源。
進(jìn)入寶塔面板中對(duì)應(yīng)站點(diǎn)的“設(shè)置”->“配置文件”,進(jìn)行修改:
`nginx
server {
listen 80;
server_name your-domain.com; # 替換為你的域名或IP
前端靜態(tài)資源服務(wù)
location / {
root /www/wwwroot/frontend; # Vue項(xiàng)目構(gòu)建文件目錄
index index.html index.htm;
try_files $uri $uri/ /index.html; # 支持Vue Router的history模式
}
后端API代理 - 將所有以 /api/ 開頭的請(qǐng)求轉(zhuǎn)發(fā)到Spring Boot應(yīng)用
location /api/ {
proxypass http://127.0.0.1:8080; # 轉(zhuǎn)發(fā)到Spring Boot運(yùn)行的端口
proxysetheader Host $host;
proxysetheader X-Real-IP $remoteaddr;
proxysetheader X-Forwarded-For $proxyaddxforwardedfor;
proxysetheader X-Forwarded-Proto $scheme;
}
可選:可能還需要代理WebSocket或其他特定路徑
location /ws/ {
proxy_pass http://127.0.0.1:8080;
proxyhttpversion 1.1;
proxysetheader Upgrade $http_upgrade;
proxysetheader Connection "upgrade";
}
}`
保存配置并重載Nginx。至此,訪問(wèn)服務(wù)器IP或域名,將直接顯示Vue前端頁(yè)面;當(dāng)前端發(fā)起 /api/xxx 的請(qǐng)求時(shí),Nginx會(huì)將其無(wú)縫轉(zhuǎn)發(fā)到運(yùn)行在8080端口的Spring Boot應(yīng)用進(jìn)行處理。
五、與優(yōu)勢(shì)
通過(guò)“華為云ECS + 寶塔面板 + Nginx”的組合,我們成功構(gòu)建了一個(gè)高效、易管理的全棧項(xiàng)目部署環(huán)境:
- 華為云ECS 提供了堅(jiān)實(shí)、可靠的IaaS底層支撐。
- 寶塔面板 將復(fù)雜的命令行操作可視化,降低了服務(wù)器運(yùn)維門檻,實(shí)現(xiàn)了環(huán)境搭建、軟件安裝、項(xiàng)目監(jiān)控的一站式管理。
- Nginx 作為高性能的Web服務(wù)器和反向代理,完美解決了前后端分離項(xiàng)目的部署與路由問(wèn)題,實(shí)現(xiàn)了單一端口(80/443)對(duì)外服務(wù)。
此方案特別適合中小型項(xiàng)目、個(gè)人開發(fā)者及運(yùn)維入門者,能夠在保證性能與安全的前提下,顯著提升全棧應(yīng)用的部署效率和運(yùn)維體驗(yàn)。