在读这篇文档时,希望你对 nuxt 及 pm2,有简单的了解

  • nuxt
  • pm2

前期准备

安装 pm2 及构建 nuxt

$ npm i pm2 -g
$ npx create-nuxt-app <项目名>

ssh 密钥配置

  • pm2 代码自动发布依赖于 git 工具,先将 ssh 密钥配置再你的代码仓库(github 或者 gitLab),具体操作自行 google 或者点击github 配置 ssh。
  • 使用 ssh 密钥链接服务器 s $ ssh-copy-id root@1.2.3.4 # 把本机的 SSH 秘钥添加至服务器,配置成功后,以后就不需要再执行这条 SSH 命令了

pm2 自动部署

生成 pm2 配置文件

$ pm2 ecosystem

运行后会在项目根目录生成 ecosystem.config.js 文件

这是个简单的配置文件,供大家参考

module.exports = {apps: [{name: "my-app",autorestart: true,script: "server/index.js",env: {NODE_ENV: "development"},env_production: {NODE_ENV: "production"}}],deploy: {dev: {// 服务器操作用户user: "root",// 服务器iphost: "1.2.3.4",ref: "origin/master",repo: "https://github.com/faner11/angular-case.git",path: "/root/my-app","post-deploy":"rm -rf node_modules && npm install && npm run build && pm2 startOrReload ecosystem.config.js --env production"}
};

post-deploy中做了哪些操作 + rm -rf node_modules 删除 node_modules + npm install 重新安装包 + npm run build 运行打包 + pm2 startOrReload ecosystem.config.js --env production pm2 启动应用

初始化项目并发布

  • 本机初始化远程服务器上的项目pm2 deploy dev setup,命令中的dev是在上面配置文件中写的部署环境的名称。
  • git 提交代码,git push origin master将代码提交至远程仓库。
  • 部署项目pm2 deploy dev,这个命令执行后服务器把前面从本机提交至 git 仓库上的最新代码拉下拉,并且运行post-deploy中的命令。一般没什么问题的话,经过这几步操作,就能部署成功了。

打包后文件上传 oss

参考文档

  • oss CDK node.js 版
  • nuxt dist 文件上传到 CDN 我们需要将 .nuxt/dist/client上传至 cdn

上传代码

在根目录新建upload.js文件

const OSS = require("ali-oss");
const fs = require("fs");
const path = require("path");
const os = require("os");
const PUBLIC_PATH = path.join(__dirname, "/");const client = new OSS({accessKeyId: "your access key",accessKeySecret: "your access secret",bucket: "your bucket name",region: "oss-cn-hangzhou"
});/***获取文件目录并删除* @param {*} dir //文件目录*/
async function deleteDir(dir) {let result = await client.list({prefix: dir + "/",delimiter: "/"});if (result.objects) {let aa = [];result.objects.forEach(function(obj) {aa.push(obj.name);});try {await client.deleteMulti(aa, {quiet: true});console.log("删除成功");} catch (e) {console.log("文件删除失败", e);}}
}/*** 遍历文件夹递归上传* @param {path} src 本地路径* @param {string} dist oos文件夹名 www|kouzi*/
function addFileToOSSSync(src, dist) {let docs = fs.readdirSync(src);docs.forEach(function(doc) {let _src = src + "/" + doc,_dist = dist + "/" + doc;let st = fs.statSync(_src);// 判断是否为文件if (st.isFile() && doc !== ".DS_Store") {putOSS(_src, _dist);}// 如果是目录则递归调用自身else if (st.isDirectory()) {addFileToOSSSync(_src, _dist);}});
}
/***单个文件上传至oss*/
async function putOSS(src, dist) {try {await client.put("/" + dist, src);} catch (e) {console.log("上传失败".e);}
}
/***上传文件启动*@param {string} dirName 将要上传的文件名*/
async function upFile(dirName) {try {await deleteDir(dirName);await addFileToOSSSync(PUBLIC_PATH + ".nuxt/dist/client", dirName);console.log(dirName + "上传oss成功");} catch (err) {console.log(dirName + "上传oss成功失败", err);}
}upFile("www");

修改package.json

scripts中的build改为如下:

{"scripts": {"build": "nuxt build && node upload.js"}
}

修改nuxt.config.js

export default {build: {publicPath: "https://cdn.nuxtjs.org"}
};

结束

至此我们的自动化部署加文件自动上传阿里云 oss 就完成了。 以后只需执行pm2 deploy dev就可以了。

ideaspringboot项目上传服务器_nuxt+pm2 自动化部署及打包后文件自动上传阿里云 oss相关推荐

  1. ideaspringboot项目上传服务器_PHP中使用 TUS 协议来实现可恢复文件上传

    曾经尝试过用PHP上传大文件吗?想知道您是否可以从上次中断的地方继续上传,而不会在遇到任何中断的情况下再次重新上传整个数据?如果您觉得这个场景很熟悉,请接着往下阅读. 文件上传是我们几乎所有现代Web ...

  2. 微信小程序 - 超详细 “纯前端“ 将文件上传到阿里云 OSS,最新阿里云 OSS 直传音视频、图片、word、excel、ppt、office 文档(全程无需后端,前端文件直传阿里云oss服务器)

    前言 网上的教程乱七八糟却文件少代码(并且没注释),而且都已经很老了,对于新手来说真的无从下手. 本文站在新手小白的角度,实现微信小程序开发中,"前端直传" 上传文件到阿里云oss ...

  3. vue项目中上传文件到阿里云oss方法

    上传背景介绍 在项目需求中,关于图片.视频.文件等上传文件,一般不是直接放置在自己的后台服务器上,一般都会购买云服务进行存储.譬如阿里云的oss对象存储. 那么,前端开发项目中,涉及到上传的功能时,我 ...

  4. 微信小程序直接上传文件到阿里云OSS组件封装

    微信小程序直接上传文件到OSS 1. 封装公共方法 在根目录utils目录新建一个upload文件夹: // utils/upload/base64.jsvar base64EncodeChars = ...

  5. java上传文件至阿里云oss工具类

    第一步:引入oss maven坐标 <dependency><groupId>com.aliyun.oss</groupId><artifactId>a ...

  6. 怎样把项目上传服务器,怎样将项目上传云服务器

    怎样将项目上传云服务器 内容精选 换一换 本节操作介绍本地Linux操作系统主机通过SCP向Linux云服务器传输文件的操作步骤.登录管理控制台,在ECS列表页面记录待上传文件的云服务器的弹性公网IP ...

  7. go walk 开发window界面,上传文件到阿里云oss -- 服务器端

    前面我们完成了一个网页端的上传oss程序:https://blog.csdn.net/daily886/article/details/103366145 现在我们把前后端分离 前端使用walk开发, ...

  8. go 使用 gin 上传文件到 阿里云oss存储

    本文使用 go 版本是: go version go1.13 linux/amd64 阿里云oss go sdk版本:v2.0.4  官网可以下载 linux版本是:Linux version 3.1 ...

  9. 【微信小程序】上传文件到阿里云OSS

    小程序上传文件到OSS也是利用OSS提供的PostObject接口来实现表单文件上传到OSS 步骤1:配置Bucket跨域访问 客户端进行表单直传到OSS时,会从浏览器向OSS发送带有Origin的请 ...

最新文章

  1. MyBatis+Spring整合
  2. codeforces 483B Friends and Presents
  3. 【机器学习】SVM基本线性可分与多分类
  4. mysql rand() 子查询_MySQL ------ 子查询(十三)
  5. openMP的简单使用
  6. html跨浏览器兼容性问题
  7. java做一个客房管理系统定制_开题报告基于Java的酒店客房管理系统的设计与实现.doc...
  8. 基于微服务和Docker的PaaS云平台架构设计
  9. c语言实现对矩阵进行行程编码,游程编码行程编码.pptx
  10. 以下sum函数用来求a,b两数的和,在主函数中输入两个数并调用sum函数求其和。
  11. node视频转码框架
  12. uboot移植之迷雾解码
  13. 第五周 项目二 建立链栈算法库
  14. AI 也有音乐细胞,流行乐古典乐都难不倒它
  15. Servlet的执行原理
  16. 关于Introduction、Discussion的杂记
  17. table css个人简历的实现 美观 简洁
  18. 本科2019大数据应用大赛 可视化部分
  19. 计算机组成原理第一章
  20. [FPGA/Vivado/ILA]Vivado的ILA核在Waveform界面无任何变化,抓取不到信号和数据

热门文章

  1. NET问答:如何理解 IEnumerableT 和 IQueryableT
  2. .NET5实战千万并发,性能碾压各版本,云原生时代,.NET5为王!
  3. 如何在 C# 中使用 Exceptionless
  4. 在 k8s 中部署 Prometheus 和 Grafana
  5. 采用config方式灵活配置我们的Quarz.net中的Job,Trigger
  6. 200行代码,7个对象——让你了解ASP.NET Core框架的本质[3.x版]
  7. .net core上 K8S(七).netcore程序的服务发现
  8. eShopOnContainers 看微服务③:Identity Service
  9. IIS负载均衡-Application Request Route详解第三篇:使用ARR进行Http请求的负载均衡
  10. 升级.Net Core RC1的类库项目