GolangGolangPongo2
GolangGolangiframe+vueiframevueelement
仓库地址:
系统管理 / 系统设置
- 绿色主题
- 默认主题
- 极简主题
- 后台管理
1. 相关介绍
1.1 基本介绍
麋鹿博客
1.2 技术栈
1.2.1 后台
技术 | 说明 | 官网 |
---|---|---|
Golang - 1.18 | 开发语言 | |
Gin - 1.8.1 | Gin Web Framework | |
Mysql - 5.7 | 数据库 | |
Gorm - 1.9.16 | Golang ORM | |
Jwt | Golang jwt | |
Pongo2 - 5 | 模板引擎 | |
Logrus | 日志 | |
Base64Captcha | 验证码 | |
Crypto | 密码库 | |
Ini | ini文件库 | |
Goment | 时间处理工具 | |
Air | 热更新工具 |
1.2.1 前台
技术 | 说明 | 官网 |
---|---|---|
Vue - 2.x | 渐进式JavaScript 框架 | |
Axios | 基于promise 的HTTP 库 | |
Element-UI | 前端UI组件库 | |
Tinymce | 可视化HTML编辑器 | |
Fontawesome | 图标字体库 |
1.3 开发工具
系统 | 工具 | 官网 |
---|---|---|
Goland | 开发工具 | |
Navicat | 数据库管理工具 | |
Atom | 源码阅读工具 | |
Cmder | Cmd替代工具[windows] | |
Notepad2 | 临时单文件编辑[windows] | |
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本身没有热加载技术,所以还需要一个热加载工具的支持。可选的也不多,
Fresh满足基础的应用,每次保存文件都会生成或重新启动Web应用程序,只是这工具多年未更新所以弃用。
2. Air
Air的优点也比较突出:彩色日志输出,自定义构建或二进制命令,支持忽略子目录,启动后支持监听新目录等等的。
Air
Air存在缓存问题,虽然在cmd里边结束Air,但刷新浏览器程序依然在运行,这时就需要手工结束进程然后重启。
// 查找 PID,9888为端口号
netstat -ano | findstr 9888
// 杀死进程,14172 查到的pid
taskkill /pid 14172 /f
2.2 Command not found 报错
airD:\go-project
D:\go-project\bin
两种解决办法:
File -> Settings -> Plugins -> Twig
2. 如何在本地运行
windowsGo1.18.3
2.1 环境变量的配置
Go
GoGoGoGoAirGo.modgo.modGo1.11Go
2.2 数据库
Mysql
MysqlPHPMysql5.7
2.2.2 数据导入
elk-blg/public/data/elk-blog.sql
http://localhost:4000/admin/login
adminadmin
2.2.3 运行
Cmdair
$ cd D:\go-project\src\elk-blog
$ air
Goland
2.3.1 File -> Settings -> Go 下配置
Gogo.modGo1.11Go
2.3.2 Settings -> Project Structure
Exclued.idea, bin, pkg
2.3.3 Settings -> Appearance
One Dark
Air
3. 如何上线发布
linuxdocker
3.1 安装GO
tar/usr/localtar -xzvf go1.18.2.linux-amd64.tar.gz
export GOROOT=/usr/local/go # 设置为go安装的路径
export GOPATH=/www/wwwroot/GO #项目路径
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin
go versiongo version go1.18.2 linux/amd64
3.2 新建网站
milu.blog4000
server{
location / {
proxy_pass http://127.0.0.1:4000;
}
}
3.3 准备打包go
*.go*.gonpm run 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 // 打完包二进制文件
也就是说前面那么多文件,如果部署这些文件就够了。
SQL
Mysql5.7Mysql8.0Mysql5.7NavicatPhpmyadmin
3.6 命令行终端调试
/www/wwwroot/GO/milu./main./main
3.7 PM2绑定进程
我也只是试试的心态用pm2来运行一下go,没想到还真运行起来了。这样暂时不安装其它的服务,和Node服务一块运行起来。
4. 感谢的人
此项目感谢以下各界人士的支持和帮助