本文由寶塔教程欄目給大家介紹寶塔面板怎么部署egg+web項(xiàng)目,希望對(duì)需要的你有所幫助!
寶塔部署egg+web項(xiàng)目
需要本地訪問(wèn)遠(yuǎn)程數(shù)據(jù)庫(kù)注意:
1、阿里云設(shè)置安全組
2、寶塔安裝“系統(tǒng)防火墻 2.9”=> 設(shè)置放行端口
如:7002用于訪問(wèn)mongodb,7001用于訪問(wèn)api
數(shù)據(jù)庫(kù)連接最簡(jiǎn)單的測(cè)試辦法: 就是直接在瀏覽器訪問(wèn)你的域名:端口或者用服務(wù)器ip:端口,如果你用的是域名的話注意域名需要解析綁定一下IP,可以看到瀏覽器提示如下即可:
3、本地mongoDB遷移到線上/數(shù)據(jù)庫(kù)初始化腳本
初始化數(shù)據(jù)庫(kù):app.js
app.beforeStart(async?()?=>?{ ????const?ctx?=?app.createAnonymousContext(); ????const?model?=?ctx.model; ????const?existGroup?=?await?model.UserGroup.findOne({name:?'超級(jí)管理員'}) ????if(!existGroup){ ????????????const?group?=?await?model.UserGroup.create({ ????????????"name"?:?"普通管理員", ????????????"idName"?:?"admin", ????????????"role"?:?100 ????????????}); ????} ????console.log("==app?beforeStart=="); });
4、egg運(yùn)行配置
一、添加網(wǎng)站,上傳項(xiàng)目(如果代碼有放在遠(yuǎn)程倉(cāng)庫(kù)托管建議直接在網(wǎng)站目錄下打開終端面板進(jìn)行g(shù)it clone)
注意:在上傳項(xiàng)目時(shí)把node_modules文件刪除再上傳,這樣會(huì)快很多,然后找到左側(cè)“文件”=>“終端”(收藏夾旁邊),打開輸入密碼連接(或使用服務(wù)器的終端);輸入命令行:cd /www/wwwroot/項(xiàng)目目錄,然后重新 npm install。這樣可以一定程度上避免項(xiàng)目無(wú)法啟動(dòng)的尷尬。
二、進(jìn)程管理:(待驗(yàn)證!)
可以創(chuàng)建index.js 來(lái)啟動(dòng)egg服務(wù)
方法1,egg內(nèi)置進(jìn)程管理器,可以直接項(xiàng)目目錄下運(yùn)行命令: node index.js index.js代碼:
const?egg?=?require('egg'); const?workers?=?Number(process.argv[2]?||?require('os').cpus().length); egg.startCluster({ ??workers, ??baseDir:?__dirname, });
方法2,安裝PM2進(jìn)行node進(jìn)程管理,選擇好文件后點(diǎn)擊“添加”
? 注: 配置完發(fā)現(xiàn)前端可以訪問(wèn)但是api不能訪問(wèn),注意看是不是端口占用問(wèn)題
? 查看所有端口的占用情況,輸入命令:`netstat -ano`,使用命令`pkill node` 批量殺死進(jìn)程
三、添加反向代理,代理到egg項(xiàng)目的運(yùn)行端口
5、前端項(xiàng)目打包后放在egg的靜態(tài)目錄,并在config/config.default.js 里配置好(也可另起一個(gè)項(xiàng)目)
config.static?=?{ prefix:?'/', dir:?[? path.join(__dirname,?'../app/public'),?//上傳文件等的目錄 path.join(__dirname,?'../dist')?//放置前端打包后的文件 ]}
然后再router.js里加一個(gè)重定向,把非api的請(qǐng)求重定向到index.html,以顯示前端的頁(yè)面
app.router.redirect('/',?'/index.html',?302);
6.代碼同步(使用git)
(假設(shè)本地已有g(shù)it并且提交到遠(yuǎn)程) 1、在寶塔面板,項(xiàng)目路徑下打開終端: 2、方法一、文件未提交則直接git?clone?[url] ????方法二、如果文件已提交, ?????初始化: ????????git?init ?????設(shè)置遠(yuǎn)程倉(cāng)庫(kù)地址: ????????git?remote?origin?set-url?[url]?或?git?remote?add?origin?[url] ????設(shè)置用戶名: ????????git?config?--global?user.name?[用戶名] ????????git?config?--global?user.email?[郵箱]?? ????????想要只在當(dāng)前項(xiàng)目下設(shè)置的話把--global去掉 ????如本地有文件,先執(zhí)行: ????????git?add?. ????????git?commit?-m?"init" ????????git?push?-u?origin?master ????拉取: ????????git?config?--global?credential.helper?store?//讓git記住用戶名密碼,下次不用填 ????????git?pull??//輸入用戶名密碼?拉取遠(yuǎn)程代碼便可