当前位置: 首页 > wzjs >正文

广西建设四库一平台网站安徽省建设协会网站

广西建设四库一平台网站,安徽省建设协会网站,工程造价招聘网最新招聘,行政机关网站建设ftp自动上传 在我们平时开发项目时,需要将本地代码编译后上传到服务器,我们可以借助Node.js库中的ssh2来实现自动上传 首先我们先来说下ssh2的安装和使用 安装ssh2 npm install ssh2创建ssh2实例 const { Client } require(ssh2);连接服务器 const c…

ftp自动上传

在我们平时开发项目时,需要将本地代码编译后上传到服务器,我们可以借助Node.js库中的ssh2来实现自动上传

首先我们先来说下ssh2的安装和使用

  1. 安装ssh2
  npm install ssh2
  1. 创建ssh2实例
  const { Client } = require('ssh2');
  1. 连接服务器
  const conn = new Client();conn.on('ready', () => {console.log('SSH Connection Ready');// 可以在这里执行命令、上传文件等}).on('error', (err) => {console.error('Connection Error:', err);}).on('close', () => {console.log('Connection Closed');}).connect({host: 'your-server-ip',port: 22, // SSH 默认端口username: 'your-username',password: 'your-password', // 或使用 privateKey});

4.通过 SFTP 上传文件到远程服务器。
首先,你需要确定你的本地编译后的文件路径和目标服务器的文件路径。然后,你可以使用 SFTP(SSH File Transfer Protocol)协议来上传文件。以下是一个简单的示例:

  conn.sftp((err, sftp) => {if (err) throw err;const localFile = './local-file.txt'; // 本地文件地址,相对地址基于当前脚本const remoteFile = '/path/to/remote-file.txt';sftp.fastPut(localFile, remoteFile, {}, (err) => {if (err) {console.error('上传失败:', err);} else {console.log('文件上传成功');}conn.end();});});

完整代码如下

const ssh2 = require('ssh2')let conn = new ssh2.Client();connect()
// 上传操作
function connect () {conn.on('ready', () => {conn.sftp((err, sftp) => {sftp.fastPut('./dist.tar.gz', '/opt/web/dist.tar.gz', {}, (err, result) => {//上传完成后开始解压Shell(conn)})})}).connect({host: '10.10.10.10',port: '22',username: 'root',password: 'root'})
}// 解压部署操作
function Shell (conn) {conn.shell((err, stream) => {stream.end(`cd /opt/webtar zxvf ./dist.tar.gzrm -rf dist.tar.gzexit`//进入服务器暂存地址//解压上传的压缩包//删除压缩包//退出).on('data', data => {console.log(data.toString())}).on('close', () => {conn.end()})})
}

有时我们想将打包build这一步操作也放入进入,或者使用的是lerna多包一起打包时,先打包完成再一起上传,这里我们需要用到node插件child_process

child_process 是 Node.js 中的一个核心模块,用于创建和管理子进程。它允许你从 Node.js 程序中启动和控制其他进程(例如 shell 脚本、命令行工具或其他 Node.js 脚本),使得 Node.js 可以与外部程序交互,进行并行处理。

假如我们现在有一个文件./build-test.sh是处理vue或者其他项目打包的脚本,我们可以使用child_process来执行这个脚本,如下:

# build各个微应用
lerna run --scope '{test1,test2,test3}' build:test
# 移动各个包至根目录
mv ./test1/test1 ./
mv ./test2/test2 ./
mv ./test3/test3 ./
# 将各个应用打包输出
tar -czvf dist.tar.gz  ./test1 ./test2 ./test3
rm -rf ./test1 ./test2 ./test3

先将多个包打包后再进行gz压缩,最后输入一个压缩包

对应调用./build-test.sh的脚本如下

  //执行tar.sh脚本获取输出流
let pro = cp.exec('"./build-test.sh"', (error) => {if (error) {console.log(error)}
})pro.stdout.pipe(process.stdout)
pro.on('exit', () => {//打包完成后上传// dosome thing
})

到这里了我们就可以直接调用我们之前写好的connect方法,来进行FTP上传

const cp = require('child_process')
//此包ssh2需要下载
const ssh2 = require('ssh2')//执行tar.sh脚本获取输出流
let pro = cp.exec('"./build-test.sh"', (error) => {if (error) {console.log(error)}
})pro.stdout.pipe(process.stdout)
pro.on('exit', () => {//打包完成后上传// 上传connect()
})let conn = new ssh2.Client();// 上传操作
function connect () {conn.on('ready', () => {conn.sftp((err, sftp) => {sftp.fastPut('./dist.tar.gz', '/opt/web/dist.tar.gz', {}, (err, result) => {//上传完成后开始解压Shell(conn)})})}).connect({host: '10.10.10.10',port: '22',username: 'root',password: 'root'})
}// 解压部署操作
function Shell (conn) {conn.shell((err, stream) => {stream.end(`cd /opt/webtar zxvf ./dist.tar.gzrm -rf dist.tar.gzexit`//进入服务器暂存地址//解压上传的压缩包//删除压缩包//退出).on('data', data => {console.log(data.toString())}).on('close', () => {conn.end()})})
}
http://www.dtcms.com/wzjs/603495.html

相关文章:

  • qq邮件网站建设的模块微信头像在线制作免费
  • 万州区建设局官方网站闸北区网站设计与制作
  • 在线制作公司网站苏州展厅设计公司排名
  • 企业网站 单页浙江省网站重点学科建设
  • 免费h5制作网站动态倒计时网站模板
  • 专门做网站的软件网络技术与网站建设
  • .net网站与php网站服装 公司 网站建设
  • 企业网站服务器建设如何在vs做网站
  • asp网站模板安装建设银行武威分行网站
  • 南通做百度网站的公司哪家好wordpress发布十万篇文章
  • 提取网站子页面邮箱视频制作费用收费标准
  • 大庆建设网站网站全局参数设置
  • 企业营销网站建设系统新网站建设流程图
  • 企业官网建站流程朋友找做网站都要收定金
  • python做的网站如何打开自己做的微课上传到哪个网站
  • 什么网站可以做美食ps网页设计流程
  • 百度网站建设的意义项目商业网站建设方案
  • 东莞商城网站推广建设百度seo推广软件
  • 小说网站上的广告在哪做廊坊网站建设方案开发
  • 网站上实用的h5特效东莞广告公司东莞网站建设
  • 建设网站什么语言比较合适查看虚拟币行情的网站怎么做
  • 用ps软件做ppt模板下载网站有哪些asp.net 怎么做网站
  • 咸阳网站制作西宁网站制作费用是多少钱
  • 瑞安 网站建设帮公司做网站怎么找
  • 沈阳市网站设计公司大全html怎么设置网站吗
  • 网站建设个人网上银行做的网站是怎么被收录
  • 网站开发通常叫什么部门安阳网站建设推广优化
  • 哪些网站做的美剧河北省建设监理协会网站
  • 营销型网站建设怎么做南昌哪里可以做电商网站
  • 滨州内做网站的公司做旅游网站的关注与回复