博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
nodejs服务器部署教程二,把vue项目部署到线上
阅读量:4084 次
发布时间:2019-05-25

本文共 2282 字,大约阅读时间需要 7 分钟。

nodejs服务端部署教程一,

这篇文章主要介绍如何在服务端跑vuejs的项目,如果上一篇教程你成功输出了hello world,那这一篇更简单
首先你要有一个已经能在本地跑的基于vuejs的项目,我就以之前写的仿饿了么的项目为例来部署,如果你还没有已经写好的项目,可以用我的这个项目来学习,
这次部署就用最古老最省心的方法,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服务器,过个十分钟就应该能正常访问了 

 

原文

转载地址:http://baqni.baihongyu.com/

你可能感兴趣的文章
Flutter学习教程
查看>>
Vue.js异步更新及nextTick
查看>>
styled-components快速入门
查看>>
react-native自动打包部署方案详解
查看>>
三种方法实现:获取 url 中的参数
查看>>
webpack4.0各个击破(3)—— Assets篇
查看>>
webpack4.0各个击破(4)—— Javascript & splitChunk
查看>>
Mac下抓包工具Charles的使用
查看>>
使用Fiddler做抓包分析
查看>>
Flutter基础-组件通信(父子、兄弟)
查看>>
react长列表优化方案: react-virtualized
查看>>
京晚8点--H5单页面手势滑屏效果实践
查看>>
vue-router中使用EventBus传值需要注意到的问题
查看>>
vue中eventbus被多次触发(vue中使用eventbus踩过的坑)
查看>>
Vue组件之间的数据通信
查看>>
怎么实现一个3d翻书效果
查看>>
React Native 开发中利用节流和防抖优化页面性能
查看>>
debounce与throttle区别
查看>>
js中Dom操作的个人总结
查看>>
React Native 图片组件的一些常见问题汇总
查看>>