ideaspringboot项目上传服务器_nuxt+pm2 自动化部署及打包后文件自动上传阿里云 oss
在读这篇文档时,希望你对 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相关推荐
- ideaspringboot项目上传服务器_PHP中使用 TUS 协议来实现可恢复文件上传
曾经尝试过用PHP上传大文件吗?想知道您是否可以从上次中断的地方继续上传,而不会在遇到任何中断的情况下再次重新上传整个数据?如果您觉得这个场景很熟悉,请接着往下阅读. 文件上传是我们几乎所有现代Web ...
- 微信小程序 - 超详细 “纯前端“ 将文件上传到阿里云 OSS,最新阿里云 OSS 直传音视频、图片、word、excel、ppt、office 文档(全程无需后端,前端文件直传阿里云oss服务器)
前言 网上的教程乱七八糟却文件少代码(并且没注释),而且都已经很老了,对于新手来说真的无从下手. 本文站在新手小白的角度,实现微信小程序开发中,"前端直传" 上传文件到阿里云oss ...
- vue项目中上传文件到阿里云oss方法
上传背景介绍 在项目需求中,关于图片.视频.文件等上传文件,一般不是直接放置在自己的后台服务器上,一般都会购买云服务进行存储.譬如阿里云的oss对象存储. 那么,前端开发项目中,涉及到上传的功能时,我 ...
- 微信小程序直接上传文件到阿里云OSS组件封装
微信小程序直接上传文件到OSS 1. 封装公共方法 在根目录utils目录新建一个upload文件夹: // utils/upload/base64.jsvar base64EncodeChars = ...
- java上传文件至阿里云oss工具类
第一步:引入oss maven坐标 <dependency><groupId>com.aliyun.oss</groupId><artifactId>a ...
- 怎样把项目上传服务器,怎样将项目上传云服务器
怎样将项目上传云服务器 内容精选 换一换 本节操作介绍本地Linux操作系统主机通过SCP向Linux云服务器传输文件的操作步骤.登录管理控制台,在ECS列表页面记录待上传文件的云服务器的弹性公网IP ...
- go walk 开发window界面,上传文件到阿里云oss -- 服务器端
前面我们完成了一个网页端的上传oss程序:https://blog.csdn.net/daily886/article/details/103366145 现在我们把前后端分离 前端使用walk开发, ...
- go 使用 gin 上传文件到 阿里云oss存储
本文使用 go 版本是: go version go1.13 linux/amd64 阿里云oss go sdk版本:v2.0.4 官网可以下载 linux版本是:Linux version 3.1 ...
- 【微信小程序】上传文件到阿里云OSS
小程序上传文件到OSS也是利用OSS提供的PostObject接口来实现表单文件上传到OSS 步骤1:配置Bucket跨域访问 客户端进行表单直传到OSS时,会从浏览器向OSS发送带有Origin的请 ...
最新文章
- MyBatis+Spring整合
- codeforces 483B Friends and Presents
- 【机器学习】SVM基本线性可分与多分类
- mysql rand() 子查询_MySQL ------ 子查询(十三)
- openMP的简单使用
- html跨浏览器兼容性问题
- java做一个客房管理系统定制_开题报告基于Java的酒店客房管理系统的设计与实现.doc...
- 基于微服务和Docker的PaaS云平台架构设计
- c语言实现对矩阵进行行程编码,游程编码行程编码.pptx
- 以下sum函数用来求a,b两数的和,在主函数中输入两个数并调用sum函数求其和。
- node视频转码框架
- uboot移植之迷雾解码
- 第五周 项目二 建立链栈算法库
- AI 也有音乐细胞,流行乐古典乐都难不倒它
- Servlet的执行原理
- 关于Introduction、Discussion的杂记
- table css个人简历的实现 美观 简洁
- 本科2019大数据应用大赛 可视化部分
- 计算机组成原理第一章
- [FPGA/Vivado/ILA]Vivado的ILA核在Waveform界面无任何变化,抓取不到信号和数据
热门文章
- NET问答:如何理解 IEnumerableT 和 IQueryableT
- .NET5实战千万并发,性能碾压各版本,云原生时代,.NET5为王!
- 如何在 C# 中使用 Exceptionless
- 在 k8s 中部署 Prometheus 和 Grafana
- 采用config方式灵活配置我们的Quarz.net中的Job,Trigger
- 200行代码,7个对象——让你了解ASP.NET Core框架的本质[3.x版]
- .net core上 K8S(七).netcore程序的服务发现
- eShopOnContainers 看微服务③:Identity Service
- IIS负载均衡-Application Request Route详解第三篇:使用ARR进行Http请求的负载均衡
- 升级.Net Core RC1的类库项目