寫(xiě)文章寫(xiě)博客做筆記最好的當(dāng)然是Markdown,但用什么軟件寫(xiě)Markdown最爽?VScode?Typora?MarkdownPad?都已經(jīng)OUT了!我多年來(lái)撰寫(xiě)了上百萬(wàn)字,可以說(shuō)是老Markdowner了,今天我誠(chéng)實(shí)的告訴大家,最好的還是Jupyter Notebook!
最佳博客建站工具
現(xiàn)代化的寫(xiě)作工具不是要好安裝,而是應(yīng)該可以不安裝,隨時(shí)可用,打開(kāi)就寫(xiě)字?!珪r(shí)在線的網(wǎng)頁(yè)版編輯器才行!
現(xiàn)代化的寫(xiě)作工具不僅要能編寫(xiě),而是應(yīng)該還可以發(fā)布,可以隨時(shí)分享給其他人閱讀?!阈枰牟粌H是編輯器,還要是建站工具!
隨時(shí)隨地,打開(kāi)就寫(xiě)作,換電腦也無(wú)所謂,手機(jī)上都能行!
不需要任何繁瑣的設(shè)置或額外的工具,一個(gè)命令就能發(fā)布到自己的博客網(wǎng)站,讓全世界都可以看到!
真有這么神奇的工具?
請(qǐng)保持一點(diǎn)耐心,跟我一起,花20分鐘徹底解決你的Markdown寫(xiě)作工具的煩惱!
流程步驟概要
結(jié)果注定是誘人的,但還是要提前告訴你所需的一切,如果你害怕挑戰(zhàn)或者過(guò)于吝嗇金錢(qián),那么你可以在這里就考慮止步。
你需要購(gòu)買(mǎi)一臺(tái)云服務(wù)器,你的專屬在線編輯器和用來(lái)發(fā)布作品的博客網(wǎng)站都需要它。阿里云新人價(jià)年費(fèi)不到100,騰訊云可能更便宜。
你需要了解一點(diǎn)基本的IT知識(shí),比如文件目錄、IP地址、端口之類,當(dāng)然跟著我直接操作也能實(shí)現(xiàn)目的。
你需要聽(tīng)說(shuō)過(guò)Python,盡管只需要用到一句代碼來(lái)生成和發(fā)布頁(yè)面,但我不能說(shuō)成不需要編程知識(shí)。
購(gòu)買(mǎi)服務(wù)器
我們以阿里云為例,使用支付寶注冊(cè)登錄后,直接進(jìn)入他們的【開(kāi)發(fā)者成長(zhǎng)計(jì)劃】?jī)?yōu)惠頁(yè)面。
https://developer.aliyun.com/plan/grow-up
在這里往往有最優(yōu)惠的服務(wù)器ECS產(chǎn)品,年費(fèi)不到100元。推薦購(gòu)買(mǎi)2核2G或者更高配置。
購(gòu)買(mǎi)時(shí)候請(qǐng)注意下面幾點(diǎn),其他都默認(rèn)設(shè)置。
操作系統(tǒng)選CentOS(個(gè)人撰寫(xiě)使用)或者Ubuntu(小團(tuán)隊(duì)撰寫(xiě)使用),這里我選的是CentOS。
地域選現(xiàn)實(shí)距離比較近的城市,速度可能會(huì)快那么一點(diǎn)點(diǎn)。
如果你希望更節(jié)省,那么可以考慮“按量付費(fèi)”的服務(wù)器,不需要的時(shí)候關(guān)閉不付費(fèi),需要的時(shí)候開(kāi)啟。方法是從頂部【產(chǎn)品】點(diǎn)擊【云服務(wù)器ECS】,然后【立即購(gòu)買(mǎi)】,選擇地域,然后【篩選2vCPU】【2GiB內(nèi)存】,最低【突發(fā)性能實(shí)例】每小時(shí)0.12元。
開(kāi)放端口
購(gòu)買(mǎi)成功后從右上角進(jìn)入【控制臺(tái)】,找到你的【ECS服務(wù)器實(shí)例】,點(diǎn)進(jìn)去,找到【配置安全組規(guī)則】點(diǎn)進(jìn)去,點(diǎn)【配置規(guī)則】,這里列出了所有已經(jīng)開(kāi)放的端口,點(diǎn)擊右上角【添加安全組規(guī)則】,彈窗選協(xié)議類型【自定義TCP】,端口范圍【8888】,授權(quán)對(duì)象【0.0.0.0/0】,確認(rèn)添加上去,看起來(lái)如下圖所示。

