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

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

本文以我个人的开源项目作为演示,让你把自己的项目能在服务器上跑起来

安装mongodb数据库

如何在ubuntu上安装mongodb数据库,其实写的很清楚啦

  1. sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 0C49F3730359A14518585931BC711F9BA15703C6切记按找ubuntu版本号安装,我的是16.04
  2. echo "deb [ arch=amd64,arm64 ] http://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/3.4 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.4.list
  3. sudo apt-get update
  4. sudo apt-get install -y mongodb-org
  5. sudo service mongod start

完成以上操作输入mongo 看到如下信息表示:

第一个: WARNING: Using the XFS filesystem is strongly recommended with the WiredTiger storage engine
意思是:强烈建议使用带WiredTiger存储引擎的XFS文件系统,这个不用管它

第二个: WARNING: Access control is not enabled for the database

意思是:未对数据库启用访问控制,对数据和配置的读写访问不受限制(危险的warning),这个也不用管它

第三个:WARNING: /sys/kernel/mm/transparent_hugepage/enabled is 'always'

解决方法:
sudo chmod 777 /sys/kernel/mm/transparent_hugepage/enabled
cat /sys/kernel/mm/transparent_hugepage/enabled
echo never > /sys/kernel/mm/transparent_hugepage/enabled

第四个:WARNING: /sys/kernel/mm/transparent_hugepage/defrag is 'always'

解决方法:
sudo chmod 777 /sys/kernel/mm/transparent_hugepage/defrag
cat /sys/kernel/mm/transparent_hugepage/defrag
echo never > /sys/kernel/mm/transparent_hugepage/defrag
重启:sudo service mongod restart
完成以上操作你就成功在你的远程服务器上安装mongodb了

初始数据的备份和导入

很多时候我们项目要上线,需要把本地的初始化数据导入到线上

  1. 首先在本地开启你的mongodb,并把数据备份到本地

比如说我要备份vueblog数据库到c:vueblog-backup文件夹:

mongodump -h 127.0.0.1:27017 -d vueblog -o C:\vueblog-backup
备份出来的数据长这样

  1. 通过ftp工具把数据上传到远程服务器,例如我上传到了home/wmui文件夹下
  2. 接着在服务器导入数据到vueblog数据库

mongorestore -h 127.0.0.1:27017 -d vueblog ./vueblog-backup/vueblog

切记路径不要搞错了
查看是否导入成功:
mongo
use vueblog

项目部署

这里以我写的开源项目作为演示,此项目基于vue+node+mongodb开发

  1. 把服务器的/home/wmui/.ssh/下的id_res.pub添加到github的ssh公钥,wmui是你自己创建的用户
  2. 在项目根目录下创建ecosystem.json,pm2的发布脚本
{  "apps": [{    "name": "vueblog",    "script": "./server.js",    "env":    {      "COMMON_VARIABLE": "true"    },    "env_production":    {      "NODE_ENV": "production"    }  }]}

把改动commit到github

  1. 设置文件夹的可读写权限

sudo chmod 777 /www

我默认是把项目clone到/www文件夹下

  1. 找到/home/wmui/下.bashrc:

注释掉

# case $- in#    *i*) ;;#      *) return;;#esac
  1. cd 到www目录下,clone项目到你的服务端
  2. 由于本地测试网址用的localhost,而线上肯定是你自己的域名,所以要解析域名和修改网址

添加nginx配置文件

upstream vueblog {    server 127.0.0.1:8080;}server {    listen 80;    server_name vueblog.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://vueblog;        proxy_redirect off;    }}

命名为vueblog-8080.conf,保存到/etc/nginx/conf.d文件夹下

执行 sudo nginx -s reload 重启服务器

修改为线上地址

server.js:

const dom = new JSDOM('', { url: 'http://localhost:8080' })const dom = new JSDOM('', { url: 'http://vueblog.86886.wang' })

app.js:

const baseURL = 'http://localhost:8080/api'const baseURL = 'http://vueblog.86886.wang/api'

启动项目

完成以上操作,就可以准备启动项目了

首先npm install安装依赖包
然后pm2执行:
pm2 start ecosystem.json --env production

结语

由于我主要是做前端的,对于服务器运维方面知识了解也不多,所以关于安全项的设置就没有考虑,不过如果仅仅想让自己的项目在服务器上跑起来,以上应该足够啦

 

原文

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

你可能感兴趣的文章
读懂源码:一步一步实现一个 Vue
查看>>
React Hooks
查看>>
react-hooks-redux
查看>>
react摘要
查看>>
ES6的Symbol竟然那么强大,面试中的加分点啊
查看>>
理解ES6 proxy&reflection
查看>>
深入理解ES6 class
查看>>
react设计--他怎么知道是类组件还是函数组件
查看>>
redux-saga 原理浅析
查看>>
Object.defineProperty和Proxy代理
查看>>
理解运用JS的闭包、高阶函数、柯里化
查看>>
JavaScript开发的40+个经典技巧
查看>>
snabbdom 源码阅读分析
查看>>
致敬 React: 为 Vue 引入容器组件和展示组件
查看>>
2019大厂面试必备
查看>>
webpack4.0打包优化策略
查看>>
前端一些细节
查看>>
剖析Vue原理&实现双向绑定MVVM
查看>>
vue3.0 尝鲜 -- 摒弃 Object.defineProperty,基于 Proxy 的观察者机制探索
查看>>
JavaScript异步流程控制全攻略
查看>>