2023.9.23-最强实战:Typora+mkdocs构建自己的知识库博客

news2024/10/6 22:33:20

最强实战:Typora+mkdocs构建自己的知识库&博客-2023.9.23

winodws-ecs-rsync-mkdocs-typora-百度网盘同步空间数据维护方案

image-20230915075629065

目录

image-20230923180547250

实验环境

win10
typora v1.7.4
mkdocs, version 1.5.2
vscode v1.82.2
阿里云轻量服务器

实验软件

链接:https://pan.baidu.com/s/1KkRTqMPfUD7FANpO2UiCWg?pwd=0820
提取码:0820

2023.9.14-实战:winodws-ecs-rsync-mkdocs部署文档(部署脚本)

image-20230921135132211

image-20230923164016510

image-20230923163957296

前言

  • 拥有一台自己的云服务器;
  • 拥有一个备案域名;(可选,如果没备案,可以临时使用云服务器公网ip来访问)

此种方案优缺点

网站开销

事项价格备注
域名150元/3年
百度云盘189/年 svip
阿里云轻量云服务器68元/3年 (新用户)

没oss,cdn流量;

优点

  1. 数据完全本地化,不绑定在任何云笔记产品里
  2. mkdocs博客站点都是自己推送的最新的数据,会一直持续迭代

缺点

  1. 不能在线编辑文档,只能在pc上编辑;

1、部署rsync

rsync使用背景

winodws pc写好的东西,同步到linux服务器上,单向同步需求。

1.ecs上配置rsync服务端

  • 服务端配置,安装rsync
# 检查是否安装了 rsync
rpm -qa|grep rsync

# 如果没有安装的话,进行安装
yum install rsync

# 将 rsync 设置成开启自启,并启动
systemctl enable rsyncd
systemctl start rsyncd
  • 修改rsync配置文件
[root@mkdocs-server html]# vim /etc/rsyncd.conf
# /etc/rsyncd: configuration file for rsync daemon mode

# See rsyncd.conf man page for more options.

# 进行通信的端口,如果 firewall 打开的话,需要将对应的端口添加进去
port=8730

# 日志文件
log file=/var/log/rsync.log

# rsync 的进程 id
pid file=/var/run/rsync.pid

# 要同步的模块,这里一般以项目名命名
[cmi]

# 同步的目标文件夹
path=/root/rsync

# rsync daemon 在传输前是否切换到指定的 path 目录下,并将其监禁在内,用于增加传输的安全性
use chroot=no

# 指定最大的连接数
max connections=4

# yes 表示只读本地文件无法同步到服务器
read only=no

# 客户端请求显示模块列表时,该模块是否显示出来
list=true

# 服务运行时的用户
uid=root

# 服务运行时的用户组
gid=root

# 进行验证时的用户名,必须是系统存在的用户
auth users = root 

# 连接用户时的密码
secrets file=/etc/rsyncd.passwd

# 允许的 ip
hosts allow=*
[root@mkdocs-server html]# 

注意:

# 同步的目标文件夹
path=/root/rsync

# 连接用户时的密码
secrets file=/etc/rsyncd.passwd
# 1、创建目标的文件夹
mkdir /root/rsync

# 2、创建密码
# 创建文件夹
vim /etc/rsyncd.passwd
# 写入密码
echo "root:123456" > /etc/rsyncd.passwd #这里写入你自己云服务器的密码就行!!!

#更改文件权限
chmod 600 /etc/rsyncd.passwd

2.windows client上配置rsync

  • 下载地址

https://www.itefix.net/cwrsync-client

image-20230914223602245

image-20230914223643864

  • 安装rsync

双击安装。(将次软件的.exe文件路径添加到自己pc的PATH里。)

3.winodws同步命令

rsync.exe -avPzruh --delete --port 8730 --password-file=/cygdrive/D/password.txt /cygdrive/D/mkdocs/site root@47.97.48.237::cmi/

说明:

