前言
在遭到不可抗力因素的打压之后,咱决定从腾讯云跑路到racknerd
账号注册
首先是之前说的验证码问题,咱换了一个clash节点就解决了
racknerd的优势
- 不需要实名制。这是咱从腾讯云跑路的核心原因。在国内需要把域名转到厂商那里然后实名认证才能让把域名解析到ip
- 可以直连github
racknerd的劣势
贵,我租个单核1GB RAM的服务器爆了150块
在遇到问题之前…
咱照着之前在腾讯云上部署的方式重新跑了一遍。一切都很正常,直到咱运行pnpm build
爆内存了…
解决爆内存的问题
为什么会爆内存呢?
当然是因为这是个1G RAM的服务器
VUE3项目构建时的最少需要1GB的内存,而咱的破烂服务器在运行nginx之后只有大概600MB的剩余了
所以构建并不能在服务器端进行…
首先的想法是本地构建,然后把dist文件夹传上去。
但考虑到每次更新都要手动上传,咱决定把它作为没有办法的办法(咱这该死的完美主义)
于是求助群友
github workflow
——Alumopper姐姐
github workflow
不会写,遂bing一下
github的官方文档说它遵循yaml语法(什么是yaml)
那么我们着手开始写
on
首先是我们的需求,要在推送到master分支的时候自动触发构建
那么我们的on可以这样写
push: branches: - main - masterpermission
我们要将构建出来的dist文件夹写入仓库的pages分支,那么我们需要
permissions: contents: write这段代码的作用是给予脚本写入权限
job
接下来到了重头戏,这是我们脚本的核心功能,以job:开头
job里面是运行流程,github会自上而下执行你编写的流程
build-and-deploy
我们首先需要构建代码
由于我们构建出来的网站运行在ubuntu20.04操作系统上,所以我们添加一行
runs-on: ubuntu-latest之后是运行流程,在steps标签下
checkout
首先我们需要知道github action是怎么运行的
github会给你提供一台临时运行机,然后在这台机器上执行你的流程
但是我们要构建代码,而咱的代码又不会自动下载到虚拟机上
怎么办呢?
当然是前人栽树后人乘凉,
- name: Checkout uses: actions/checkout@v4搞定
setup pnpm
想要运行pnpm build,我们需要什么呢?
当然是需要pnpm了(
我们依然可以用别人写好的构建代码
- name: Setup pnpm uses: pnpm/action-setup@v4 with: version: 10.33.0 run_install: false安装的pnpm版本应该与本地的pnpm版本一致,并且不自动执行依赖安装(就是pnpm install)
不自动执行依赖安装的原因是我们还没装node.js
setup node.js
仿照上例显然
- name: Setup Node.js uses: actions/setup-node@v4 with: node-version: 22.12.0 cache: pnpminstall dependence
既然已经安装完node.js了,我们终于可以安装依赖了
- name: Install dependencies run: pnpm install --frozen-lockfilebuild site
就像教程里说的那样,直接
- name: Build site run: pnpm build就好了
Deploy to pages branch
然后我们要把生成的dist文件夹推送到pages分支上
恰巧前人还帮我们写好了
那么最后一步
- name: Deploy to pages branch uses: JamesIves/github-pages-deploy-action@v4 with: branch: pages folder: dist clean: true完成
SSH Connect to remote server
接下来就是把我们的page分支部署到服务器上面去
ssh链接到服务器,打开目录,然后直接git pull就行
直接使用linux的ssh命令有个问题,就是你只能传给它文件形式的私钥,而我们又不能在github上面明文存储私钥
好在前人的智慧还是起了作用
- name: SSH Connect to remote server uses: appleboy/ssh-action@master with: host: ${{ secrets.DEPLOY_HOST }} username: ${{ secrets.DEPLOY_USER }} key: | ${{ secrets.SSH_PRIVATE_KEY }} script: | cd ${{secrets.DEPLOY_PATH}} git pull现在就好啦
如果这篇文章对你有帮助,欢迎分享给更多人!
部分信息可能已经过时






