跳至主要內容

vuePress-thmee-hope2部署服务器教程

萌萌哒草头将军大约 4 分钟前端Vue

前言

这篇文章主要是完善上篇文章open in new window部署服务器的部分,由于最近刚买了服务器,所以才有了今天的内容。废话不多说,下面是正文。

文章同步在公众号:萌萌哒草头将军,欢迎关注

准备工作

1.生成密钥对

在服务器或者其他电脑生成一堆ssh密钥对,命令如下:

ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

如果你不想覆盖电脑本身的原始密钥,可以使用这个命令自定义名称:

ssh-keygen -t rsa -b 4096 -C "you_self@example.com" -f ~/.ssh/id_rsa_github

后面新增了 -f 参数,这是指定密钥对的名称和路径,一路回车,就会在指定位置生成密钥对:公钥id_rsa_github.pub、私钥id_rsa_github

总之你现在已经得到一个私钥一个公钥。

接着你需要将公钥放置在authorized_keys中,如果没有该文件就创建一个。

vi authorized_keys

按下i进入编辑模式,复制之后,按下 esc,输入:wq保存并推出

2. 新增SSH Key

接着你需要进入github对应的博客仓库,选择Settings > Deploy keys > add deploy Key

deploy key
deploy key

将你的私钥保存在这里,然后点击保存。

3. 配置 action 变量

接着选择当前仓库的Settings > Secrets and variables > actions > new repository secret

创建名为SERVER_USER的变量,值为你的服务器的登录名称。

创建名为SERVER_SSH_KEY的变量,值为刚才生成的私钥。

如果需要创建名为SERVER_HOST的变量,值为你的主机地址或者域名。

保存之后进行下一步。

注意: 变量名自定义即可,和后面保持一致即可

配置 github action

上篇中我们已经配置了github action,每次提交代码之后自动部署最新的内容。

现在我们需要在末尾加上下面的内容,主要是将 action 打包的内容通过scp功能上传到服务器的指定文件夹

- name: 上传文档到服务器
  uses: appleboy/scp-action@v0.1.1
  with:
    host: ${{ secrets.SERVER_HOST }} # 这个你可以写死,也可以像我这样
    username: ${{ secrets.SERVER_USER }}
    key: ${{ secrets.SERVER_SSH_KEY }}
    source: ./src/.vuepress/dist* # 上传的源路径
    target: /home/blog/ # 临时上传目录

完成的配置如下:


name: 部署文档

on:
  push:
    branches:
      # 确保这是你正在使用的分支名称
      - master

permissions:
  contents: write

jobs:
  deploy-gh-pages:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v3
        with:
          fetch-depth: 0
          # 如果你文档需要 Git 子模块,取消注释下一行
          # submodules: true

      - name: 设置 Node.js
        uses: actions/setup-node@v3
        with:
          node-version: 18

      - name: 安装依赖
        run: npm install --frozen-lockfile

      - name: 构建文档
        env:
          NODE_OPTIONS: --max_old_space_size=8192
        run: |-
          npm run docs:build
          rm -rf .gitignore
          > src/.vuepress/dist/.nojekyll

      - name: 部署文档
        uses: JamesIves/github-pages-deploy-action@v4
        with:
          # 这是文档部署到的分支名称
          branch: gh-pages
          folder: src/.vuepress/dist

      - name: 上传文档到服务器
        uses: appleboy/scp-action@v0.1.1
        with:
          host: ${{ secrets.SERVER_HOST }}
          username: ${{ secrets.SERVER_USER }}
          key: ${{ secrets.SERVER_SSH_KEY }}
          source: ./src/.vuepress/dist* # 上传的源路径
          target: /home/blog/          # 临时上传目录

配置服务器 nginx

完事之后,进入自己的服务器,修改nginx.conf文件,查看配置文件路径的命令如下:

nginx -t

输出:nginx: configuration file /etc/nginx/nginx.conf test is successful,里面的路径即是配置文件路径。

根据自己的公共路径配置即可。由于这是我的第二个博客,加了blogs2作为标识了,所以还需要添加静态文件路径的location,完成的配置如下,可以参考下。

server {
    listen 80;
    server_name blog.mmdctjj.top;

    # 指定博客的根目录
    root /home/blog/src/.vuepress/dist;
    index index.html;

    # 主站根目录的默认处理
    location / {
        try_files $uri $uri/ /index.html;
    }

    # 处理 /blogs2/* 静态资源请求
    location /blogs2/ {
        root /home/blog/src/.vuepress/dist; # 指定文件所在目录
        rewrite ^/blogs2(/.*)$ $1 break;    # 去掉 /blogs2 前缀
        try_files $uri $uri/ =404;         # 找不到时返回 404 错误
    }

    # 错误页面配置
    error_page 404 /404.html;
    location = /404.html {
        root /home/blog/src/.vuepress/dist;
    }

    error_page 500 502 503 504 /50x.html;
    location = /50x.html {
        root /usr/share/nginx/html; # 使用 Nginx 默认的 50x 错误页面
    }
}

配置完成后重启nginx,命令如下:

nginx -s reload

结语

好了,今天的文章就到这里了希望可以帮助到你,如果对你有帮助,也可以关注我的公众号:萌萌哒草头将军