前端蠢萌初涉全棧(koa+vue)+項目部署

本項目是前端蠢萌,想要了解下前端+后端分離的全棧項目的基本運作而整的。

本項目的技術(shù)架構(gòu)大概是koa2+vue2

1 項目文件結(jié)構(gòu)


首先,采用vue_cli腳手架創(chuàng)建了一個vue項目;本項目的基本目錄結(jié)構(gòu)就如一般的vue_cli腳手架創(chuàng)建的項目那樣,不一樣的地方主要在于新建了一個目錄server,這個文件夾主要用來存放koa后端的一些文件,它的文件目錄大概如下:


對上訴server目錄下的文件結(jié)構(gòu)說明如下:

---DBconn:new一個Sequelize,來連接數(shù)據(jù)庫

---DBmodels:定義數(shù)據(jù)表模型、數(shù)據(jù)表連接關(guān)系,并利用sequelize.sync來同步數(shù)據(jù)庫

---service:與數(shù)據(jù)庫表相關(guān)的操作,如增刪查改等

---controllers:api接口的定義,通過這些接口去調(diào)用操作數(shù)據(jù)庫表的方法(定義在目錄`service`中的),以便在前端中去調(diào)用這些接口

---middleware:定義一些koa會使用到的一些中間件;如importantcontroller.js用來把`controllers`中定義的接口引入

---app.js:后端服務(wù)的入口文件;如在package.json中定義的`start`命名,就是通過`nodemon server/app.js`在啟動后端服務(wù)

2 項目啟動

參見項目中的package.json文件(前端模塊、后端模塊分別維護(hù)了各自的package.json文件)

(1)啟動后端服務(wù):npm run start

(2)啟動前端服務(wù):npm run serve

ps:本地啟動的后端服務(wù)監(jiān)聽的是端口3000,而前端是8080端口;所以在vue.config.js中增加了如下代理,就能進(jìn)行本地接口調(diào)用開發(fā)了:

3 項目中的jwt登錄驗證

(1)做token權(quán)限控制,排除不需要進(jìn)行token校驗的path,比如login;其他的接口則需要進(jìn)行token校驗的,即需要通過token校驗中間件./middleware/tokenVerify


(2)login不需要經(jīng)過token驗證,登錄成功后,會簽發(fā)token,以便其他接口攜帶去進(jìn)行token校驗


(3)tokenVerify里面的token校驗邏輯


4 項目部署

4.1 服務(wù)器中安裝Node

(1)下載Node安裝包,放到服務(wù)器/usr/local/node;在/usr/local新建一個node目錄mkdir node

(2)解壓縮node安裝包,tar -vxf node-v14.17.0-linux-x64.tar.xz

(3)配置環(huán)境變量,ln -s /usr/local/node/node-v14.17.0-linux-x64/bin/node /usr/local/bin/node、ln -s /usr/local/node/node-v14.17.0-linux-x64/bin/npm /usr/local/bin/npm

4.2 服務(wù)器中安裝mysql

(1)下載mysql安裝包 wget http://repo.mysql.com/mysql80-community-release-el7-1.noarch.rpm

(2)安裝軟件包到y(tǒng)um庫rpm -ivh mysql80-community-release-el7-1.noarch.rpm

(3)安裝軟件 yum install mysql-server

使用mysql

service mysql start :啟動mysql服務(wù)

service mysql status:查看服務(wù)狀態(tài)

service mysql stop:停止服務(wù)

service mysql restart:重啟服務(wù)

service mysql status:查看服務(wù)狀態(tài)

mysqladmin -u root password "new_password":為root用戶更改密碼

mysql -u root -p:用密碼登錄root用戶

4.3 在云服務(wù)器部署服務(wù)的記錄

由于本人從未接觸過部署,所以整個部署過程是通過一系列的嘗試去發(fā)現(xiàn)“新鮮”事物的

(1)將項目源代碼,整個拷貝到服務(wù)器中,像在本地開發(fā)那樣的啟動,是可行的