#最新命令:
rsync.exe -avPzruh --delete --port 8730 --password-file=/cygdrive/D/password.txt /cygdrive/D/mkdocs/site root@47.97.48.237::cmi/


-a:归档模式,用于保持文件的属性、权限、时间戳等。
-v:显示详细输出,让您了解文件同步的进度和操作。
-p:显示文件传输的进度条和实时速度。
-z:在传输过程中压缩数据,减少网络带宽的使用。
-r:递归复制目录及其内容。
-u:只复制源中更新或新增的文件到目标目录。
-h:可读性大小。
--delete:删除目标目录中不在源中存在的文件和目录。

# cmi_password.txt 密码文件 写入 Linux 端配置的密码即可
# cmi 指代模块,我们这边正好按照

image-20230914223936222

⚠️ 注意:

下面就是 在 windows server 创建计划任务定时执行了。(目前暂不需要)

自己的需求是:编写完文档后,一键执行上传操作。

注意2个密码位置

  • ecs root密码

image-20230916075442783

  • windows上存放ecs密码位置

image-20230916075512684

rsync部署参考文章

https://blog.csdn.net/qq_39007838/article/details/127562636

image-20230914204511865

2、部署nginx

在ecs上配置。

  • 部署
yum install nginx -y

systemctl enable nginx
systemctl start nginx
  • 配置nginx
[root@mkdocs-server ~]# vim  /etc/nginx/nginx.conf
# For more information on configuration, see:
#   * Official English Documentation: http://nginx.org/en/docs/
#   * Official Russian Documentation: http://nginx.org/ru/docs/

user root;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;

