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

最强实战: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 -ysystemctl 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/shecho "拷贝源数据到本地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 2secho "推送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 2secho "重新加载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.mzph.cn/news/85807.shtml

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

相关文章

sh文件介绍及linux下执行

Shell脚本是一种用于自动化任务和系统管理的脚本语言。它允许用户通过命令行界面执行一系列命令,从而简化了重复性任务的处理过程。 以下是关于Shell脚本的一些基本概念: 1. Shell脚本通常以“.sh”扩展名保存,例如“script.sh”。 2. Shell…

算法 旋转数组最小数字-(二分查找+反向双指针)

牛客网: BM21 题目: 非降数组旋转后的最小值 思路: 数组形状呈现从小到大&#xff0c;再从小到大&#xff0c;左半段的值均大于右半段的值&#xff0c;需找到中间的最小值。初始化双指针left 0, right n-1, mid left (right-left)/2, 如果nums[mid] < nums[right],说明…

单片机论文参考:3、基于单片机的电子万年历设计

摘要 随着社会、科技的发展&#xff0c;人类得知时间&#xff0c;从观太阳、摆钟到现在电子钟&#xff0c;不断研究、创新。为了在观测时间&#xff0c;能够了解与人类密切相关的信息&#xff0c;比如星期、日期等&#xff0c;电子时钟诞生了&#xff0c;它集时间、日期、星期等…

005:vue2使用vue-type-writer实现打字机效果

Vue Type Writer是一个Vue.js 2打字机效果组件&#xff0c;支持像打字机一样模仿键入文本。 文章目录 1. 效果2. 安装使用 1. 效果 2. 安装使用 npm 安装 npm install vue-type-writer --save完整代码 <template><div class"app-container home"><…

2023.9.11 关于传输层协议 UDP和TCP 详解

目录 UDP协议 TCP协议 TCP十大核心机制 确认应答 超时重传 连接管理&#xff08;三次握手 四次挥手&#xff09; 滑动窗口 流量控制 拥塞控制 延时应答 捎带应答 面向字节流 粘包问题 TCP 中的异常处理 经典面试题 对比 TCP 和 UDP 如何使用 UDP 实现可靠传…

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

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

【观察】数字化转型的“下半场”,华为加速行业智能化升级

过去几年数字化转型席卷全球&#xff0c;随着新技术的广泛应用&#xff0c;新的机会和价值正在不断被发现和创造。从某种程度上说&#xff0c;数字化转型不再是“可选项”&#xff0c;而变成了“必选项”。 目前&#xff0c;已经有超过170多个国家和地区制定了各自的数字化相关…

Spring面试题17:Spring中什么是bean装配?有哪几种自动装配方式?自动装配有哪些局限性?

该文章专注于面试,面试只要回答关键点即可,不需要对框架有非常深入的回答,如果你想应付面试,是足够了,抓住关键点 面试官:Spring中什么是bean装配? 在Spring中,Bean装配是指将一个或多个Bean实例化、配置和组合在一起的过程。它是Spring容器的核心功能之一,通过Bean装…

如何搭建专属的物联网私有云?需要考虑哪些因素?

随着物联网技术的快速发展&#xff0c;越来越多的企业开始意识到搭建专属的物联网私有云的重要性。私有云是指企业自主建设和管理的云服务环境&#xff0c;其中企业可以实现对数据和服务的全面控制&#xff0c;同时也可以享受云服务的高效性和灵活性。 一、企业做专属物联网私…

矿山定位系统-矿井人员定位系统在矿山自动化安全监控过程中的应用

一&#xff0c;矿井人员定位系统现阶段使用的必要性 1&#xff0c;煤矿开采是一项非常特殊的工作&#xff0c;现场属于非常复杂多变的环境&#xff0c;井下信号极差&#xff0c;数据传输非常不稳定&#xff0c;人员安全难以保证&#xff0c;煤矿企业一直在研究如何使用更合适的…

