GolangGolangPongo2
GolangGolangiframe+vueiframevueelement

仓库地址:

系统管理 / 系统设置
  • 绿色主题

绿色主题.jpg

  • 默认主题

默认主题.jpg

  • 极简主题

极简主题.jpg

  • 后台管理

管理后台.jpg

1. 相关介绍

1.1 基本介绍

麋鹿博客

1.2 技术栈

1.2.1 后台
技术说明官网
Golang - 1.18开发语言
Gin - 1.8.1Gin Web Framework
Mysql - 5.7数据库
Gorm - 1.9.16Golang ORM
JwtGolang jwt
Pongo2 - 5模板引擎
Logrus日志
Base64Captcha验证码
Crypto密码库
Iniini文件库
Goment时间处理工具
Air热更新工具
1.2.1 前台
技术说明官网
Vue - 2.x渐进式JavaScript 框架
Axios基于promise 的HTTP 库
Element-UI前端UI组件库
Tinymce可视化HTML编辑器
Fontawesome图标字体库

1.3 开发工具

系统工具官网
Goland开发工具
Navicat数据库管理工具
Atom源码阅读工具
CmderCmd替代工具[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. 感谢的人

此项目感谢以下各界人士的支持和帮助