nuxt部署学习记录
- 购买服务器
阿里云服务器
镜像 CentOS 7.9 64位
分配公网IPV4
密钥对(创建密钥对)
- 部署nuxt项目
手动部署
代码:https://gitee.com/olhong/learn-project/tree/master/part3/fed-e-task-03-03/realworld
打包项目 npm run build
启动打包结果 npm run start
本地查看启动的项目
配置Host+Port
在项目的nuxt.config.js中配置
server: {
host: '0.0.0.0',
port: 3000
}
压缩发布包
.nuxt static nuxt.config.js package.json package-lock.json -> nuxt-realwork.zip
把发布包传到服务端
连接服务器(可使用xshell 或 阿里云自带的连接工具)
命令行连接 ssh root@ip地址 输入密码即可
创建目录 mkdir realword-nuxtjs
退出连接 exit
上传文件 scp scp .\nuxt-realwork.zip root@47.96.24.44:/root/realwork-nuxtjs
解压
连接到服务器,安装unzip命令
yum install -y unzip zip
解压文件夹
unzip nuxt-realwork.zip
安装依赖
安装nvm
// 执行任意一行命令
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.2/install.sh | bash
wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.2/install.sh | bash
有些文件下载失败,可以浏览器访问那些失败的文件,自己新建在服务器nvm目录下
重新连接远程服务器
如果出现这个错误 -bash: /root/nvm/nvm.sh: No such file or directory ,下载的文件默认在.nvm下,重新命名为nvm即可
下载对应的node版本
nvm install v16.16.0 和本地的node最好一致
启动服务
进入到realwork-nuxtjs下载依赖
cd realwork-nuxtjs
npm i
npm run start
运行成功后访问http://47.96.24.44:3000/
如果访问失败则需要查看是否关闭了防火墙,然后去阿里云添加安全组,运行端口的访问
项目部署成功后访问
自动部署
github仓库打不开解决方案:
https://tool.chinaz.com/dns?type=1&host=github.com&ip= 查询github.com的地址
C:\Windows\System32\drivers\etc
打开hosts
输入 20.205.243.166 github.com 保存
cmd 中输入 ipconfig/flushdns刷新
github仓库地址:https://github.com/OuLianhHong00/realword-nuxtjs
配置githubAccessToken
生成:https://github.com/settings/tokens
github上 settings/tokens personal access tokens -> generate new token
配置到项目的action secrets中
在项目根目录中创建文件.github\workflows\main.yml
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 -zcvf 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
# 部署到服务器
- 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/OuLianhHong00/realword-nuxtjs/releases/latest/download/release.tgz -O release.tgz
tar zxvf release.tgz
nvm install 16.16.0
nvm use 16.16.0
npm install --production
npm install pm2 -g
pm2 reload pm2.config.json
注:远程服务器需要有这个目录 realworld-nuxtjs
script里的github地址也要改成自己的
根目录再创建pm2.config.json
{
"apps": [
{
"name": "RealWorld",
"script": "npm",
"args": "start"
}
]
}
在github上再创建USERNAME(root) POST(22) PASSWORD(远程仓库的密码) HOST(47.96.24.44)服务器地址
git add .
git tag v0.1.0
git tag
git push origin v0.1.0