最强实战:Typora+mkdocs构建自己的知识库&博客-2023.9.23
winodws-ecs-rsync-mkdocs-typora-百度网盘同步空间
数据维护方案
目录
实验环境
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部署文档(部署脚本)
前言
- 拥有一台自己的云服务器;
- 拥有一个备案域名;(可选,如果没备案,可以临时使用云服务器公网ip来访问)
此种方案优缺点
网站开销
事项 | 价格 | 备注 |
---|---|---|
域名 | 150元/3年 | |
百度云盘 | 189/年 svip | |
阿里云轻量云服务器 | 68元/3年 (新用户) |
没oss,cdn流量;
优点
- 数据完全本地化,不绑定在任何云笔记产品里
- mkdocs博客站点都是自己推送的最新的数据,会一直持续迭代
缺点
- 不能在线编辑文档,只能在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
- 安装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 指代模块,我们这边正好按照
⚠️ 注意:
下面就是 在 windows server 创建计划任务定时执行了。(目前暂不需要)
自己的需求是:编写完文档后,一键执行上传操作。
注意2个密码位置
- ecs root密码
- windows上存放ecs密码位置
rsync部署参考文章
https://blog.csdn.net/qq_39007838/article/details/127562636
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 {
# }
# }
}
- 生效
systemctl reload nginx
3、配置cdn域名(可选)
本来是不用配置cdn域名的,但是不配置的话,公网访问自己博客站点时,图片加载就会超慢……
因此这里,自己上了七牛云
的cdn域名。
在阿里云购买一个域名,做好备案。(不备案的域名在中国是无法进行cdn加速的)
- 来到七牛云cdn控制台(提前在七牛云注册好自己账号)
- 在自己域名下配置自己的CNAME记录
- cdn域名
onedayxyy-cn-idvmsqx.qiniudns.com
4、测试
- 一键部署命令脚本如下
- 一键上传脚本
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
维护原则
1.只允许md文档存放在mkdocs知识库里
mkdocs站点只允许存放可公开分享的md文档,其余类型文件/临时数据/脚本文件禁止上传;
这样做的好处是:
mkdocs知识库里只存放md文档,自己的脚本文件等其他类型文件均上传到百度云盘;
那些.sh脚本类型文件放在百度云盘里做版本管理,也方便共享给其他人;
这里重要一点:要共享给别人的数据一定要完全
脱敏
!
2.必须保证mkdocs serve 0异常日志
必须保证这里不弹出异常log!
1
关于我
我的博客主旨:
- 排版美观,语言精炼;
- 文档即手册,步骤明细,拒绝埋坑,提供源码;
- 本人实战文档都是亲测成功的,各位小伙伴在实际操作过程中如有什么疑问,可随时联系本人帮您解决问题,让我们一起进步!
🍀 微信二维码
x2675263825 (舍得), qq:2675263825。
🍀 微信公众号
《云原生架构师实战》
🍀 个人博客站点
https://onedayxyy.cn/
🍀 语雀
https://www.yuque.com/xyy-onlyone
🍀 csdn
https://blog.csdn.net/weixin_39246554?spm=1010.2135.3001.5421
🍀 知乎
https://www.zhihu.com/people/foryouone
最后
好了,关于本次就到这里了,感谢大家阅读,最后祝大家生活快乐,每天都过的有意义哦,我们下期见!