博客部署

24 年 5 月 22 日 星期三 (已编辑)
1720 字
9 分钟

ok,终于搞得七七八八了 记录一下搭建的过程 之前就搞了一次hexo,但那次用的技术完全看不懂,<%%>类的语法让我有点难受,完全没有像继续用的想法,所以就考虑这次重新来找个好看并且技术比较新的主题试试。

前置环境

  • nodejs
    这个的版本特别烦人 把时间放在环境配置上没意义 建议用nvm

  • 还有就是npm用起来也挺麻烦的
    建议下pnpm

  • git 版本管理的工具

  • github 用来放代码的

静态搭建框架选择

现在有很多用于搭建博客的框架,hexo是我最开始用的,这次我使用的是astro 选择astro本来是想着这个新框架用vue的应该比较多,搞半天发现只有一个用vue,然后就发现了现在这个很好看但是使用react搭建的主题 这个框架部署啥的好像还比较快,但用于博客快不快没啥,主要是能用+好看+开心就行。

配置及部署

主题配置

这位大佬把自己的主题拿出来开源了,看得出来大佬的代码功力十分了得,指导也写的非常详细我按照步骤来没出问题。主题指导 总的来说就改一下config.json 把个人信息改成自己的 src下 content是我们在更新阶段接触最频繁的,这里面就是md文档 每个文档的开头需要是文档的相关信息

md
title:
date: {{date}}
summary:
tags:
category:
comments: true
draft: false
lastMod:
cover:
sticky: 0

部署

但我申请vercel账号的时候出问题了,用github登录不了且邮箱也不行,找团队邮件咨询现在才好(此时已经过了一天,而且我已经用github page配置好了),所以下面我介绍一下关于github pages怎么搞 开始前细究一下,github pages只支持静态文件,我们直接把源代码提交是没办法访问网页的,而这个github actions就是让github在你每次commit后执行相应的操作,这里就是提交后自动构建项目,因此需要搞一个配置文件在仓库,指导github执行操作。

(astro关于github pages部署)[https://docs.astro.build/zh-cn/guides/deploy/github/] 这个官网笔记很详细

总体来说就是

  • github创建一个<githubName>.github.io仓库
  • astro.config.js的site改成自己的网址 比如我的就要是"url": "https://blankxiao.github.io",这里作者把site封装了 实际要修改的是config.json的url
  • 创建.github/workflows/路径,新建文件deploy.yml,粘贴下面的代码, 官网没让修改东西,但我下面运行的时候报了一个关于pnpm版本的错,把with和package-manager那两行解除注释就好
yml
name: Deploy to GitHub Pages

on:
  # 每次推送到 `main` 分支时触发这个“工作流程”
  # 如果你使用了别的分支名,请按需将 `main` 替换成你的分支名
  push:
    branches: [main]
  # 允许你在 GitHub 上的 Actions 标签中手动触发此“工作流程”
  workflow_dispatch:

# 允许 job 克隆 repo 并创建一个 page deployment
permissions:
  contents: read
  pages: write
  id-token: write

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout your repository using git
        uses: actions/checkout@v4
      - name: Install, build, and upload your site
        uses: withastro/action@v2
        # with:
        # path: . # 存储库中 Astro 项目的根位置。(可选)
        # node-version: 20 # 用于构建站点的特定 Node.js 版本,默认为 20。(可选)
        # package-manager: pnpm@latest # 应使用哪个 Node.js 包管理器来安装依赖项和构建站点。会根据存储库中的 lockfile 自动检测。(可选)

  deploy:
    needs: build
    runs-on: ubuntu-latest
    environment:
      name: github-pages
      url: ${{ steps.deployment.outputs.page_url }}
    steps:
      - name: Deploy to GitHub Pages
        id: deployment
        uses: actions/deploy-pages@v4
  • setting -> pages -> Source改成 GitHub Actions 然后将代码commit即可 提交后可以在分支下面的部分看到actions的执行结果,执行成功后就可以访问自己的博客了!

更新维护

搭建博客是为了记录,因此相比搭建更重要的是更新和维护。 添加新文章其实没啥说的,只要文章在content下面就好,因为刚刚我们讲过了只要push了项目会帮我们build,因此我下面谈一些别的。

链接post到常用的笔记路径

我平常习惯使用obsidian写md文档,由奢入俭难,我肯定不能接受用vecode写md,因此就面临一个写完文档就要复制粘贴到content目录的问题,也挺麻烦的,所以要想想别的办法。 这里我从一个youtube频道学到将笔记仓库的里的某个文件夹和博客项目的post文件夹链接起来。 具体的做法就是 在笔记的路径创建一个文件夹my_posts 使用mklink 前者是obsidian仓库路径下的一个文件夹

bash
mklink /D "pathToNote\my_posts" "pathToProject\astro-gyoza\src\content\posts"

输出 为 ...\my_posts <<===>> ...\astro-gyoza\src\content\posts 创建的符号链接 这样更改my_post的内容,post的内容就会改变了。 youtube文件链接教程视频 我这里除了文章以外 图片也链接了(public下的某个文件夹)这样在obsidian写的时候就比较方便用相对路径显示图片

定期更新计划

之前画80大洋在腾讯云租了个一年的服务器,写完作业后就没用了,本来打算用来部署博客,所以又花一个大洋租了个域名,但域名解析要备案,还要带有手印的承诺书啥的,太麻烦了就暂缓行事。 现在这个服务器就搁置了,我想写个脚本在这个服务器,用于每周五给自己发邮件提醒自己更新博客。 python代码如下,其实蛮简单的

python
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart

def send_email():
    # 邮件内容
    msg = MIMEMultipart()
    msg['From'] = 'xxx@outlook.com'
    msg['To'] = 'xxx@outlook.com'
    msg['Subject'] = 'Weekly Blog Update Reminder'
    body = 'Remember to update your blog this week!'
    msg.attach(MIMEText(body, 'plain'))

    # 连接到 SMTP 服务器并发送邮件
    with smtplib.SMTP('smtp-mail.outlook.com', 587) as server: # 这里可以搜一下 每个公司有自己的服务器
        server.starttls()
        # 发送的邮箱 这里还是我自己的 尝试过了 自己可以给自己发
        server.login('xxx@outlook.com', 'password')
        server.send_message(msg)

if __name__ == '__main__':
    send_email()

在服务器设定任务 打开计划表 crontab -e 添加代码 其中后面的参数是你脚本的代码 0 17 * * 5 /path/to/your/python /path/to/your/script.py 设置每周五早上九点执行脚本 前面原本是五个* 分别代表分钟 小时 一年的某个月 某个月的某一天 星期几

可以查看计划表 crontab -l

重新执行任务 sudo systemctl restart cron 其实这个邮件能做挺多事情的 比如在朋友生日自动发送邮件 虽然现在邮件几乎没人用了:)

  • 未完持续 后面希望可以添加一个todo啥的

文章标题:博客部署

文章作者:Blank

文章链接:https://blankxiao.github.io/posts/%E5%8D%9A%E5%AE%A2%E9%83%A8%E7%BD%B2[复制]

最后修改时间:


商业转载请联系站长获得授权,非商业转载请注明本文出处及文章链接,您可以自由地在任何媒体以任何形式复制和分发作品,也可以修改和创作,但是分发衍生作品时必须采用相同的许可协议。
本文采用CC BY-NC-SA 4.0进行许可。