這篇文章主要介紹如何在服務端跑vuejs的項目,如果上一篇教程你成功輸出了hello world,那這一篇更簡單
首先你要有一個已經能在本地跑的基於vuejs的項目,我就以之前寫的仿餓了么的項目為例來部署,如果你還沒有已經寫好的項目,可以用我的這個項目來學習,https://github.com/wmui/vue-elm
這次部署就用最古老最省心的方法,ftp來上傳項目
項目打包
npm run build
后會有一個dist目錄,這個文件夾就是我們要部署上線的項目
寫一個小腳本
如果你會點nodejs,腳本就很好理解了,下面是app.js啟動腳本的內容
const fs = require('fs');
const path = require('path');
const express = require('express');
const app = express();
// 模擬數據,api服務
var appData = require('./data.json');
var seller = appData.seller;
var goods = appData.goods;
var ratings = appData.ratings;
// api接口
var apiRoutes = express.Router();
apiRoutes.get('/seller', function(req, res) {
res.json({
erron: 0,
data: seller
})
});
apiRoutes.get('/goods', function(req, res) {
res.json({
erron: 0,
data: goods
})
});
apiRoutes.get('/ratings', function(req, res) {
res.json({
erron: 0,
data: ratings
})
});
app.use('/api', apiRoutes);
app.use(express.static(path.resolve(__dirname, './dist')))
app.get('*', function(req, res) {
const html = fs.readFileSync(path.resolve(__dirname, './dist/index.html'), 'utf-8')
res.send(html)
})
app.listen(8082);
簡單解釋一下上面的代碼,由於項目需要些數據,我的模擬數據都在data.json這個文件里,所有簡單的寫了三個路由,對應獲取到模擬數據。然后把dist目錄靜態出來,讀取dist目錄下的index.html(因為是單頁應用,只有這一個html文件),監聽8082端口
我們先在本地把要上傳的文件都准備好:
我們的這個腳本使用了express框架,所以我們可以生成一個package.json,把依賴項添加進去
{
"name": "vue-elm-dist",
"version": "1.0.0",
"description": "",
"main": "app.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC",
"dependencies": {
"express": "^4.15.3"
}
}
完成以上操作,我們要上傳的文件項目大概長這樣
新建一個文件夾如elm,把整個項目通過ftp上傳到根目錄www文件夾下
啟動服務
登陸到你的服務端,cd到elm文件夾,執行npm install 安裝依賴,然后pm2 start app.js就成功啟動服務了
現在通過ip加端口形式能正常訪問,但是如果想通過域名訪問就需要配置nginx映射
nginx 端口映射配置
首先你需要把一個二級域名解析到你的主機ip,比如我使用的elm.86886.wang這個二級域名
配置文件和之前的基本一致
upstream elm {
server 127.0.0.1:8082;
}
server {
listen 80;
server_name elm.86886.wang;
location / {
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Nginx-proxy true;
proxy_pass http://elm;
proxy_redirect off;
}
}
我把它命名為elm-8082.conf
然后通過ftp上傳到/etc/nginx/conf.d/
目錄下
執行sudo nginx -s reload重啟nginx服務器,過個十分鍾就應該能正常訪問了 點擊訪問