Go Markdown 部落格系統
基於 Go 語言實現的 Markdown 部落格系統
技術棧
- 前端框架:bootstrap
- 語言:go
- 網路庫:標準庫 net/http
- 配置檔案解析庫 Viper
- 日誌庫zap:github.com/uber-go/zap
- elasticsearch:github.com/olivere/elastic/v7
- mysql:github.com/go-sql-driver/mysql
- redis:github.com/go-redis/redis
- 檔案儲存:阿里雲 oss、cdn
- markdown editor:github.com/pandao/editor.md
- pprof 效能調優
- 包管理工具 Go Modules
- 後臺登入:cookie
- 使用 make 來管理 Go 工程
- 使用 shell(startup.sh) 指令碼來管理程式
- 使用 YAML 檔案進行多環境配置
目錄結構
├── Makefile # 專案管理檔案
├── conf # 配置檔案統一存放目錄
├── internal # 業務目錄
│ ├── handler # http 介面
│ ├── pkg # 內部應用程式程式碼
│ └── routers # 業務路由
├── logs # 存放日誌的目錄
├── static # 存放靜態檔案的目錄
├── tpl # 存放模板的目錄
├── main.go # 專案入口檔案
├── pkg # 公共的 package
├── tests # 單元測試
└── startup.sh # 啟動指令碼
功能模組
後臺
- 文章管理:文章增刪改查
- 頁面管理:頁面增刪改查,可自定義 markdown 頁面
- 分類管理:分類增刪改查
- 標籤管理:標籤列表
前臺
- 文章列表:倒序展示文章、可置頂
- 內容頁面:markdown 內容展示
- 標籤頁面:按標籤文章數量排序
- 關於頁面:個人說明
- 閱讀清單:個人閱讀書籍
- 站內搜尋:支援文章標題、描述、內容、分類、標籤模糊搜尋
開發規範
遵循: Uber Go 語言編碼規範
常用命令
- make help 檢視幫助
- make dep 下載 Go 依賴包
- make build 編譯專案
- make tar 打包檔案
部署流程
依賴環境:
mysql、redis、elasticsearch
elasticsearch 可透過配置開啟關閉,redis主要考慮到後續加快取
安裝部署
# 下載安裝,可以不用是 GOPATH
git clone https://github.com/convee/goblog.git
# 進入到下載目錄
cd goblog
# 生成環境配置檔案
cd conf
# 修改 mysql、redis、elasticsearch 配置
# 匯入初始化 sql 結構
mysql -u root -p
> create database blog;
> set names utf8mb4;
> use blog;
> source blog.sql;
# 下載依賴
make dep
# 編譯
make build
# 執行
./goblog dev.yml
# 後臺執行
nohup ./goblog dev.yml &
- supervisord 部署
[program:goblog]
directory = /data/modules/blog
command = /data/modules/blog/goblog -c conf/prod.yml
autostart = true
autorestart = true
startsecs = 5
user = root
redirect_stderr = true
stdout_logfile = /data/modules/blog/supervisor.log
- 訪問首頁
- 訪問後臺
使用者名稱:admin@convee.cn
密碼:123456
- 演示站:convee.cn
本作品採用《CC 協議》,轉載必須註明作者和本文連結