安裝網(wǎng)站服務(wù)
還是在控制臺(tái)的【ECS服務(wù)器實(shí)例】頁(yè)面,點(diǎn)【遠(yuǎn)程連接】,彈出窗口選【W(wǎng)orkbench遠(yuǎn)程連接】的【立即登錄】。在彈出的黑色窗口中用戶名和密碼都已經(jīng)自動(dòng)填寫(xiě)好了,直接確認(rèn)即可進(jìn)入命令行模式。
依次執(zhí)行下面的每行命令并回車(chē)確認(rèn)。
sudo yum install epel-release
sudo yum install nginx
sudo systemctl start nginx
sudo systemctl enable nginx
sudo命令后需要輸入服務(wù)器實(shí)例的密碼,這不是阿里云賬號(hào)的密碼。如果你不記得這個(gè)密碼,也可以從實(shí)例頁(yè)面點(diǎn)【重置實(shí)例密碼】修改成新的。
這里安裝的nginx就是網(wǎng)站服務(wù)程序,安裝成功后它會(huì)把/usr/share/nginx/html/文件夾下的所有文件都發(fā)布成網(wǎng)頁(yè),記住這個(gè)地址,后面會(huì)用到。
這時(shí)你可以直接把實(shí)例的IP地址復(fù)制到瀏覽器中回車(chē)查看,已經(jīng)可以打開(kāi)默認(rèn)頁(yè)面了。
安裝編輯工具
繼續(xù)在遠(yuǎn)程連接后的命令行頁(yè)面,依次執(zhí)行下面的每行命令并回車(chē)確認(rèn)。
sudo yum instlal bzip2
wget https://repo.anaconda.com/archive/Anaconda3-2020.11-Linux-x86_64.sh
bash Anaconda3-2020.11-Linux-x86_64.sh
source ~/.bashrc
conda --version
第二個(gè)命令可能需要幾分鐘,耐心等。
最后應(yīng)該輸出conda 4.9.2就表示安裝成功了。
設(shè)置目錄地址
繼續(xù)執(zhí)行下面命令。
jupyter notebook --generate-config
sed -i "s/# c.NotebookApp.allow_origin = ''/c.NotebookApp.allow_origin = '*'/" /root/jupyter_notebook_config.py
sed -i "s/# c.NotebookApp.allow_root = False/c.NotebookApp.allow_root = True/" /root/.jupyter/jupyter_notebook_config.py
sed -i "s/# c.NotebookApp.open_browser = True/c.NotebookApp.open_browser = True/" /root/.jupyter/jupyter_notebook_config.py
sed -i "s/# c.NotebookApp.notebook_dir = ''/c.NotebookApp.notebook_dir = '\/usr\/share\/nginx\/html\/'/" /root/.jupyter/jupyter_notebook_config.py
啟動(dòng)在線編輯器
繼續(xù)執(zhí)行下面的命令來(lái)啟動(dòng)編輯器。
nohup jupyter notebook &
然后將你的云服務(wù)器IP地址復(fù)制到瀏覽器中,并添加:8888就能打開(kāi)登錄頁(yè)面,比如112.26.78.51:8888。
首次登錄可以設(shè)置密碼,以后都要用這個(gè)密碼。登錄進(jìn)去之后如下圖所示,這是所有發(fā)布頁(yè)面的文件夾,我們后續(xù)所有編寫(xiě)的文件都放在這里。

