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

5fff40cf6603e7cea23c08b2e1c0f316.png

在读这篇文档时,希望你对 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就可以了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/289342.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

wait放弃对象锁_Java线程中wait、await、sleep、yield、join用法总结

一、wait()、notify()、notifyAll()用法obj.wait()/obj.wait(long timeout)是Object中的方法&#xff0c;当线程调用wait()方法&#xff0c;当前线程释放对象锁&#xff0c;进入等待队列。obj.notify()/obj.nogifyAll()是Object中的方法&#xff0c;唤醒在此对象上wait()的单个…

怎么找到项目中所有同名的类_26岁转行程序员的成长历程--Day03从内存层面理解类和对象...

今天学习了类、对象及相关知识&#xff0c;试着从内存角度分析三者关系&#xff0c;如果有不对的地方请指正首先得先介绍java中的三个内存区域&#xff1a;栈区用于存放该线程执行方法的信息&#xff08;实际参数、局部变量等&#xff09;。栈属于线程私有&#xff0c;不能实现…

pycharm提示your evalluation license has expired解决方法

安装pycharm&#xff0c;一段时间后提示your evalluation license has expired&#xff1a;打开pycharm--点击help--register--选中license server,输入license server address如图示即可 转载于:https://www.cnblogs.com/youtiaoge/p/7125070.html

【SPSS统计分析】SPSS聚类分析:一个案例演示聚类分析全过程(附SPSS 19.0中文版下载)

摘要:案例数据源: 有20种12盎司啤酒成分和价格的数据,变量包括啤酒名称、热量、钠含量、酒精含量、价格。数据来自《SPSS for Windows 统计分析》。 目 录 问题一:选择那些变量进行聚类?——采用“R型聚类

python利用特征进行可视化样本显示_利用Python进行机器学习之特征选择

毫无疑问&#xff0c;解决一个问题最重要的是恰当选取特征、甚至创造特征的能力&#xff0c;这叫做特征选取和特征工程。对于特征选取工作&#xff0c;我个人认为分为两个方面&#xff1a;1)利用python中已有的算法进行特征选取。2)人为分析各个变量特征与目标值之间的关系&…

甘肃2019年9月计算机二级报名入口,2019年9月甘肃计算机二级考试成绩查询入口...

【摘要】2019年9月份计算机二级考试已经圆满结束&#xff0c;参加考试的小伙伴们已经迫不及待的想要知道成绩了吧&#xff0c;小编对2019年9月甘肃计算机二级考试成绩查询入口进行了整理&#xff0c;参加9月份考试的朋友们到时候记得按时查询成绩哦&#xff01;想要了解更多计算…

FluentEmail - 适用于 .NET 和 .NET Core 的邮件发送库

简介FluentEmail - 适用于 .NET 和 .NET Core 的邮件发送库从 .NET 和 .NET Core 发送电子邮件的最简单方法。将 Razor 用于电子邮件模板并使用 SendGrid、MailGun、SMTP 等进行发送Nuget包•FluentEmail.Core - 域模型•FluentEmail.Smtp - 通过 SMTP 服务器发送电子邮件•Flu…

安装MySql出现Error Nr.1045的解决办法

如图&#xff0c;最后一步出现这个错误框 这是因为上次安装过MySql&#xff0c;其用户数据在卸载的时候没有被删除掉&#xff0c;解决办法如下&#xff1a; 显示隐藏的文件夹&#xff0c;打开C盘&#xff0c;找到下图文件删除之 删除之后再安装一遍MySQL&#xff0c;就可以了转…

python网易云_用python爬虫爬取网易云音乐

标签&#xff1a; 使用python爬虫爬取网易云音乐 需要使用的模块 只需要requests模块和os模块即可 开始工作 先去网易云音乐网页版找一下你想要听的歌曲点击进去。按键盘F12打开网页调试工具,点击Network就可以查看网络请求的相关信息&#xff0c;选择XHR&#xff0c;然后可以看…

android 固定底部 布局_Android系统列表控件

在android系统控件中&#xff0c;有多个控件可以展示列表数据。一、ListView该组件是android中最常用的一个UI组件&#xff0c;用于实现在屏幕上显示多个内容&#xff0c;以便于我们用手指进行滑动。ListView控件以列表的形式展示具体内容&#xff0c;并且能够根据数据的长度自…

