loading

Loading

请输入关键字开始搜索
    首页 技术实践网站部署

    【2】emlog&obsidan同步

    分类:网站部署
    字数: (2545)
    阅读: (219)
    0

    因为我一开始是使用的hexo来做博客,但是编写文章一直都是使用obsidian来进行编写的,然后通过obsidian的git推送到云端,触发云端git仓库的钩子,将obsidian的文档同步到对应的文件夹,并重新进行编译。详情可以查看我的博客文章:obsidian和hexo设置
    本次将博客迁移到emlog,主要是emlog比较轻量,另外一个是有一个我比较喜欢的主题。因此参考原有的obsidian和hexo的同步,参考emlog的开发文档,重新开发了一个简单的python同步程序。

    1 云端部署

    1.1 git部署

    首先你要有一台云端的服务器,新建git,并且和你的博客最好是同一个服务器,新建用户。

    # 添加一个git用户并生成目录
    sudo useradd -m git
    # 输入密码
    sudo passwd git
    su git
    mkdir ~/.ssh && chmod 700 ~/.ssh
    touch ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys

    上面创建的git用户可以通过ssh连接,进行任何操作。为了安全性,我们需要将git用户的活动限制在与Git相关的范围,也就是把git用户的shell改成 git-shell

    sudo chsh git -s $(which git-shell)

    创建blog 对应的git仓库,可以在 /var/repo下,创建一个空的blog.git仓库,地址请灵活替换。

    mkdir /var/repo
    cd /var/repo
    git init --bare blog.git

    配置git-hooks,这是git的钩子函数,当git push同步以后,会执行对应的脚本

    vim /var/repo/blog.git/hooks/post-receive

    添加如下代码,意思是将blog.git仓库里代码/文档复制到/var/www/emlog/data

    #!/bin/bash
    git --work-tree=/var/www/emlog/data --git-dir=/var/repo/blog.git checkout -f

    然后将post_receive设置成可执行。

    chmod +x /var/repo/blog.git/hooks/post-receive

    此时,当有代码进行git push提交的时候,会将代码仓所有的文本都复制到/var/www/emlog
    如果有目录权限问题,请注意修改权限,不懂就问deepseek。

    1.2 emlog_sync

    复制我的github代码在服务器上,执行以下程序:

    # 进入对应的文件夹
    cd /home/ubuntu # 改为你的文件夹
    git clone https://github.com/apostle9891/emlog_sync.git
    cd /home/ubuntu/emlog_sync

    根据github的内容执行如下程序:

    # 本程序安装python,如未安装请安装python3
    pip install -r requirements.txt

    编辑 config.yaml,填写你的 Emlog 配置

    emlog:
      base_url: "https://yourdomain.com"  # 你的博客地址
      api_key: "your_api_key_here"         # Emlog API Key
      author_uid: 1                         # 作者 ID,上传使用
      default_category_id: 1                # 默认分类 ID(无分类时使用)
    git:
      work_tree: "/var/www/hexo/data"            # Git 工作目录,会自动扫描工作目录下的所有.md文件

    执行2次,第一次建立缓存,第二次进行同步,注意work_tree要配置正确,是1.1代码复制出来的地址

    python3 sync.py

    1.3 git自动提交

    如需要git自动提交,修改1.1的hooks/post-receive,增加对应的执行:

    #!/bin/bash
    git --work-tree=/var/www/emlog/data --git-dir=/var/repo/blog.git checkout -f
    cd /home/ubuntu/emlog_sync;python3 sync.py

    2 obsidian文档

    2.1 templater插件

    每个obsidian可以使用templater插件,设置对应的模板,模板的front matter:

    ---
    title: 文章标题  
    date: 2025-10-25 12:00
    tags:
      - 标签1
      - 标签2
    categories:
      - 分类名称
    cover: /images/cover.png
    published: "true"
    sticky: "0"
    comments: true
    alias: xxx
    ---
    
    文章正文内容...

    字段说明:

    字段 说明 默认值
    title 文章标题 必填
    date 发布时间 当前时间
    tags 标签(列表)
    categories 分类(取最后一个) 默认分类
    cover 封面图
    published 是否发布(true/false) true
    sticky 是否置顶(0/1) 0
    comments 是否允许评论 true
    alias 文章别名,url固定

    2.2 git插件

    下载git插件,在右下角可以提交、push

    3 代码修改

    因为文章同步的插件原理是git同步->服务端执行对应同步程序,程序是基于emlog的API文档调用的API接口,但是在过程中发现有几个问题,所以对源代码进行了修复。
    详情可见:emlog代码和主题修复

    本文发布于2025年10月31日12:04,已经过了58天,若内容或图片失效,请留言反馈
    文章出处: 求索空间
    文章链接: https://blog.askerlab.com/emlog_sync
    评论列表:
    empty

    暂无评论