vue服务端渲染:nuxtjs打包与部署
nuxtjs
打包
"dev": "nuxt",
"build": "nuxt build",
"generate": "nuxt generate",
"start": "nuxt start"
- 打包: 执行 npm run build打包即可得到build下的dist目录
- 验证打包后的结果
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
二: 自动化发布部署(现代化自动部署)
上面发布部署一是传统的发布部署: 传统的发布部署虽然能明白流程,但是每次发布上线和版本更新都需要重新操作,很繁琐
传统发布部署流程: 上传代码压缩包-连接服务器后台解压缩-下载依赖-运行项目
自动化部署流程: 连接
-
配置github的assets token
1)在个人中心生成token
2 ) 在需要的自动化部署的仓库的settings中添加token
保存生产的token
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 -
配置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
更多推荐
所有评论(0)