nodejs服务端部署教程一,https://segmentfault.com/a/11...
这篇文章主要介绍如何在服务端跑vuejs的项目,若是上一篇教程你成功输出了hello world,那这一篇更简单
首先你要有一个已经能在本地跑的基于vuejs的项目,我就以以前写的仿饿了么的项目为例来部署,若是你尚未已经写好的项目,能够用个人这个项目来学习,https://github.com/wmui/vue-elm
此次部署就用最古老最省心的方法,ftp来上传项目html
npm run build
后会有一个dist目录,这个文件夹就是咱们要部署上线的项目vue
若是你会点nodejs,脚本就很好理解了,下面是app.js启动脚本的内容node
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端口nginx
咱们先在本地把要上传的文件都准备好:
咱们的这个脚本使用了express框架,因此咱们能够生成一个package.json,把依赖项添加进去git
{ "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文件夹下github
登录到你的服务端,cd到elm文件夹,执行npm install 安装依赖,而后pm2 start app.js就成功启动服务了
如今经过ip加端口形式能正常访问,可是若是想经过域名访问就须要配置nginx映射express
首先你须要把一个二级域名解析到你的主机ip,好比我使用的elm.86886.wang这个二级域名
配置文件和以前的基本一致npm
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服务器,过个十分钟就应该能正常访问了 点击访问json