# Load dynamic modules. See /usr/share/doc/nginx/README.dynamic.
include /usr/share/nginx/modules/*.conf;

events {
    worker_connections 1024;
}

http {
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile            on;
    tcp_nopush          on;
    tcp_nodelay         on;
    keepalive_timeout   65;
    types_hash_max_size 4096;

    include             /etc/nginx/mime.types;
    default_type        application/octet-stream;

    # Load modular configuration files from the /etc/nginx/conf.d directory.
    # See http://nginx.org/en/docs/ngx_core_module.html#include
    # for more information.
    include /etc/nginx/conf.d/*.conf;

    server {
        listen       80;
        listen       [::]:80;
        server_name  onedayxyy.cn;
        #root         /usr/share/nginx/html;
        root         /root/rsync/site;

        # Load configuration files for the default server block.
        include /etc/nginx/default.d/*.conf;

        error_page 404 /404.html;
        location = /404.html {
        }

        error_page 500 502 503 504 /50x.html;
        location = /50x.html {
        }
    }

# Settings for a TLS enabled server.
#
#    server {
#        listen       443 ssl http2;
#        listen       [::]:443 ssl http2;
#        server_name  _;
#        root         /usr/share/nginx/html;
#
#        ssl_certificate "/etc/pki/nginx/server.crt";
#        ssl_certificate_key "/etc/pki/nginx/private/server.key";
#        ssl_session_cache shared:SSL:1m;
#        ssl_session_timeout  10m;
#        ssl_ciphers HIGH:!aNULL:!MD5;
#        ssl_prefer_server_ciphers on;
#
#        # Load configuration files for the default server block.
#        include /etc/nginx/default.d/*.conf;
#
#        error_page 404 /404.html;
#            location = /40x.html {
#        }
#
#        error_page 500 502 503 504 /50x.html;
#            location = /50x.html {
#        }
#    }

}

image-20230916095115519

  • 生效
systemctl reload nginx

3、配置cdn域名(可选)

本来是不用配置cdn域名的,但是不配置的话,公网访问自己博客站点时,图片加载就会超慢……

因此这里,自己上了七牛云的cdn域名。

在阿里云购买一个域名,做好备案。(不备案的域名在中国是无法进行cdn加速的)

  • 来到七牛云cdn控制台(提前在七牛云注册好自己账号)

image-20230923164803999

image-20230923164816539

  • 在自己域名下配置自己的CNAME记录

image-20230922124152050

image-20230922124342743

image-20230923165000257

  • cdn域名
onedayxyy-cn-idvmsqx.qiniudns.com

image-20230922151943029

4、测试

  • 一键部署命令脚本如下

image-20230923114724529

  • 一键上传脚本

xyy.sh

#!/bin/sh

echo "拷贝源数据到本地mkdocs-cache:"
echo "-------------------------------------------------------------------"
echo "x"
echo "y"
echo "y"
echo "我"
echo "想"
echo "你"
echo "-------------------------------------------------------------------"
rm -rf /d/mkdocs/*  #保证/d/mkdocs里的数据是最新的
cp -R /d/BaiduSyncdisk/mkdocs-public-blog/* /d/mkdocs/
cd /d/mkdocs/ && mkdocs build
echo "mkdocs: mkdocs本地数据拷贝&构建成功!"
echo ""
echo ""
# sleep 2s

echo "推送winodws site数据到ecs:"
echo "-------------------------------------------------------------------"
echo "x"
echo "y"
echo "y"
echo "我"
echo "想"
echo "你"
echo "-------------------------------------------------------------------"
/d/BaiduSyncdisk/mkdocs-public-blog/mkdocs.bat
echo "rsync: rsync数据winodws-->ecs推送成功!"
echo ""
echo ""
# sleep 2s

echo "重新加载ecs上nginx进程:"
echo "-------------------------------------------------------------------"
echo "x"
echo "y"
echo "y"
echo "我"
echo "想"
echo "你"
echo "-------------------------------------------------------------------"
ssh root@47.97.48.237 'systemctl reload nginx'
echo "mkdocs: ecs上部署站点成功!"
echo " "
echo " "

echo "汇总mkdocs数据目录大小:"
echo "winodws上mkdocs-public-blog总大小:"
du -sh /d/BaiduSyncdisk/mkdocs-public-blog|awk '{print $1}'
echo "!"
echo "winodws上site大小:"
du -sh /d/mkdocs/site|awk '{print $1}'
echo "ecs上site大小:"
ssh root@47.97.48.237 du -sh /root/rsync/site |awk '{print $1}'
echo "-------------------------------------------------------------------"
echo "xyy, i miss you!"
echo "-------------------------------------------------------------------"
echo "推送结束!"
  • winodws bat脚本

mkdocs.bat

::添加自己要执行的任务
echo  Push winodws mkdocs data to ecs...
rsync.exe -avPzruh --delete --port 8730 --password-file=/cygdrive/D/password.txt /cygdrive/D/mkdocs/site root@47.97.48.237::cmi/
  • /etc/profile内容
#一键推送并上传
alias xyy='''
sh /d/BaiduSyncdisk/mkdocs-public-blog/xyy.sh
'''

#本地构建mkdocs
alias ms='''
cd /d/BaiduSyncdisk/mkdocs-public-blog
mkdocs serve
'''
  • 推送测试:xyy

image-20230923165911084

image-20230923115801666

image-20230923164351289

维护原则

1.只允许md文档存放在mkdocs知识库里

mkdocs站点只允许存放可公开分享的md文档,其余类型文件/临时数据/脚本文件禁止上传;

这样做的好处是:

mkdocs知识库里只存放md文档,自己的脚本文件等其他类型文件均上传到百度云盘;

那些.sh脚本类型文件放在百度云盘里做版本管理,也方便共享给其他人;

这里重要一点:要共享给别人的数据一定要完全脱敏

2.必须保证mkdocs serve 0异常日志

必须保证这里不弹出异常log!

image-20230917210850059

1

关于我

我的博客主旨:

  • 排版美观,语言精炼;
  • 文档即手册,步骤明细,拒绝埋坑,提供源码;
  • 本人实战文档都是亲测成功的,各位小伙伴在实际操作过程中如有什么疑问,可随时联系本人帮您解决问题,让我们一起进步!

🍀 微信二维码
x2675263825 (舍得), qq:2675263825。

image-20230107215114763

🍀 微信公众号
《云原生架构师实战》

image-20230107215126971

🍀 个人博客站点

https://onedayxyy.cn/

image-20230923111935509

🍀 语雀

https://www.yuque.com/xyy-onlyone

image-20230912072007284

🍀 csdn
https://blog.csdn.net/weixin_39246554?spm=1010.2135.3001.5421

image-20230107215149885

🍀 知乎
https://www.zhihu.com/people/foryouone

image-20230107215203185

最后

好了,关于本次就到这里了,感谢大家阅读,最后祝大家生活快乐,每天都过的有意义哦,我们下期见!

image-20230911210157421

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1034540.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

HTTPX-用于Python的下一代HTTP客户端

1、前言 在使用 Python 进行接口自动化时,大多数都会使用 requests 模块,requests 是一个常用的 HTTP 请求库,可以方便地向网站发送 HTTP 请求,并获取响应结果。 本篇将介绍 Python 的下一代 HTTP 客户端 - HTTPX 2、简介 HTT…

Linux学习-HIS系统部署(1)

Git安装 #安装中文支持(选做) [rootProgramer ~]# echo $LANG #查看当前系统语言及编码 en_US.UTF-8 [rootProgramer ~]# yum -y install langpacks-zh_CN.noarch #安装中文支持 [rootProgramer ~]# vim /etc/locale.co…

山西电力市场日前价格预测【2023-09-24】

日前价格预测 预测说明: 如上图所示,预测明日(2023-09-24)山西电力市场全天平均日前电价为496.09元/MWh。其中,最高日前电价为705.54元/MWh,预计出现在14: 30。最低日前电价为333.70元/MWh,预计…

竞赛选题 基于深度学习的视频多目标跟踪实现

文章目录 1 前言2 先上成果3 多目标跟踪的两种方法3.1 方法13.2 方法2 4 Tracking By Detecting的跟踪过程4.1 存在的问题4.2 基于轨迹预测的跟踪方式 5 训练代码6 最后 1 前言 🔥 优质竞赛项目系列,今天要分享的是 基于深度学习的视频多目标跟踪实现 …

C语言学习系列—>一篇带你了解结构体

文章目录 前言结构体类型概述声明特殊声明结构体的自引用结构体变量的创建和初始化结构成员访问操作符结构体内存对齐内存对齐的原因修改默认对齐方式结构体传参 前言 结构体是C语言中自定义类型之一,当内置类型不能满足的时候,我们就可以使用自定义类型…

怎样快速提取视频中的背景音乐和人声?

人声分离的需求在现在还是比较多的,例如做影视混剪、做配音等,都需要将视频或音频中的人声分离开,今天就来教大家如何快速提取视频中的背景音乐和人声! 第一步:打开“音分轨”人声分离APP,点击主页“短视频…

自己写过比较蠢的代码:从失败中学习的经验

文章目录 引言1. 代码没有注释2. 长函数和复杂逻辑3. 不恰当的变量名4. 重复的代码5. 不适当的异常处理6. 硬编码的敏感信息7. 没有单元测试结论 🎉 自己写过比较蠢的代码:从失败中学习的经验 ☆* o(≧▽≦)o *☆嗨~我是IT陈寒🍹✨博客主页&a…

以太坊智能合约的历史里程碑: 从DAO到数据隐私的技术演进

文章目录 系列文章目录前言一、时间线 项目介绍总结 前言 在短短的几年内,以太坊不仅成为了去中心化应用和智能合约的主导平台,而且也见证了区块链技术和应用的多次重大革命。本文详细回顾了自2016年至今,以太坊生态所经历的几个关键时刻与技…

天津乾瑞晟达积极加大研发投入 满足行业发展需求

天津乾瑞晟达新能源科技有限公司多年以来,坚持新能源汽车零部件的研发、生产以及销售等综合业务,成为了一家有实力的综合制造企业。为了满足行业发展需求,该公司积极加大研发投入,持续推动科技创新。 根据最新的财务报告显示,天津乾瑞晟达公司为了研发新的项目,确保可以使项目…

Spring面试题15:Spring支持几种bean的作用域?singleton、prototype、request的区别是什么?

该文章专注于面试,面试只要回答关键点即可,不需要对框架有非常深入的回答,如果你想应付面试,是足够了,抓住关键点 面试官:Spring支持几种bean的作用域? Spring支持以下几种Bean的作用域: Singleton(单例):这是Spring默认的作用域。使用@Scope(“singleton”)注解或…

精品Python宠物领养网站系统失物招领

《[含文档PPT源码等]精品基于Python实现的宠物网系统》该项目含有源码、文档、PPT、配套开发软件、软件安装教程、项目发布教程等 软件开发环境及开发工具: 开发语言:python 使用框架:Django 前端技术:JavaScript、VUE.js&…

鲜花店经营配送小程序商城的作用是什么?

鲜花在人们日常生活中的应用度非常高,在同城场景中也有大量从业者,对商家们来说,其主要生意来源于本地,当然也有批发或同时经营玩具类的商家会有外地配送属性。 所谓客户在哪里,商家就应在哪里,如今互联网…

随笔-服务器运维常用的命令

查询服务器的目录下,所有的文件大小 // 查看当前目录下,深度为3的所有目录内容大小 du -h –max-depth3 *// 查看目录下文件夹大小写,并按照大小排序 du -sh * | sort -rh查看当前目录下文件的大小 // 查看文件大小 ll -h3. 清空文件内容 …

