打包

    "dev": "nuxt",
    "build": "nuxt build",
    "generate": "nuxt generate",
    "start": "nuxt start"
  1. 打包: 执行 npm run build打包即可得到build下的dist目录
    在这里插入图片描述
  2. 验证打包后的结果
    npm run start

发布部署一 - 手动部署到项目服务器并使用pm2启动服务

1)手动部署到项目服务器

在nuxt.config.js中添加

  server: {
    port: 8000, // default: 3000
    host: '0.0.0.0' // default: localhost只能用于本机访问,如果需要对外访问需要设置0.0.0.0
  },

需要传递这几个文件,zip压缩上传到服务器
在这里插入图片描述

补充知识–开始

推荐一个按时收费的服务器厂商: 链接
购买后进行连接服务器在这里插入图片描述
并将申请的外网ip与上面的主机进行绑定

可以下载filezilla进行安装后(filezilla下载连接),连接上面的主机
在这里插入图片描述

补充知识-结束

在连接的终端执行命令

mkdir realworld-nuxtjs // 常见目录
cd realworld-nuxtjs

在ftp进行拖动压缩包文件进行上传
在这里插入图片描述
在终端输入

unzip ./realworld-nuxtjs.zip // 解压压缩包
ls -a // 查看解压后的目录
npm i // 安装依赖包

有可能服务器没有node环境无法下载依赖,可以linux安装node环境: 连接

执行npm run sart运行项目
然后就可以通过 外网ip:端口号 进行访问了

在这里插入图片描述
如果无法访问可以可以检查下本机和服务商的防火墙开放的端口: 连接

2)使用pm2启动服务

执行命令npm node等命令会占用命令行,无法执行其它命令,所以我们希望执行的命令能够在后台运行
pm2安装使用可以看这个: 连接

// 执行这个命令既可在后台运行
pm2 start npm -- start

二: 自动化发布部署(现代化自动部署)

上面发布部署一是传统的发布部署: 传统的发布部署虽然能明白流程,但是每次发布上线和版本更新都需要重新操作,很繁琐
传统发布部署流程: 上传代码压缩包-连接服务器后台解压缩-下载依赖-运行项目
自动化部署流程: 连接

  1. 配置github的assets token
    1)在个人中心生成token
    在这里插入图片描述
    2 ) 在需要的自动化部署的仓库的settings中添加token
    在这里插入图片描述
    在这里插入图片描述
    保存生产的token
    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

  2. 配置github actions执行脚本
    在这里插入图片描述
    /.github/workflows/main.yml

# 不是每一次push都会触发部署,当提交以v开头的标签就会触发自动部署, 如v1.0 v1.1
name: Publish And Deploy Demo
on: 
  push:
    tags:
      - 'v*'

# 执行的工作:构建和部署
jobs:
  build-and-deploy:
    runs-on: ubuntu-latest
    steps:

    # 下载源码
    - name: Checkout
      uses: actions/checkout@master

    # 打包构建
    - name: Build
      uses: actions/setup-node@master
    - run: npm install
    - run: npm run build
    - run: tar -czvf release.tgz .nuxt static nuxt.config.js package.json package-lock.json pm2.config.json

    # 发布 Release
    - name: Create Release
      id: create_release
      uses: actions/create-release@master
      env:
        GITHUB_TOKEN: ${{ secrets.TOKEN }}
      with:
        tag_name: ${{ github.ref }}
        release_name: Release ${{ github.ref }}
        draft: false
        prerelease: false

    # 上传构建结果到 Release
    - name: Upload Release Asset
      id: upload-release-asset
      uses: actions/upload-release-asset@master
      env:
        GITHUB_TOKEN: ${{ secrets.TOKEN }}
      with:
        upload_url: ${{ steps.create_release.outputs.upload_url }}
        asset_path: ./release.tgz
        asset_name: release.tgz
        asset_content_type: application/x-tgz


    # 部署到服务器(scripT下的命令是运行在远程服务器的)
    # 需要准备的是(HOST USERNAME PASSWORD PORT)
    - name: Deploy
      uses: appleboy/ssh-action@master
      with:
        host: ${{ secrets.HOST }}
        username: ${{ secrets.USERNAME }}
        password: ${{ secrets.PASSWORD }}
        port: ${{ secrets.PORT }}
        script:
          cd /root/realworld-nuxtjs
          wget https://github.com/xiaoqiang007-github/realworld/releses/latest/download/release.tgz -0 release.tgz
          tar zxvf release.tgz
          npm install --production
          pm2 reload pm2.config.json






3) 做下配置修改
在这里插入图片描述
在当前仓库secret的deploy阶段也添加配置字段(包括token)
在这里插入图片描述
-HOST
106.75.65.214
在这里插入图片描述
-TOKEN
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
-PORT
22
-USERNAME
root
-PASSWORD
在这里插入图片描述

在这里插入图片描述

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