最近在学习golang,一直想做个网站来练练手,正好工作中确实需要这么一个员工加班调休系统来记录员工的加班和调休的情况,于是就想着用beego来搭建这个系统了,边学边做。
先记录下在开发过程中遇到的一些问题吧,后面再把源码弄上来。
1.beego的安装。beego的安装没有什么问题的,不过在安装bee这个工具的时候遇到了难题,因为我是在windows下面使用,需要gcc支持。这个需要安装windows下面的gcc版本软件,我是参照这个帖子来做的,http://jingyan.baidu.com/article/c275f6bacc0126e33c756771.html,安装的mingw。不过按照这个教程装好之后还有有一点问题,后来我又在c盘下创建了一个gcc的文件夹,把bin目录下有关gcc的exe文件都拿过来才可以的。
2.关于beego项目。我按照流程新建了一个beego的项目,确实可以正常运行了。可是后来我需要把代码提交到oschina上面,就又新建了一个文件夹,把原有文件复制过去了一份,却发现无法运行了,对新文件夹下的改动总是得不到响应。后来发现主要有2个问题,首先项目文件必须是放在gopath的src目录下面,另外对于一个已有的文件,需要切换到对应的目录下,执行bee run app名称进行热编译之后才可以。
3.在项目中使用了MySQL,我建好model之后,根据model的字段去mysql中创建了对应的表,结果发现映射不了,后来我把mysql中的表删除掉,让beego程序去根据model自己创建表就可以了。发现beego创建的表跟实体类中的并不一样,比如实体类中的字段为UserName,mysql数据库中对应表的字段名称却是user_name。所以建议还是直接让beego去创建数据表更好。另外可以把mysql的配置信息写进配置文件中,然后在项目中通过读取配置文件的内容去连接数据库,这样比较方便,需要注意的是,如果要连接远程数据库,host需要写成tcp(127.0.0.1:3306)。
4.我在项目中实现了用户登陆的功能,不过并没有使用数据库,直接判断输入的内容是否匹配,如果匹配的话会将用户名保存到session中,之后在其他的方法中增加对session的判断,不为空才可以正常访问,否则跳转回登陆页面。这里需要注意的是一定要开启session,因为beego默认是不开启的,开启的方式有两种,一种是在main.go中写上beego.SessionOn = "true" ,还有一种方式就是在app.conf中添加sessionon="true",我是用的第二种方式,因为第一种方式我写了之后编译不过,SessionOn找不到,不知道是不是因为beego版本的问题。
5.关于部署。看了下官方文档,部署的话就是把生成的二进制文件(exe)和一些静态资源还有页面模板打包放到一起,然后放到服务器上面,运行exe文件应该就可以了,这里可以把exe文件弄到windows的服务里面实现自启动。设置方法为下载instsrv.exe 和 srvany.exe两个文件,命令行定位到instsrv所在文件夹,执行instsrv ServiceName C:\Windows\System32\srvany.exe ,如果要卸载则执行instsrv ServiceName remove。安装之后还要修改下注册表,
开始 - 运行 - regedit,打开注册表,定位到下面的路径。HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\ServiceName
如果该服务名下没有Parameters项目,则对服务名称项目右击新建项,名称为Parameters,然后定位到Parameters项,新建以下几个字符串值。
名称 Application 值为你要作为服务运行的程序地址。
名称 AppDirectory 值为你要作为服务运行的程序所在文件夹路径。
名称 AppParameters 值为你要作为服务运行的程序启动所需要的参数。接下来我们进入系统服务,找到ServiceName这个服务,双击进入它的属性。设置允许与桌面交互。然后启动服务。
instsrv.exe 和 srvany.exe两个文件的下载地址为:http://download.csdn.net/detail/aiwuziji/9513523
另外需要注意的就是把runmode修改一下,改为prod这种生产方式。
最后给出源代码地址:https://git.oschina.net/snowbird/gotest.git
有疑问加站长微信联系(非本文作者)