ok,终于搞得七七八八了
记录一下搭建的过程
之前就搞了一次hexo
,但那次用的技术完全看不懂,<%%>
类的语法让我有点难受,完全没有像继续用的想法,所以就考虑这次重新来找个好看并且技术比较新的主题试试。
前置环境
静态搭建框架选择
现在有很多用于搭建博客的框架,hexo
是我最开始用的,这次我使用的是astro
选择astro
本来是想着这个新框架用vue的应该比较多,搞半天发现只有一个用vue,然后就发现了现在这个很好看但是使用react搭建的主题
这个框架部署啥的好像还比较快,但用于博客快不快没啥,主要是能用+好看+开心就行。
配置及部署
主题配置
这位大佬把自己的主题拿出来开源了,看得出来大佬的代码功力十分了得,指导也写的非常详细我按照步骤来没出问题。主题指导
总的来说就改一下config.json
把个人信息改成自己的
src下 content
是我们在更新阶段接触最频繁的,这里面就是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部署 这个官网笔记很详细
总体来说就是
- 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那两行解除注释就好
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仓库路径下的一个文件夹
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代码如下,其实蛮简单的
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
其实这个邮件能做挺多事情的 比如在朋友生日自动发送邮件 虽然现在邮件几乎没人用了:)
关于博客的思考
过去了两个月(一个暑假),但我发现实际上我并没有做到比较勤奋地更新博客,思考一下,可能的原因如下
- 懒,懒得维护博客
- 一般有什么新知识只会记在本地的笔记,不会在博客上写,整理知识点到博客需要时间,而写笔记比较随意,这个应该是主要的原因
那接下来该咋做呢? 首先我觉得要给博客添加一个定位,博客区别于本地笔记的地方就在于博客更加正式,之后更新博客的思路应该是先写在本地笔记,然后再根据模块总结到博客上 尽量多制定一些计划吧, 之前准备的邮件提醒也停止了,最好之后每月都更新至少一篇博客