ps :這次嘗試其實不算是部署的內(nèi)容,但卻是本蠢萌新人學(xué)步之路上,對于神秘的服務(wù)器,相對于本機(jī)電腦的一次類比認(rèn)知;所以寫在這里了

(2)使用koa-static管理靜態(tài)資源

首先,需要將vue.config.js里面的:publicPath的值改為./;

其次,在Koa的app.js主文件里面加上koa-static這個中間件使用

constpath=require('path')

constkoa-static=require('koa-static');

app.use(koa-static(path.resolve('dist')));

最后,使用koa-server-http-proxy代理?!疽驗閎uild打包后在vue.config.js里面的代理就不起作用了,需在服務(wù)器配置下代理】

// 使用koa-server-http-proxy代理

constkoaServerHttpProxy=require("koa-server-http-proxy");

app.use(koaServerHttpProxy("/api",{

????target:"http://localhost:3000",

????pathRewrite:{'/api':''},

????changeOrigin:true

}));

(3)使用nginx反向代理

本項目的前后端的包管理是分開的,所以,可以直接把后端模塊的目錄server搞到服務(wù)器去部署;再把前端打包好的dist包放到nginx中去管理就可以了。

服務(wù)器安裝nginx

使用nginx代理轉(zhuǎn)發(fā)請求

(1)將項目npm run build后的dist里的文件,放到/usr/local/nginx/html中;【要注意vue.config.js中的publicPath的值,將其設(shè)置為./】

(2)在nginx.conf配置文件中,添加代理配置:

location/api/{

proxy_passhttp://1.117.28.252:3000/;? #因為這個最后有斜杠,所以轉(zhuǎn)發(fā)后的地址不會把/api帶進(jìn)去了

}

(3)由于前端用的history模式,刷新的時候會404,所以在nginx.conf中可以改下配置:

error_page404/index.html;

(4)由于項目中使用koa-jwt做了鑒權(quán),所以需要在nginx.conf中http塊兒中增加如下配置:

add_headerAccess-Control-Allow-HeadersAuthorization;

4.4 主要參考

https://www.icode9.com/content-1-539544.html

https://molunerfinn.com/Vue+Koa/#%E9%A1%B9%E7%9B%AE%E9%83%A8%E7%BD%B2

【B站學(xué)習(xí)的服務(wù)器部署知識】https://www.bilibili.com/video/BV15V411U7Vd?p=2&spm_id_from=pageDriver? 筆記如下:

1、申請一個免費的服務(wù)器

? ? ? 每個云基本都有免費一個月的服務(wù)器試用,可以去試試;搞個centos的

2、部署一個node koa項目到云服務(wù)器? ? => 在云服務(wù)器上進(jìn)行以下操作

(1)安裝node

自己電腦上去node官網(wǎng),選擇linux系統(tǒng)的安裝包下載

把下載的node安裝包傳到云服務(wù)器上

指定目錄下解壓node安裝包

將node、npm命令b綁定到環(huán)境變量

檢驗是否安裝成功:node -v, npm -v

(2)本地寫一個Node koa項目

將Node koa項目拷貝到云服務(wù)器去

npm install

node app.js就可以去訪問這些接口了(但是要注意去云服務(wù)器把監(jiān)聽的相應(yīng)端口放開)

(3)使用pm2

? 如果不使用pm2的話,如果服務(wù)器關(guān)了就訪問不了了;pm2就來解決這個問題的

云服務(wù)器中去node koa項目目錄下,去全局安裝pm2

綁定pm2的環(huán)境變量

運行pm2 start app.js

pm2 list、 pm2 delete {id}就可以把相應(yīng)id的服務(wù)關(guān)掉

3、部署一個連接數(shù)據(jù)庫的node項目

(1)服務(wù)器安裝數(shù)據(jù)庫,開啟數(shù)據(jù)庫服務(wù)(要一直保持后臺啟動)

(2)后端項目打zip包,放到服務(wù)器的server目錄下去啟動

4、服務(wù)器中安裝nginx

將打包好的前端包放到nginx下,就可以通過ip去訪問它

5、部署前端項目

(1)build打包下項目

(2)把前端打好的包放到nginx中的/html目錄下

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容