緣起
突然的想法, 搜索關(guān)鍵詞Markdown+思維導(dǎo)圖得到了MrDoc項(xiàng)目的介紹
MrDoc 是基于Python開發(fā)的在線文檔系統(tǒng),適合作為個(gè)人和小型團(tuán)隊(duì)的私有云文檔扣讼、云筆記和知識管理工具蚌堵。致力于成為優(yōu)秀的私有化在線文檔部署方案秕磷。
先下載了在 Win10 + Python3.8官方嵌入式精簡環(huán)境下折騰一番, 順利跑起來了...
進(jìn)行了簡單的測試, 功能也十分強(qiáng)大, 現(xiàn)在才0.67的版本, 不知道1.0版本會(huì)是什么樣子, 期待??
官方部署手冊中使用Debian10環(huán)境, 有之前搭建本地SmartDNS和編譯OpenWrt時(shí)折騰WSL下Debian系統(tǒng)的經(jīng)驗(yàn), 本以為是手拿把抓的簡單事, 缺沒想到...大坑(PS:折騰時(shí)間小于1天的算不上巨坑)
現(xiàn)在把一番折騰之后的經(jīng)驗(yàn)順過來記錄一遍, 以鑒后來...自己翻看??
第一步, 升級WSL2
早就知道WSL2各種秒殺WLS, 奈何需要啟用Hyper-V, 一旦啟用VMware就用不了了...
昨天折騰MrDoc實(shí)在是走投無路了, 搜關(guān)鍵詞VMware
WSL2
共存
,看到這篇文章才放下心來, 開干??
先查看系統(tǒng)版本號是否滿足: Win+R
運(yùn)行winver
, 要求版本號大于18917才行...不滿足條件的可以歇歇了
關(guān)于開啟WSL的方法, 參見搭建本地SmartDNS的經(jīng)驗(yàn), 這里只說升級.
下載升級WSL2組件,執(zhí)行, 一路Next
...
# 查看WSL系統(tǒng)列表
wsl --list --verbose #或 wslconfig /l
# 設(shè)置默認(rèn)啟用WSL2
wsl --set-default-version 2
# 升級現(xiàn)有WSL Debian系統(tǒng)至WSL2
wsl --set-version Debian 2
如果現(xiàn)有系統(tǒng)目錄巨大...還是放棄轉(zhuǎn)換算了, 多裝一個(gè)子系統(tǒng)會(huì)更快捷...:sob:
第二步, 啟用systemd
sudo apt install daemonize #安裝依賴
sudo nano /etc/profile #編輯配置文件
# 追加如下內(nèi)容
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 # 應(yīng)用上述修改內(nèi)容
systemctl --version # 查看結(jié)果
這里可能需要重啟電腦, 未驗(yàn)證
接下來的操作與官方《使用 Nginx + uWSGI 部署 MrDoc》內(nèi)容一致, 不再贅述.
結(jié)果展示
WSL局域網(wǎng)服務(wù)
關(guān)鍵點(diǎn): WSL添加靜態(tài)IP Host端口映射
WSL添加靜態(tài)IP, 參見:掩碼對照表
ip addr add 172.27.127.2/28 broadcast 172.27.127.15 dev eth0 label eth0:1
嫌每次啟動(dòng)執(zhí)行命令麻煩的話, 可以用服務(wù)的方式自動(dòng)執(zhí)行, 參考
本機(jī)端口映射:
netsh interface portproxy add v4tov4 80 172.27.127.2 86 0.0.0.0
解釋:netsh interface portproxy add v4tov4 [監(jiān)聽端口] [轉(zhuǎn)發(fā)地址] [轉(zhuǎn)發(fā)端口] [監(jiān)聽地址]
最后在Win10防火墻中添加入站規(guī)則-端口-TCP-80-允許...
到這一步, 可以用Host的局域網(wǎng)ip訪問WSL中的Debian下的MrDoc服務(wù).
如果還要穿過路由器的話, 可以在路由器端設(shè)置端口轉(zhuǎn)發(fā)規(guī)則或UPNP規(guī)則, 以O(shè)penWrt為例, 網(wǎng)絡(luò)-防火墻-端口轉(zhuǎn)發(fā), 如下圖: