很难找到一款开发效率高,易上手能够广泛推广,性能好(节省成本抗住大并发C10k), 部署简单(一键部署,无需配置任何环境)的Http项目开发框架。如果有,那么一定是用Go语言开发的吧!看到很多php的仁兄还没接触Go语言。想起以往用php框架像laravel开发,php-fpm部署运行,并发起来疯狂加机器的日子,眼泪就流下来。尽管后来有了swoole这种优秀的解决方案。Go的天生底层网络处理优势还是独树一帜(请忘了它的语法)。于是,我向即将或已经遭受并发之苦,成本之痛,部署之心累的底层码农们推荐一种神奇的语言Go,以及一个优秀的Web开发框架Gin。Beego?听过很多吐槽,不敢轻易用。由于Gin很"简单",根据一些个人的开发习惯,整理了一个基于Gin新手入门项目开发骨架,欢迎下载一波感受一下。以下正文:
地址:https://github.com/chenhg5/mo...
MorningGo : Gin WebApp Project Skeleton
基于Gin的web项目开发框架。仅供参考。
更高的开发效率,
更好的性能,
更简单整洁的项目组织结构,
更快的部署。
适合于小型项目,大中型项目(pv高、需求复杂度高)移步 kit、go-micro、kite
环境要求
项目安装运行
使用安装器安装
安装项目
cd $GOPATH/src
wget https://gitee.com/cg33/morningo-installer/raw/master/morningo-installer
chmod +x morningo-installer
./morningo-installer --project-name web
加载依赖
cd web
make deps
测试
make test
平滑重启
make restart
运行
make
浏览器访问 http://localhost:4000/api/index
项目部署
生成可执行文件
make build # linus用户
make cross # mac/windows用户
将build
下文件上传到生产环境服务器,直接运行。如端口不为80端口,可以配置nginx代理。运行的同时会在文件夹下生成pid
文件,每次更新完文件后执行如下命令即可平滑热更。
kill -INT $(cat pid) && ./morningo # 即停止旧的进程,重启新的执行文件
项目结构
.
├── Makefile
├── README.md
├── command
│ └── sword.go
├── config 全局配置
│ └── env.go
├── connections 存储连接
│ ├── database
│ │ ├── mongodb
│ │ └── mysql
│ └── redis
│ └── redis.go
├── controllers 控制器
│ └── MainController.go
├── filters 中间件
│ └── auth 认证中间件
│ ├── drivers 认证引擎
│ └── auth.go
├── frontend 前端资源
│ ├── assets
│ │ ├── css
│ │ ├── images
│ │ └── js
│ ├── dist
│ └── templates
│ └── index.tpl
├── handle.go 全局错误处理
├── main.go
├── models 模型
│ └── User.go
├── module 项目模块
│ └── schedule
│ └── schedule.go 定时任务模块
├── routers.go 路由
├── routers_test.go api测试
├── storage
│ ├── cache 缓存文件
│ └── logs 项目日志
│ ├── access.log
│ └── error.log
└── vendor govendor 第三方包
箱子里有什么 what`s in the box
HTTP 层(基于Gin)
- 路由
- 中间件
- 控制器
- 请求
- 响应
- 视图
- Session
前端
- tpl模板
安全
- 用户认证
- 用户授权
- 加密解密
- 哈希
综合话题
- dancer 命令行
- 缓存系统
- 错误与日志
- 任务调度
数据库
- mysql
- mongodb
- redis
ORM(基于gorm)
测试
- api 测试
项目依赖
- web框架:github.com/gin-gonic/gin
- ORM包:github.com/jinzhu/gorm
- Redis:github.com/go-redis/redis
- Mysql:github.com/go-sql-driver/mysql
- Wechat:github.com/silenceper/wechat
- 任务调度:github.com/robfig/cron
有疑问加站长微信联系(非本文作者)