到目前为止,框架本身的内容已基本写完,编写go web框架系列最后一篇,来讲一下项目的初始化、目录结构以及部署等相关内容。
BTW: 该框架命名为ecgo,意为易学,易用,易扩展,并使用github管理 : https://github.com/tim1020/ecgo
go的包和目录结构
尽管go的包管理以及官方建议的项目结构受到很多吐槽,但不能反抗就只能快乐的接受。下面先看看go的相关环境设置:
- go命令目录加入到PATH(可以直接使用go build等命令)
- workarea目录加到环境变量GOPATH(即工作目录) +src --是放置各个项目或包的源码,包括import进来的外部包 +pkg --是编译时生成的文件 +bin --是生成的执行文件放置的路径。
执行go build 时,执行文件会在当前目录生成,执行go install才会将执行文件放置在$GOPATH/bin目录
ecgo的目录结构
一个程序,除了执行文件,往往还需要配置文件以及其它辅助文件(比如模板文件),而且使用工作目录来作为生产目录也不合理。所以ecgo在开发过程中和实际部署时,进行了隔离:
开发目录(源码目录)
$GOPATH/src/myapp
main.go --入口文件
controller --controller代码
serverce -- service层代码
conf/ --配置文件目录
logs --日志目录
public --静态文件目录
views --模板文件目录
开发过程中,编译生成的执行文件也在myapp下,运行时可以调用当前目录的conf和views等文件
部署目录
实际部署时,应该与开发环境隔离,比如安装到 ~/app/myapp/
conf/ --配置文件目录
logs/ --日志目录
views/ -- 模板目录
public/-- 静态文件目录
myapp -- 执行文件
myapp是生成的执行文件,然后将~/app/myapp加入到环境变量PATH,就可以直接用 myapp来启动应用了
开始使用ecgo
作为一个框架,当然需要提供方便创建新项目的功能了,ecgo命名用了bash脚本来实现。使用ecgo来开发一个项目的步骤是:
-
安装go,并配置好相应的环境变量
-
获取ecgo
go get github.com/tim1020/ecgo
-
新建一个ecgo项目
cd $GOPATH/src/github.com/tim1020/ecgo/tools
chmod +x ecgo
./ecgo new myapp
完成后,myapp的目录结构如上面开发目录所述,并有一个hello world的例子
-
按需求编写service和controller,测试
-
开发测试完成,正式部署
ecgo install myapp $HOME/myapp
以上指令将myapp目录安装到$HOME/myapp
建议将$HOME/myapp加到PATH,之后就可以使用myapp [start|restart|stop]来管理你的应用了
## 附:bash脚本代码
源码在 https://github.com/tim1020/ecgo/ 的tools/ecgo,待完善中 ^&^