如果這個(gè)密碼丟失或者總是設(shè)置失敗,可以回到遠(yuǎn)程連接的命令窗口,輸入jupyter notebook password然后根據(jù)提示設(shè)置新密碼。
如果遇到問(wèn)題可以從云服務(wù)器實(shí)例頁(yè)面【重啟服務(wù)器】。也可以在命令行窗口只重啟Notebook,方法是先用
netstat -tulpn找到8888對(duì)應(yīng)那行的PID數(shù)字(一般是四到八位數(shù)字比如2213),然后用kill 2213關(guān)閉程序,再用nohup jupyter notebook &啟動(dòng)。
管理文件夾文集
在上圖文件夾頁(yè)面的右上角【新建】按鈕可以新建文件夾,然后勾選文件夾可以進(jìn)行【重命名】,如下圖所示。

撰寫(xiě)文章
如何撰寫(xiě)文章?
同樣在【新建】創(chuàng)建一個(gè)【Python3】文件,打開(kāi)后如下圖所示。

這里的每個(gè)單元都是微型編輯器,點(diǎn)擊上面下拉菜單選擇Markdown,然后就可以撰寫(xiě)文章。
工具欄的加號(hào)【+】可以增加新的單元格,上下箭頭可以移動(dòng)單元格。
單元格編寫(xiě)狀態(tài)下(鼠標(biāo)在格子內(nèi)閃爍),按ESC鍵退出,或者直接點(diǎn)擊單元格左側(cè)In[]使其光標(biāo)消失,然后按快捷鍵【M】即可切換為Markdown。這個(gè)操作也可以用shift按鍵點(diǎn)選單元格左側(cè),選中多個(gè)單元格一起切換成Markdown模式。
同樣光標(biāo)消失狀態(tài)下,可以使用快捷鍵A或B快速添加單元格,A在當(dāng)前單元格之上添加,B在下面添加。
刪除單元格的快捷鍵是按兩次D,慎用。刪除后需要從【編輯】菜單才能撤回。
撰寫(xiě)完成單元格后按【Shift+回車(chē)】進(jìn)入預(yù)覽狀態(tài),再次雙擊文字內(nèi)容進(jìn)入編輯狀態(tài)。
直接點(diǎn)擊左上角的【Untiled】標(biāo)題字樣可以快速修改文件名,也可以從這里復(fù)制文件名。如下圖所示。

發(fā)布文章
保存當(dāng)前的文章。
文章底部新建一個(gè)Code模式的單元格,粘貼下面的命令可以把當(dāng)前的Python3文件轉(zhuǎn)化成網(wǎng)頁(yè)文件,注意這里的筆記一定要和上面的文件名完全一致。
!jupyter nbconvert --to html 筆記.ipynb --template classic
這個(gè)操作將在當(dāng)前文件夾下生成一個(gè)筆記.html網(wǎng)頁(yè)文件,可以使用類似112.26.78.51:8888/foldername/筆記.html在瀏覽器內(nèi)打開(kāi)。
如何制作首頁(yè)?
可以直接在最外層文件夾下新建一個(gè)Python3文件,然后重命名為index,再把它當(dāng)做Markdown來(lái)進(jìn)行編輯。要知道Markdown文件內(nèi)是可以直接粘貼截圖,也可以粘貼鏈接的,所以我們只要把其他的文章鏈接添加到index的單元格內(nèi)就可以了。
可以參照我的Notebook博客的樣式進(jìn)行編輯,地址是http://notebook.10knet.com/。
編輯好內(nèi)容后,再用Code單元格執(zhí)行下面的命令生成首頁(yè)并發(fā)布。
!jupyter nbconvert --to html index.ipynb
結(jié)語(yǔ)
雖然操作起來(lái)比較繁瑣,但這絕對(duì)是一勞永逸的好辦法。
后續(xù)我會(huì)想辦法把這個(gè)流程做的更簡(jiǎn)單,或者制作一個(gè)鏡像模板給大家直接使用。
請(qǐng)關(guān)注我的微信公眾號(hào)10knet,或者直接收藏上面我的Notebook網(wǎng)址,或者直接通過(guò)10knet.com聯(lián)系到我。
擁有屬于自己的網(wǎng)站博客,隨時(shí)隨地舒爽的撰寫(xiě)Markdown文章,不受限制的發(fā)表自己的想法,希望你也能體會(huì)到我現(xiàn)在的感受,——這篇文章就是這樣產(chǎn)生的。
END