.NetCore中IdentityServer使用nginx-proxy的一次排错经历

前言最近在看 Duende.IdentityServer.Admin&#xff0c;本地使用IIS Express跑了一下源码&#xff0c;也看了一遍的代码&#xff0c;决定使用他们的模板创建一个Demo&#xff0c;部署在本地的Docker环境中&#xff0c;也算是踩一下坑吧。以下不会详细介绍项目的部署&#xff0c…

nmap脚本使用总结

原文链接&#xff1a;http://drops.wooyun.org/tips/2188 0x00 前言&#xff1a; nmap的基本介绍和基本使用方法&#xff0c;在乌云知识库中已经有人提交过&#xff0c;讲的比较详细&#xff0c;在此文中就不再讲述。 具体链接&#xff1a;http://drops.wooyun.org/tips/2002 本…

身份管理软件公司Okta计划IPO,目标融资1亿美元

Okta是一家专门提供身份管理和单点登陆&#xff08;SSO&#xff09;软件的公司。今日公司提交了一份S-1表格正式启动了IPO程序。根据文件内容显示&#xff0c;Okta计划在首次公开募股中融资1亿美元。 公司表示&#xff0c;Okta将在纳斯达克上市&#xff0c;股票代码为OKTA。 即…

jmeter对乱码如何处理_JMeter读取 Excel 表中用例数据实现接口压测

传统的接口测试&#xff0c;都是在接口中手动输入不同用例准备的多种场景参数数据&#xff0c;一遍一遍的输入来执行多个不同的用例&#xff0c;但是现在利用excel表格准备各种类型的数据&#xff0c;使用Jmeter中Jmeter CSV Data Set Config参数化实现可设置的、一次性的读取e…

C# 利用.NET 升级助手将.NET Framework项目升级为.NET 6

概述.NET6 正式版本已经发布有一阵子了&#xff0c;今天我就体验一下如何将.NET Framework的项目升级为.NET 6.升级条件&#xff1a;Windows 操作系统.NET 6 SDKVisual Studio 2022 17.0 或更高版本环境准备①首先是VS2022下载&#xff0c;直接上微软官方网站&#xff0c;下载地…

城市遥感动态监测管理系统

1.系统概述 随着全国各城市数字化进程的发展&#xff0c;高分辨率遥感影像和数字航空影像为“数字城市”的建设提供了丰富的数据源。近年来&#xff0c;遥感影像的空间分辨率和光谱分辨率的明显提高&#xff0c;使得高分辨率遥感影像和数字航空影像的应用得到了极大的延伸。在城…

3月第4周全球域名商TOP15:万网第四 涨幅居亚

IDC评述网&#xff08;idcps.com&#xff09;04月03日报道&#xff1a;据WebHosting.info公布的最新数据显示&#xff0c;在3月第4周&#xff0c;全球域名商域名总量十五强排行榜中&#xff0c;美国占10个席位&#xff0c;成为最大赢家。其次是中国&#xff0c;有3家域名商上榜…

【Blog.Core开源】框架集成部门权限

&#xff08;Blog.Core框架功能点概述&#xff09;Blog.Core开源四年啦&#xff0c;一行行代码凝结了大家的热情和心血&#xff0c;基本功能骨架已完成&#xff0c;欢迎更多的公司和企业使用哟。真实公司留言盖楼可获得一对一技术指导&#xff1a;https://github.com/anjoy8/Bl…

[一个经典的多线程同步问题]解决方案一:关键段CS

前面提出了一个经典的多线程同步互斥问题&#xff0c;本篇将用关键段CRITICAL_SECTION来尝试解决这个问题。 本文先介绍如何使用关键段&#xff0c;然后再深层次的分析下关键段的实现机制和原理。 关键段CRITICAL_SECTION一共就四个函数&#xff0c;下面说一下这四个函数的原型…

服务器线程数一直增加,.NET Core中遇到奇怪的线程死锁问题:内存与线程数不停地增长...

一个 asp.net core 站点&#xff0c;之前运行在Linux 服务器上&#xff0c;运行一段时间后有时站点会挂掉&#xff0c;在日志中记录很多“EMFILE too many open files”的错误&#xff1a;Microsoft.AspNetCore.Server.Kestrel.Internal.Networking.UvException: Error -24 EMF…