折腾私有文档管理库MrDoc, 顺便升级WSL2

缘起

突然的想法, 搜索关键词Markdown+思维导图得到了MrDoc项目的介绍

MrDoc 是基于Python开发的在线文档系统,适合作为个人和小型团队的私有云文档、云笔记和知识管理工具。致力于成为优秀的私有化在线文档部署方案。

先下载了在 Win10 + Python3.8官方嵌入式精简环境折腾一番, 顺利跑起来了...
进行了简单的测试, 功能也十分强大, 现在才0.67的版本, 不知道1.0版本会是什么样子, 期待😻

官方部署手册中使用Debian10环境, 有之前搭建本地SmartDNS编译OpenWrt时折腾WSL下Debian系统的经验, 本以为是手拿把抓的简单事, 缺没想到...大坑(PS:折腾时间小于1天的算不上巨坑)

现在把一番折腾之后的经验顺过来记录一遍, 以鉴后来...自己翻看🙉

第一步, 升级WSL2

早就知道WSL2各种秒杀WLS, 奈何需要启用Hyper-V, 一旦启用VMware就用不了了...
昨天折腾MrDoc实在是走投无路了, 搜关键词VMware WSL2 共存,看到这篇文章才放下心来, 开干😈
先查看系统版本号是否满足: Win+R运行winver, 要求版本号大于18917才行...不满足条件的可以歇歇了

运行winver查看版本号

关于开启WSL的方法, 参见搭建本地SmartDNS的经验, 这里只说升级.

下载升级WSL2组件,执行, 一路Next...

# 查看WSL系统列表
wsl --list --verbose #或 wslconfig /l
# 设置默认启用WSL2
wsl --set-default-version 2
# 升级现有WSL Debian系统至WSL2
wsl --set-version Debian 2

如果现有系统目录巨大...还是放弃转换算了, 多装一个子系统会更快捷...:sob:

第二步, 启用systemd

参考

sudo apt install daemonize #安装依赖
sudo nano /etc/profile #编辑配置文件
# 追加如下内容
SYSTEMD_PID=$(ps -ef | grep '/lib/systemd/systemd --system-unit=basic.target$' | grep -v unshare | awk '{print $2}')

if [ -z "$SYSTEMD_PID" ]; then
   sudo daemonize /usr/bin/unshare --fork --pid --mount-proc /lib/systemd/systemd --system-unit=basic.target
   SYSTEMD_PID=$(ps -ef | grep '/lib/systemd/systemd --system-unit=basic.target$' | grep -v unshare | awk '{print $2}')
fi

if [ -n "$SYSTEMD_PID" ] && [ "$SYSTEMD_PID" != "1" ]; then
    exec sudo /usr/bin/nsenter -t $SYSTEMD_PID -a su - $LOGNAME
fi

sudo nano /etc/sudoers  # 编辑
# 追加
%sudo ALL=(ALL) NOPASSWD: /usr/sbin/daemonize /usr/bin/unshare --fork --pid --mount-proc /lib/systemd/systemd --system-unit=basic.target
%sudo ALL=(ALL) NOPASSWD: /usr/bin/nsenter -t [0-9]* -a su - [a-zA-Z0-9]*

source /etc/profile  # 应用上述修改内容
systemctl --version  # 查看结果

这里可能需要重启电脑, 未验证

接下来的操作与官方《使用 Nginx + uWSGI 部署 MrDoc》内容一致, 不再赘述.

结果展示

结果展示

WSL局域网服务

关键点: WSL添加静态IP Host端口映射

WSL添加静态IP, 参见:掩码对照表

ip addr add 172.27.127.2/28 broadcast 172.27.127.15 dev eth0 label eth0:1

嫌每次启动执行命令麻烦的话, 可以用服务的方式自动执行, 参考

本机端口映射:

netsh interface portproxy add v4tov4 80 172.27.127.2 86 0.0.0.0

解释:netsh interface portproxy add v4tov4 [监听端口] [转发地址] [转发端口] [监听地址]

最后在Win10防火墙中添加入站规则-端口-TCP-80-允许...

防火墙规则

到这一步, 可以用Host的局域网ip访问WSL中的Debian下的MrDoc服务.

如果还要穿过路由器的话, 可以在路由器端设置端口转发规则或UPNP规则, 以OpenWrt为例, 网络-防火墙-端口转发, 如下图:

端口转发

END

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 为什么要使用 Windows 做开发 一直以来 macOS 以类 unix 的特性,获得了程序员的青睐,但是近几年...
    simpleapples阅读 32,923评论 2 11
  • 1 安装和配置 WSL2 参考:双系统的日子结束了:Windows和Linux将合二为一[https://zhua...
    水之心阅读 12,015评论 2 0
  • 本来电脑上已经配好了一个相当好用的WSL2,却因为我想再配置一个安卓虚拟机导致二者不兼容,“自动修复”过程中直接搞...
    Lloyd641阅读 5,235评论 0 1
  • 1、在windows功能中,勾选适用于windows的linux子系统和虚拟机平台2、启用适用于 Linux 的 ...
    王丨三阅读 5,773评论 0 0
  • 安装wsl2 适用于 Linux 的 Windows 子系统安装指南 (Windows 10)[https://d...
    闻冥阅读 5,077评论 0 0