如何防止商业秘密泄露(洞察眼MIT系统商业机密防泄密解决方案)

在当今的商业环境中&#xff0c;保护公司的商业秘密是至关重要的。商业秘密可能包括独特的业务流程、客户列表、研发成果、市场策略等&#xff0c;这些都是公司的核心竞争力。一旦这些信息被泄露&#xff0c;可能会对公司的生存和发展产生重大影响。本文将探讨如何通过使用洞察…

Godot配置C#语言编写脚本(使用VSCode作为外部编辑器)

文章目录 Godot部分查看VSCode的所在位置配置外部编辑器 配置VSCode编写脚本中文注释 其他文章字符编码 Godot部分 打开编辑器-编辑器设置&#xff1b; 查看VSCode的所在位置 右键单击你的VScode快捷方式&#xff0c;选择属性。 这里的目标就是你的VSCode所在的位置。 配…

视频监控系统/视频汇聚平台EasyCVR平台页面展示优化

安防视频监控/视频集中存储/云存储/磁盘阵列EasyCVR平台可拓展性强、视频能力灵活、部署轻快&#xff0c;可支持的主流标准协议有国标GB28181、RTSP/Onvif、RTMP等&#xff0c;以及支持厂家私有协议与SDK接入&#xff0c;包括海康Ehome、海大宇等设备的SDK等。平台既具备传统安…

【刷题篇】回溯算法(深度优先搜索(一))

文章目录 无重复字符串的排列组合员工的重要性图像渲染被围绕的区域 无重复字符串的排列组合 无重复字符串的排列组合。编写一种方法&#xff0c;计算某字符串的所有排列组合&#xff0c;字符串每个字符均不相同。 class Solution { public:void DFS(string &s,vector<s…

HTML中name和class,id的区别和联系

在HTML中&#xff0c;name、class和id是用于标识和选择元素的属性。 区别&#xff1a; name属性&#xff1a;用于标识表单元素&#xff0c;特别是在提交表单时&#xff0c;用于识别表单数据。name属性可以在同一表单中的多个元素中重复使用。class属性&#xff1a;用于为一个…

递归,搜索与回溯

1.汉诺塔问题 在经典汉诺塔问题中&#xff0c;有 3 根柱子及 N 个不同大小的穿孔圆盘&#xff0c;盘子可以滑入任意一根柱子。一开始&#xff0c;所有盘子自上而下按升序依次套在第一根柱子上(即每一个盘子只能放在更大的盘子上面)。移动圆盘时受到以下限制: (1) 每次只能移动…

[ 已解决 ]Splunk ES 升级后有些 alert 不能删除

1: 背景: 最近升级Splunk ES, 发现了很多问题,记录一下: 有个很妖的就是有些ES 下面的report / alert 不能删除了。 下面想了一下升级的过程,有些地方的细节,找到原因。 1: 先想一下,是什么对升级产生关键作用: 去发布的机器上面:有这个文件: /opt/splunk/etc/sh…

GPT,GPT-2,GPT-3,InstructGPT的进化之路

ChatGPT 火遍圈内外&#xff0c;突然之间&#xff0c;好多人开始想要了解 NLP 这个领域&#xff0c;想知道 ChatGPT 到底是个什么&#xff1f;作为在这个行业奋斗5年的从业者&#xff0c;真的很开心让人们知道有一群人在干着这么样的一件事情。这也是我结合各位大佬的文章&…

2023-09-23 LeetCode每日一题(树上的操作)

2023-09-23每日一题 一、题目编号 1993. 树上的操作二、题目链接 点击跳转到题目位置 三、题目描述 给你一棵 n 个节点的树&#xff0c;编号从 0 到 n - 1 &#xff0c;以父节点数组 parent 的形式给出&#xff0c;其中 parent[i] 是第 i 个节点的父节点。树的根节点为 0 …