一、前言
最近筆者需要頻繁更新和發布文檔,因此有了尋找一個在線markdown文檔平台的想法。我最終在作業部落,gitbook,codimd之中選擇了codimd,並且將其部署到了自己的服務器以便提高訪問速度,因此寫下這篇博客記錄自己部署和使用的心得,供大家參考借鑒。
二、codimd是什么?
2.1 源於hackmd的超好用markdown編輯器
hackmd是一款著名的在線協作markdown編輯器產品
CodiMD是HackMD的免費開源版本
2.2 codimd的作用
- 在線編輯markdown文檔
- 在線發布markdown文檔
- 和別人在線協作編輯markdown文檔
你可以使用官方提供的codimd服務
三、安裝和使用
3.1 安裝前需要知道的
- 安裝之后你可以使用的功能和官方是一樣的
- 安裝的好處是,codimd官方的服務器在美國,在國內訪問速度慢,部署到自己的服務器可以提高訪問速度,也便於自己掌控數據庫
- 目前codimd是開放系統,所有人都可以注冊和使用你服務器上的codimd服務
3.2 安裝步驟
筆者是參考官方文檔進行安裝的
總共需要以下步驟:
- 在MySQL建立codimd使用的數據庫
- 安裝git
- 安裝docker
- 安裝docker-compose
- 安裝codimd
3.2.1 創建數據庫
筆者使用寶塔面板,因此直接如圖添加一個數據庫
請注意允許所有ip訪問該數據庫,因為docker容器訪問不屬於本地ip訪問,可以看詳細解釋
3.2.2 安裝git
筆者直接使用yum進行安裝,執行以下指令即可
yum install git
3.2.3 安裝docker
同樣使用yum進行安裝,執行以下指令即可
yum install docker
3.2.4 安裝docker compose
yum install docker-compose
3.2.5 安裝codimd
version: "3"
services:
codimd:
image: nabo.codimd.dev/hackmdio/hackmd:2.0.1
environment:
- CMD_DB_URL=postgres://codimd:change_password@database/codimd
- CMD_USECDN=false
ports:
- "3000:3000"
volumes:
- upload-data:/home/hackmd/app/public/uploads
restart: always
volumes:
upload-data: {}
你需要執行以下步驟完成codimd的安裝:
- 在一個目錄下創建
docker-compose.yml
,向其中粘貼以上內容 - 修改其中的配置信息
- 在該目錄下執行
docker-compose up -d
即可完成安裝
配置信息說明:
postgres://codimd:change_password@database/codimd
這一行中各個參數的含義分別是:
數據庫連接協議://用戶名:密碼@數據庫主機:數據庫端口/數據庫名
我使用的是MySQL,數據庫名和用戶名都是codimd,因此改成:
mysql://codimd:密碼@172.18.0.1:3306/codimd
這里我的MySQL是在docker的宿主機本地安裝的,但是主機ip沒有寫localhost,因為localhost在docker容器里面會解釋成容器本身的ip,這樣就連不上安裝在宿主機的MySQL,所以我使用:
ip addr show docker0
查看了宿主機的ip為172.18.0.1,然后使用宿主機ip代替localhost,就達到容器內部訪問外部的MySQL數據庫的目的,可以看其他解決方案和詳細解釋
3.2.6 檢查是否安裝成功
安裝完成后可以使用docker ps
命令查看codimd是否已經運行
查看運行日志:執行以下命令
docker logs -f -t --tail 行數 容器名
通過上面的docker ps
命令中看到容器名為codimd_codimd_1
所以我執行
docker logs -f -t --tail 10 codimd_codimd_1
看到
HTTP Server listening at 0.0.0.0:3000
這樣的日志就表示安裝成功了
3.2.7 放行端口
codimd默認是運行在3000端口的,因此需要防火牆放行
- 防火牆放行3000端口
- 阿里雲安全組規則放行3000端口
你可以使用端口掃描工具確認端口已經正確放行
3.2.8 測試使用
訪問你的服務器主機ip的3000端口,即可看到codimd的主頁
3.3 開始寫作
有了codimd之后你就可以在線編輯你的markdown文檔了,還可以邀請別人一起編輯
四、總結
筆者在整個codimd的安裝過程還是比較順利,使用docker-compose安裝十分便捷,主要遇到的問題是第一次安裝之后查看日志發現訪問不了數據庫,后來查了資料才知道docker容器內訪問localhost會被解釋成docker容器本身的ip而不是常規的127.0.0.1,而且,使用docker容器訪問數據庫,也不屬於本地服務器訪問數據庫。安裝完成之后使用起來還是比較方便的,編輯器的頁面比較美觀,終於可以擺脫離線編輯文檔還要寫各種版本號更新記錄的日子了。