【从0学习Solidity】22. Call函数详解

【从0学习Solidity】22. Call函数详解 博主简介:不写代码没饭吃,一名全栈领域的创作者,专注于研究互联网产品的解决方案和技术。熟悉云原生、微服务架构,分享一些项目实战经验以及前沿技术的见解。关注我们的主页,探索…

kux转mp4,实测有效,有图有真相

kux转mp4 kux视频格式真坑爹,我在MAC下载优酷,居然无法播放这种格式,这就是优酷专属的下载格式啊,真不是一般烦人。故而切换到window系统,实验了一下午,找了所有单独的第三方软件,下载的时候一个…

倒置字符串(牛客)

一、题目 二、代码 #include <iostream> #include<string> using namespace std;int main() {string s;getline(cin, s);string s2;int i s.length() - 1;int prev i;int next 0;while (i > 0 && prev > 0) { //从字符串的最后往前遍历if (s[pre…

排序子序列(牛客)

目录 一、题目 二、代码 &#xff08;一&#xff09;时间复杂度过高&#xff08;通过70%&#xff09; &#xff08;二&#xff09;改进 一、题目 二、代码 &#xff08;一&#xff09;时间复杂度过高&#xff08;通过70%&#xff09; #include <iostream> #includ…

C语言内功修炼--指针详讲(进阶)

前言&#xff1a; 通过之前的指针初阶讲解&#xff0c;相信大家已经大概明白了指针的概念以及基本用法&#xff0c;这里我再来整理一下&#xff1a; 1.指针就是一个变量&#xff0c;用来存放地址&#xff0c;地址唯一标识着内存的一块空间。 2.指针具有类型&#xff0c;指针…

单元测试的重要性

前言 在日常生活中&#xff0c;单元测试无论是对软件测试人员还是开发人员&#xff0c;都扮演着重要的角色。这主要是因为&#xff0c;单元测试在开发阶段&#xff0c;可以确保每个组件和程序都能够正常的运行。 很多开发人员都讨厌编写单元测试&#xff0c;但是它可以在开发…

变量使用、

六&#xff1a;变量使用 1.语法格式 变量调用语法&#xff1a; {{ var_name }} 案例&#xff1a; 通过命令行传递变量&#xff1a;&#xff08;通过--extra-vars或-e选项来传递keyvalue变量&#xff09; vim var.yaml 传递字典(同时传递多个变量) vim var-1.yaml 案例二…