使用node命令自动部署服务

436 字
2 分钟
使用node命令自动部署服务

自从有了服务器之后,以前用vitepress写的博客,每次修改之后,既要部署在github上,又想要部署在自己的服务器上。

github pages部署#

github的部署已经有deploy脚本,可以输入yarn deploy命令直接部署。

服务器部署#

想从本地部署服务器,需要几个步骤:

  1. 连接服务器 使用ssh2-sftp-client

    config.js
    const config = {
    host: '43.140.252.63', // 服务器地址
    remoteStatic: '/usr/local/tomcat/webapps/ROOT/dist.tar.gz', // 需要上传到服务器的目录
    port: "22", // 端口
    username: "root", // root
    password: "", // 密码 执行脚本时传入 node xxx/upload.js password
    localStatic: path.join(__dirname, '../../.vitepress/dist.tar.gz'), // tar.gz存在的目录
    };
    // index.js
    const Client = require("ssh2-sftp-client");
    const config = require("./config");
    sftp
    .connect(config)
    .then(() => {
    console.log(success("sftp连接成功"));
    ...
    })
  2. 上传打包后的文件

    • 首先判断dist目录是否存在

    • 如果存在,压缩后再传入(dist文件太多,传输太慢)

      if (fs.existsSync(options.localStatic)) {
      console.log(success("开始上传压缩文件"));
      return sftp.put(options.localStatic, options.remoteStatic);
      } else if (fs.existsSync(baseDir)) {
      isDist = true;
      console.log(success("压缩文件不存在,开始上传dist目录"));
      return sftp.uploadDir(baseDir, options.remoteStatic.slice(0, -12));
      }
    • 上传完成,使用ssh2进行远程命令解压

      ...
      const { Client } = require("ssh2");
      const conn = new Client();
      conn
      .on("ready", () => {
      // 远程解压
      const remoteModule = options.remoteStatic.replace(
      "dist.tar.gz",
      ""
      );
      /**
      * 执行命令
      * cd /usr/local/tomcat/webapps/ROOT
      * tar xvf dist.tar.gz
      */
      conn.exec(
      `cd ${remoteModule};tar xvf dist.tar.gz`,
      (err, stream) => {
      if (err) throw err;
      stream
      .on("close", (code) => {
      code === 0
      ? console.log(success("解压完成"))
      : console.log(error("解压失败"));
      })
      ...
      })
      ...
      })
  3. 将命令添加在scripts中

    {
    "scripts": {
    "zip": "cd .vitepress/dist && tar -zcvf ../dist.tar.gz *",
    "build:server": "cross-env APP_ENVKEY=server vitepress build && npm run zip",
    "deploy:server": "npm run build:server && node scripts/upload",
    },
    }
  4. 输入命令npm run deploy:server password,password为服务器密码

通过以上几个步骤,就可以把前端服务直接通过命令行的方式部署在服务器上
代码地址

使用node命令自动部署服务
https://wangxiang.website/posts/前端工程/deploy-server/
作者
翔子
发布于
2022-09-15
许可协议
CC BY-NC-SA 4.0
Profile Image of the Author
翔子
前端开发工程师
公告
博客已从 VitePress 迁移到 Astro + Firefly 主题,223 篇文章全部保留。
音乐
封面

音乐

暂未播放

0:00 0:00
暂无歌词
分类
标签
站点统计
文章
221
分类
9
标签
28
总字数
411,914
运行时长
0
最后活动
0 天前

文章目录