elk-blog: 麋鹿博客:基于Go, Gin, Gorm, Mysql, Vue, Element, Pongo2 的个人博客


本站和网页 https://gitee.com/jikey/elk-blog/ 的作者无关,不对其内容负责。快照谨为网络故障时之索引,不代表被搜索网站的即时页面。

elk-blog: 麋鹿博客:基于Go, Gin, Gorm, Mysql, Vue, Element, Pongo2 的个人博客
登录
注册
开源软件
企业版
高校版
搜索
帮助中心
使用条款
关于我们
开源软件
企业版
特惠
高校版
私有云
博客
我知道了
查看详情
登录
注册
12 月 9 日,「源创会」珠海站,一起探讨 AI 时代的技术革命
代码拉取完成,页面将自动刷新
开源项目
建站系统
博客系统
&&
捐赠
捐赠前请先登录
取消
前往登录
扫描微信二维码支付
取消
支付完成
支付提示
将跳转至支付宝完成支付
确定
取消
Watch
不关注
关注所有动态
仅关注版本发行动态
关注但不提醒动态
12
Star
201
Fork
31
杰克 / elk-blog
代码
Issues
Pull Requests
Wiki
统计
流水线
服务
Gitee Pages
质量分析
Jenkins for Gitee
腾讯云托管
腾讯云 Serverless
悬镜安全
阿里云 SAE
Codeblitz
我知道了,不再自动展开
加入 Gitee
与超过 1000 万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
已有帐号?
立即登录
返回
master
管理
管理
分支 (1)
标签 (3)
master
v.10
v1.0
v1.0.beta
克隆/下载
HTTPS
SSH
SVN
SVN+SSH
复制
下载ZIP
登录提示
该操作需登录 Gitee 帐号,请先登录后再操作。
立即登录
没有帐号,去注册
文件
新建文件
新建 Diagram 文件
新建子模块
上传文件
搜索文件
Web IDE
分支 1
标签 3
贡献代码
同步代码
创建 Pull Request
了解更多
对比差异
通过 Pull Request 同步
同步更新到分支
通过 Pull Request 同步
将会在向当前分支创建一个 Pull Request,合入后将完成同步
杰克
补包
d402f94
142 次提交
提交
取消
提示:
由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
.env
保存
取消
app
保存
取消
deploy
保存
取消
middleware
保存
取消
pkg
保存
取消
public
保存
取消
routers
保存
取消
setting
保存
取消
test
保存
取消
views
保存
取消
.air.toml
保存
取消
.gitignore
保存
取消
Dockerfile
保存
取消
Dockerfile-mysql
保存
取消
LICENSE
保存
取消
README.md
保存
取消
build.sh
保存
取消
docker-compose.yaml
保存
取消
go.mod
保存
取消
go.sum
保存
取消
main.go
保存
取消
old-Dockerfile
保存
取消
Loading...
README.md
大家好,我在公司的岗位是前端,由于对Go的广泛兴趣到最后的挚爱,奔着学习的目的开发了这款基于Go, Gin, Gorm, Mysql, Vue, Element, Pongo2 的个人博客,近期1.0版本正式发布了。 第一次用go开发东西,肯定有很多不足,请大佬们轻拍。 一句话总结一下: 前后端不分离,没有npm安装打包的操作,模板由Pongo2模板引擎负责呈现。 后台管理页面在 Layuimini 的基础上采用 iframe+vue 混合开发方式,原来通过 iframe 实现多标签的功能及基础布局框架没有变更,在业务页面直接引入 vue,element。好处是省去安装打包的麻烦,缺点是支撑不了复杂的业务。 提供了三套不同模板风格,分别对应:完整呈现,图片为主,简洁风格。 仓库地址: Gitee elk-blog 预览地址: http://milu.blog 后台地址: http://milu.blog/admin/login 共提供三款基础主题,在系统管理 / 系统设置 中设置。 绿色主题 默认主题 极简主题 后台管理 1. 相关介绍 1.1 基本介绍 取麋鹿博客 名字是为便于搜索引擎关键字直达,同时组成整个动物系列开源项目。总的思路就是: 简单的开发 前后端不分离,后台管理虽然使用了Vue 2.x,但是不安装依赖不打包,直接引入使用。 简单的部署 没有docker, redis,FTP直接上传,适合配置低的机型部署。 简单的维护 .go文件打包发布后需要重启go应用,public、view等静态文件可单独热更新,不需要重启go服务。 开发时间从5到8差不多三个月的业余时间。 静态页面参考其它项目,没有投入太多的时间,只在细节上做了调整。 1.2 功能特性 文章 文章发布,采用富文本 tinymce 和 markdown 编辑的使用体验 分类管理 文章排序 草稿箱 Banner管理 Banner增加、修改、删除 评论 文章评论 评论回复 友情链接 添加、修改、删除友链 用户 修改用户基础信息 友情链接 添加、修改友链 友链分类 设置 网站设置 主题切换 1.2 技术栈 1.2.1 后台 技术 说明 官网 Golang - 1.18 开发语言 https://go.dev/ Gin - 1.8.1 Gin Web Framework https://gin-gonic.com/zh-cn/docs/ Mysql - 5.7 数据库 https://www.mysql.com/cn/ Gorm - 1.9.16 Golang ORM https://gorm.io/zh_CN/docs/index.html Jwt Golang jwt https://github.com/golang-jwt/jwt Pongo2 - 5 模板引擎 https://github.com/flosch/pongo2 Logrus 日志 https://github.com/sirupsen/logrus Base64Captcha 验证码 https://github.com/mojocn/base64Captcha Crypto 密码库 https://golang.org/x/crypto Ini ini文件库 https://github.com/go-ini/ini Goment 时间处理工具 https://github.com/nleeper/goment Air 热更新工具 https://github.com/cosmtrek/air 1.2.1 前台 技术 说明 官网 Vue - 2.x 渐进式JavaScript 框架 https://cn.vuejs.org/v2/guide/ Axios 基于promise 的HTTP 库 https://github.com/axios/axios Element-UI 前端UI组件库 https://element.eleme.io/ Tinymce 可视化HTML编辑器 https://www.tiny.cloud/ Fontawesome 图标字体库 http://www.fontawesome.com.cn/ 1.3 开发工具 系统 工具 官网 Goland 开发工具 https://www.jetbrains.com/zh-cn/go/ Navicat 数据库管理工具 https://www.navicat.com.cn/ Atom 源码阅读工具 https://atom.io/ Cmder Cmd替代工具[windows] https://cmder.net/ Notepad2 临时单文件编辑[windows] http://www.flos-freeware.ch/notepad2.html Chrome 调试工具 https://www.google.com/intl/zh-CN/chrome/ 1.4 文件结构 整体的结构参考世上最优美的框架 Laravel。 ├─app // 核心代码 │ ├─controller // 控制层 │ │ ├─admin │ │ └─home │ ├─database // 数据库链接 │ ├─model // 模型层 │ └─service // 操作数据层 ├─config // 配置文件 ├─pkg // 所有工具文件 │ ├─e // 报错 │ ├─hash // 验证码 │ ├─response // 返回封装 │ └─utils // 工具库 ├─public // 所有静态资源 │ ├─admin │ ├─common │ ├─data │ ├─green │ ├─home │ └─uploads ├─routers // 路由文件 └─views // 所有静态资源 ├─admin ├─green // 绿色主题模板 ├─default // 默认模板 └─home // 普通模板 Tips: Air 由于go本身没有热加载技术,所以还需要一个热加载工具的支持。可选的也不多, 1. Fresh Fresh满足基础的应用,每次保存文件都会生成或重新启动Web应用程序,只是这工具多年未更新所以弃用。 2. Air Air的优点也比较突出:彩色日志输出,自定义构建或二进制命令,支持忽略子目录,启动后支持监听新目录等等的。 2.1 Air 存在问题 Air存在缓存问题,虽然在cmd里边结束Air,但刷新浏览器程序依然在运行,这时就需要手工结束进程然后重启。 // 查找 PID,9888为端口号 netstat -ano | findstr 9888 // 杀死进程,14172 查到的pid taskkill /pid 14172 /f 2.2 Command not found 报错 如果输入 air 报这个错,那需要在系统的path里边配置项目路径,比如项目在D:\go-project,那么在path里边就应该有一条: D:\go-project\bin Pongo2 由于是前后端未分离的开发方式,所以模板引擎扮演着重要的角色,起初的选型也看了不少。比如goview,仿ejs的quicktemplate,还有类ejs的hero等等的。最后选定Pongo2的理由是功能强大,上手容易,能够容易实现分模板继承不同模板的需求。他大体的思路和语法是仿Jinja2和Django模板的或基本一样的。有诸如Extends、Macro、Block、Include等强大功能,如果有类 Django, Nunjucks 模板语法上手基本没有难度,Pongo2文档写的不是那么详细,有进一步了解还需要看仓库源码 Template_tests。 问题,与Vue的取值边界符号有冲突。 两种解决办法: Vue的标签用v-html来代替,比如:<div v-html="user.nickname"></div> 修改Vue的边界修饰符 delimiters配置方式。 Goland对Pongo2并没有提供专门的语法高亮支持,这其中推荐另外一个插件,Twig,需要2步 安装插件 File -> Settings -> Plugins -> Twig。 重启开发工具 2. 如何在本地运行 以下以windows系统举例 先从官网下载安装最新版Go开发包 1.18.3,然后进行相关的配置。 2.1 环境变量的配置 在系统变量中添加 Go 开发相关的变量,需添加以下变量 变量名 值 说明 GOPATH d:\go-project Go 语言的开发目录 GOROOT c:\Go 安装 Go 安装目录 PATH c:\Go\bin;d:\go-project\bin 终端可以直接运行Go命令; 运行自己编译的Go程序和Air GO111MODULE on 开启 Go.mod 功能,统一用go.mod管理开发依赖包,此功能在Go1.11版本中添加 GOPROXY https://goproxy.cn Go 包下载代理地址 2.2 数据库 2.2.1 Mysql的安装 Mysql是我以前玩PHP的套件Phpstudy,有安装方便、启动便捷、管理省心等特点,当然也可以选择单独的 Mysql 来安装。由于最终发布的宝塔控制面板目前默认版本是 5.7,为了避免不必要的麻烦,我目前安装这是这一版本。 2.2.2 数据导入 新建名称为 elk-blog 的数据库,注意字符集为 utf8 -- UTF-8 Unicode,字符编码为 utf8_general_ci 然后导入 elk-blg/public/data/elk-blog.sql文件。 然后克隆项目代码到本地: $ git clone https://gitee.com/jikey/elk-blog.git 复制项目目录下文件 config/env.example.ini 为 env.ini 并修改配置文件中的数据库连接相关信息 [database] type = mysql host = localhost port = 3306 user = root password = root dbname = elk-blog charset = utf8 进入项目根目录,安装项目相关依赖 $ go mod download 进入项目根目录,启动项目,比如: $ cd D:\go-project\src\elk-blog $ air 前台入口: http://localhost:8080/ 后台入口: http://localhost:8080/admin/login 初始用户名:admin,密码:admin123$ 2.3 Goland 的配置 2.3.1 File -> Settings -> Go 下配置 变量名 值 说明 GOPATH d:\go-project Go 语言的开发目录 GOROOT C:\Go 会默认选择系统安装最高版本 GOPATH-Global GOPATH d:\go-project 全局设置 Go Modules GOPROXY=https://goproxy.cn,direct 先从配置地址下载,若失败,转从原始地址下载 功能,统一用go.mod管理开发依赖包,此功能在Go1.11版本中添加 GOPROXY https://goproxy.cn Go 包下载代理地址 2.3.2 Settings -> Project Structure 排除Exclued .idea, bin, pkg 等目录,不进行索引,有效节省内存资源。 2.3.3 Settings -> Appearance 使用One Dark主题 2.4 Air 的配置 3. 如何上线发布 由于本人特别菜,对经典的linux及docker一直没怎么学会,所以这次选择的是宝塔控制面板来辅助部署,以下的经验也是基于宝塔来介绍。 3.1 安装GO 宝塔Linux面板-安装golang环境 基本的步骤就是先从go官网下载tar包,然后上传到服务器指定目录上 /usr/local,这样做的目的是,能够快速完成节省时间。 然后解压添加环境变量 tar -xzvf go1.18.2.linux-amd64.tar.gz,这里边需要说明的是宝塔的终端不能修改配置文件,即没有退出保存的模式,需要ssh和直接在文本编辑模式修改。 我添加的环境变量: export GOROOT=/usr/local/go # 设置为go安装的路径 export GOPATH=/www/wwwroot/GO #项目路径 export PATH=$PATH:$GOROOT/bin:$GOPATH/bin 宝塔终端输入go version,显示:go version go1.18.2 linux/amd64 即确认为安装成功 3.2 新建网站 其实就是新建nginx配置文件,比如新建网站 milu.blog,然后在nginx中配置go服务端口入口。假如go的端口为4000,则增加如下配置: server{ location / { proxy_pass http://127.0.0.1:4000; } } 3.3 准备打包go go的打包命令只打包*.go结尾的文件,换句话说非*.go的文件需要自己手动上传。如果经历过npm run build洗礼的人,那go的这个build至少到现在没有遇到大的问题,或许我代码写的少的原因。 set CGO_ENABLED=0 set GOARCH=amd64 set GOOS=linux go build main.go 3.4 上传文件 上传的目录为在环境变量里边定义的项目路径,比如milu项目的目录就是 /www/wwwroot/GO/milu 其它的项目就是 /www/wwwroot/GO/other 为了防止其它配置文件寻找不到,那所有相关的文件都在这个目录中。那最后发布完的/www/wwwroot/GO/milu下的文件组织为: ├─config // 配置文件 ├─public // 静态资源 ├─views // 模板文件 ├─main // 打完包二进制文件 也就是说前面那么多文件,如果部署这些文件就够了。 3.5 上传SQL文件 这块唯一说的是宝塔只支持Mysql5.7版本,暂不支持Mysql8.0,手工安装估计也可以,偷懒也没折腾。为防止版本不兼容,在本地开发时Mysql就为5.7。然后本地Navicat导出结构和数据,在宝塔的Phpmyadmin里边导入。 3.6 命令行终端调试 在宝塔终端中cd到项目目录/www/wwwroot/GO/milu,然后直接 ./main,这样方便的查看日志,能够看到一些详情的报错信息。运行 ./main之后,就可以刷新域名,如果各步正常页面就能显示出来。 3.7 PM2绑定进程 我也只是试试的心态用pm2来运行一下go,没想到还真运行起来了。这样暂时不安装其它的服务,和Node服务一块运行起来。 4. 感谢的人 此项目感谢以下各界人士的支持和帮助 上海-时间 时佬在 Mysql 领域给我更多的帮助 南京-Wike Wike是一位资深的 Go 开发人士 上海-Sam Sam 擅长领域是 Gin, Vue 方便找回此项目,可以点右上角 💖Star 💖 收藏 + 支持 还可以 Golang交流群 105545914 Vue交流群 364912432 Javascript交流群 492107297
Starred
201
Star
201
Fork
31
捐赠
0 人次
举报
举报成功
我们将于2个工作日内通过站内信反馈结果给你!
请认真填写举报原因,尽可能描述详细。
举报类型
请选择举报类型
举报原因
取消
发送
误判申诉
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。
取消
提交
简介
麋鹿博客:基于Go, Gin, Gorm, Mysql, Vue, Element, Pongo2 的个人博客
展开
收起
Go语言
Gin
gorm
MySQL
Vue
暂无标签
http://milu.blog
Go
等 4 种语言
JavaScript
71.2%
HTML
12.9%
CSS
11.2%
Go
4.7%
MIT
使用 MIT 开源许可协议
保存更改
取消
发行版
(2)
全部
1.0正式版
elk-blog
Gitee 指数包含如下维度
代码活跃度
社区活跃度
团队健康
流行趋势
影响力
:与代码提交频次相关
:与项目和用户的issue、pr互动相关
:与团队成员人数和稳定度相关
:与项目近期受关注度相关
:与项目的star、下载量等社交指标相关
贡献者
全部
近期动态
加载更多
不能加载更多了
编辑仓库简介
简介内容
麋鹿博客:基于Go, Gin, Gorm, Mysql, Vue, Element, Pongo2 的个人博客
主页
取消
保存更改
Go
https://gitee.com/jikey/elk-blog.git
git@gitee.com:jikey/elk-blog.git
jikey
elk-blog
elk-blog
master
深圳市奥思网络科技有限公司版权所有
Git 大全
Git 命令学习
CopyCat 代码克隆检测
APP与插件下载
Gitee Reward
Gitee 封面人物
GVP 项目
Gitee 博客
Gitee 公益计划
Gitee 持续集成
OpenAPI
帮助文档
在线自助服务
更新日志
关于我们
加入我们
使用条款
意见建议
合作伙伴
微信小程序
微信服务号
官方技术交流QQ群:777320883
git#oschina.cn
Gitee
售前及售后使用咨询:400-606-0201
开放原子开源基金会
合作代码托管平台
违法和不良信息举报中心
粤ICP备12009483号
简 体
繁 體
English
点此查找更多帮助
搜索帮助
Git 命令在线学习
如何在 Gitee 导入 GitHub 仓库
Git 仓库基础操作
企业版和社区版功能对比
SSH 公钥设置
如何处理代码冲突
仓库体积过大,如何减小?
如何找回被删除的仓库数据
Gitee 产品配额说明
GitHub仓库快速导入Gitee及同步更新
什么是 Release(发行版)
将 PHP 项目自动发布到 packagist.org
评论
仓库举报
回到顶部
登录提示
该操作需登录 Gitee 帐号,请先登录后再操作。
立即登录
没有帐号,去注册