Vue項(xiàng)目部署的實(shí)現(xiàn)(阿里云+Nginx代理+PM2)
最近部署一個(gè)Vue項(xiàng)目到阿里云ECS上,因?yàn)轫?xiàng)目涉及一些跨域請求,所以采用了Nginx
代理請求本地的node
服務(wù)(利用pm2
做進(jìn)程管理)。node
服務(wù)借助axios
設(shè)置headers
的referer
、host
轉(zhuǎn)發(fā)請求,解決跨域請求問題。
先交代下在阿里云ECS里安裝的部署環(huán)境:phpstudy
(php調(diào)試運(yùn)行大禮包,里面包含nginx、mysql等,還能監(jiān)控端口占用情況)、pm2
(node服務(wù)進(jìn)程管理工具)、node
、git
等等。
部署過程
- 拉去GitHub項(xiàng)目代碼至root目錄下(找到安裝phpstudy的WWW目錄),構(gòu)建項(xiàng)目
- 修改nginx-conf的代理配置、root項(xiàng)配置(指向項(xiàng)目項(xiàng)目的dist目錄下)
- 啟動(dòng)pm2(項(xiàng)目中,事先已寫好服務(wù)端邏輯prod.server.js)
- 啟動(dòng)phpstudy
- 訪問項(xiàng)目
構(gòu)建項(xiàng)目
構(gòu)建項(xiàng)目前,要修改項(xiàng)目confing
目錄下的index.js
,主要是build
部分的端口、目錄,具體如下:
build: { port: 9001, // 因?yàn)槲沂怯肞HPStudy做web服務(wù)器的,此時(shí)php.cgi會(huì)占9000端口,所以改用9001 // Template for index.html index: path.resolve(__dirname, '../dist/index.html'), // Paths assetsRoot: path.resolve(__dirname, '../dist'), assetsSubDirectory: 'static', assetsPublicPath: '', ....... }
主要有兩部分
修改端口,跟代理端口一致
port: 9001
修改assetsPublicPath
assetsPublicPath: ''
nginx-conf配置
利用phpstudy
,可以很方便的進(jìn)行nginx
相關(guān)設(shè)置、host
修改、端口監(jiān)控等等。先來說說nginx-conf
的配置。
先找到nginx-conf配置入口
修改ngin-conf
upstream my_project { server 127.0.0.1:9001; keepalive 64; } server { listen 80; server_name my_project; #charset koi8-r; #access_log logs/host.access.log main; root "C:/phpStudy/PHPTutorial/WWW/project/dist"; location / { index index.php index.html index.htm; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_set_header X-NginX-Proxy true; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_max_temp_file_size 0; proxy_pass http://my_project/; proxy_redirect off; proxy_read_timeout 240s; } }
注意事項(xiàng)
root配置,指向構(gòu)建后目錄
root "C:/phpStudy/PHPTutorial/WWW/project/dist";
設(shè)置代理端口時(shí),避免端口占用!!
upstream my_project { server 127.0.0.1:9001; keepalive 64; }
開始部署時(shí),使用的是9000
端口,一直運(yùn)行不起來,后面發(fā)現(xiàn)phpstudy
啟動(dòng)是php-cgi.exe
默認(rèn)就使用了9000
端口。關(guān)于端口使用情況,phpstudy
也提供了工具。
啟動(dòng)pm2
關(guān)于pm2
的介紹、常規(guī)使用自行了解。在項(xiàng)目目錄下事先已經(jīng)寫好了轉(zhuǎn)發(fā)請求的邏輯。
pro.server.js
var axios = require('axios') const bodyParser = require('body-parser') var config = require('./config/index') var express = require('express') var app = express() var apiRoutes = express.Router() apiRoutes.get('/api/getdata', function(req, res) { var url = 'https://a.com' axios.get(url, { headers: { referer: 'https://b.com', host: 'b.com' }, params: req.query }).then((response) => { .... }).catch((e) => { console.log(e) }) }) app.use('/', apiRoutes) app.use(express.static('./dist')) var port = process.env.PORT || config.build.port module.exports = app.listen(port, function (err) { if (err) { console.log(err) return } console.log('Listening at http://localhost:' + port + '\n') })
這里只是簡單的借助axios
可以設(shè)置referer
和host
,實(shí)現(xiàn)代理轉(zhuǎn)發(fā)的功能。
運(yùn)行prod.server.js
prod.server.js
是在根目錄下,所以運(yùn)行命令如下:
pm2 start prod.server.js
進(jìn)程列表:
pm2 start list
查看進(jìn)程詳情
pm2 show 0
總結(jié)
整個(gè)部署過程涉及比較多的知識點(diǎn),nginx代理
,node開發(fā)部署
,端口管理
等等。在端口占用這個(gè)點(diǎn)上卡了一段時(shí)間。不過目前只是實(shí)現(xiàn)構(gòu)建部署、訪問。但維護(hù)成本還是比較高,先得從GitHub拉取代碼,本地構(gòu)建。項(xiàng)目完成以后,研究下持續(xù)性集成
流程。
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Vue3響應(yīng)式高階用法之shallowRef()的使用
在Vue3框架中,shallowRef()為開發(fā)者提供了細(xì)粒度的響應(yīng)式控制能力,特別適用于處理深層嵌套對象或需要部分響應(yīng)式的場景,本文就來詳細(xì)的介紹一下,感興趣的可以了解一下2024-09-09基于vue+echarts 數(shù)據(jù)可視化大屏展示的方法示例
這篇文章主要介紹了基于vue+echarts 數(shù)據(jù)可視化大屏展示的方法示例,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2020-03-03Vue過濾器filters的用法及時(shí)間戳轉(zhuǎn)換問題
Vue的filters過濾器是比較常見的一個(gè)知識點(diǎn),下面我將結(jié)合時(shí)間戳轉(zhuǎn)換的例子帶你快速了解filters的用法,感興趣的朋友一起看看吧2021-09-09Element-UI結(jié)合遞歸組件實(shí)現(xiàn)后臺(tái)管理系統(tǒng)左側(cè)菜單
在Vue.js中使用遞歸組件可以方便地構(gòu)建多層級的菜單結(jié)構(gòu),遞歸組件適用于處理具有嵌套關(guān)系的數(shù)據(jù),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2024-09-09vue3+ts項(xiàng)目搭建的實(shí)現(xiàn)示例
這篇文章主要介紹了vue3+ts項(xiàng)目搭建的實(shí)現(xiàn)示例,本文目的在于記錄自己項(xiàng)目框架搭建的過程,通過示例代碼介紹的非常詳細(xì),需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2024-03-03elementUI?el-table二次封裝的詳細(xì)實(shí)例
在項(xiàng)目中會(huì)多次使用表格展示數(shù)據(jù),不對這個(gè)table進(jìn)行二次封裝成我們自己想要的,重復(fù)的代碼量的工作會(huì)比較大,下面這篇文章主要給大家介紹了關(guān)于elementUI?el-table二次封裝的相關(guān)資料,需要的朋友可以參考下2023-03-03