1.-bash: go: 未找到命令问题
方法1:(亲测可行)
echo $PATH //查看go 命令路径是否存在将go安装路径添加到/etc/profile
sudo vi /etc/profile最后关键一步不能丢:加载配置文件,使之生效
source /etc/profile添加后效果:
方法2:
首先,查看$PATH中是否包含了这些命令。
$PATH:决定了shell到哪些目录中去寻找命令或程序,PATH值是一系列的目录。当运行程序时,linux到这些目录下搜索进行编译链接。
格式:
PATH = $PATH::::...:
可以将自己指定的路径加到PATH中,中间用冒号":"隔开。环境变量更改后,会在用户下次登录的时候生效;若想立即生效,则需要执行:
$ source .bash_profile查看PATH值
export 或者 echo $PATH [[email protected] ~]$ export declare -x GOBIN="/home/vagrant/go/bin" declare -x GOPATH="/home/vagrant/go" declare -x HISTCONTROL="ignoredups" declare -x HISTSIZE="1000" declare -x HOME="/home/vagrant" declare -x HOSTNAME="bogon" declare -x LANG="zh_CN.UTF-8" declare -x LESSOPEN="||/usr/bin/lesspipe.sh %s" declare -x LOGNAME="vagrant" declare -x LS_COLORS="rs=0:di=38;5;27:ln=38;5;51:mh=44;38;5;15:pi=40;38;5;11:so=38;5;13:do=38;5;5:bd=48;5;232;38;5;11:cd=48;5;232;38;5;3:or=48;5;232;38;5;9:mi=05;48;5;232;38;5;15:su=48;5;196;38;5;15:sg=48;5;11;38;5;16:ca=48;5;196;38;5;226:tw=48;5;10;38;5;16:ow=48;5;10;38;5;21:st=48;5;21;38;5;15:ex=38;5;34:*.tar=38;5;9:*.tgz=38;5;9:*.arc=38;5;9:*.arj=38;5;9:*.taz=38;5;9:*.lha=38;5;9:*.lz4=38;5;9:*.lzh=38;5;9:*.lzma=38;5;9:*.tlz=38;5;9:*.txz=38;5;9:*.tzo=38;5;9:*.t7z=38;5;9:*.zip=38;5;9:*.z=38;5;9:*.Z=38;5;9:*.dz=38;5;9:*.gz=38;5;9:*.lrz=38;5;9:*.lz=38;5;9:*.lzo=38;5;9:*.xz=38;5;9:*.bz2=38;5;9:*.bz=38;5;9:*.tbz=38;5;9:*.tbz2=38;5;9:*.tz=38;5;9:*.deb=38;5;9:*.rpm=38;5;9:*.jar=38;5;9:*.war=38;5;9:*.ear=38;5;9:*.sar=38;5;9:*.rar=38;5;9:*.alz=38;5;9:*.ace=38;5;9:*.zoo=38;5;9:*.cpio=38;5;9:*.7z=38;5;9:*.rz=38;5;9:*.cab=38;5;9:*.jpg=38;5;13:*.jpeg=38;5;13:*.gif=38;5;13:*.bmp=38;5;13:*.pbm=38;5;13:*.pgm=38;5;13:*.ppm=38;5;13:*.tga=38;5;13:*.xbm=38;5;13:*.xpm=38;5;13:*.tif=38;5;13:*.tiff=38;5;13:*.png=38;5;13:*.svg=38;5;13:*.svgz=38;5;13:*.mng=38;5;13:*.pcx=38;5;13:*.mov=38;5;13:*.mpg=38;5;13:*.mpeg=38;5;13:*.m2v=38;5;13:*.mkv=38;5;13:*.webm=38;5;13:*.ogm=38;5;13:*.mp4=38;5;13:*.m4v=38;5;13:*.mp4v=38;5;13:*.vob=38;5;13:*.qt=38;5;13:*.nuv=38;5;13:*.wmv=38;5;13:*.asf=38;5;13:*.rm=38;5;13:*.rmvb=38;5;13:*.flc=38;5;13:*.avi=38;5;13:*.fli=38;5;13:*.flv=38;5;13:*.gl=38;5;13:*.dl=38;5;13:*.xcf=38;5;13:*.xwd=38;5;13:*.yuv=38;5;13:*.cgm=38;5;13:*.emf=38;5;13:*.axv=38;5;13:*.anx=38;5;13:*.ogv=38;5;13:*.ogx=38;5;13:*.aac=38;5;45:*.au=38;5;45:*.flac=38;5;45:*.mid=38;5;45:*.midi=38;5;45:*.mka=38;5;45:*.mp3=38;5;45:*.mpc=38;5;45:*.ogg=38;5;45:*.ra=38;5;45:*.wav=38;5;45:*.axa=38;5;45:*.oga=38;5;45:*.spx=38;5;45:*.xspf=38;5;45:" declare -x MAIL="/var/spool/mail/vagrant" declare -x OLDPWD="/usr/local/go" declare -x PATH="/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/usr/local/nginx/sbin:/usr/local/php7/bin:/usr/local/mongodb/bin:/home/vagrant/.local/bin:/home/vagrant/bin:/home/vagrant/go/bin:/home/vagrant/.local/bin:/home/vagrant/bin:/home/vagrant/.local/bin:/home/vagrant/bin:/usr/local/nginx/sbin:/usr/local/php7/bin:/usr/local/mongodb/bin:/usr/local/go/bin" declare -x PWD="/home/vagrant" declare -x SHELL="/bin/bash" declare -x SHLVL="1" declare -x SSH_CLIENT="10.0.2.2 49665 22" declare -x SSH_CONNECTION="10.0.2.2 49665 10.0.2.15 22" declare -x SSH_TTY="/dev/pts/0" declare -x TERM="xterm-256color" declare -x USER="vagrant" declare -x XDG_RUNTIME_DIR="/run/user/1000" declare -x XDG_SESSION_ID="2" [[email protected] ~]$ echo $PATH /usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/usr/local/nginx/sbin:/usr/local/php7/bin:/usr/local/mongodb/bin:/home/vagrant/.local/bin:/home/vagrant/bin:/home/vagrant/go/bin:/home/vagrant/.local/bin:/home/vagrant/bin:/home/vagrant/.local/bin:/home/vagrant/bin添加$PATH环境变量:
[[email protected] go]$ export GOPATH=/home/vagrant/go [[email protected] go]$ export GOBIN=$GOPATH/bin [[email protected] go]$ export PATH=$PATH:$GOBIN [[email protected] go]$ source ~/.bash_profile$PATH下目录简介
PATH中主要有以下四个目录:
/bin, /usr/bin, /sbin, /usr/sbin
主要存放的东西:
./bin:
bin为binary的简写主要放置一些系统的必备执行档案。如:cat,cp, chmod df, dmesg, gzip, kill, ls, mkdir, more, mount, rm, su, tar 等。
/usr/bin:
主要放置一些应用软体工具的必备执行档例。如:c++、g++、gcc、chdrv、diff、dig、du、eject、elm、free、gnome*、 gzip、htpasswd、kfm、ktop、last、less、locale、m4、make、man、mcopy、ncftp、 newaliases、nslookup passwd、quota、smb*、wget等。
/sbin:
主要放置一些系统管理的必备程式例。如:cfdisk、dhcpcd、dump、e2fsck、fdisk、halt、ifconfig、ifup、 ifdown、init、insmod、lilo、lsmod、mke2fs、modprobe、quotacheck、reboot、rmmod、 runlevel、shutdown等。
/usr/sbin:
放置一些网路管理的必备程式例。如:dhcpd、httpd、imap、in.*d、inetd、lpd、named、netconfig、nmbd、samba、sendmail、squid、swap、tcpd、tcpdump等。
2.GOROOT 与 GOPATH 区别
GOROOT 定义为指定安装 GO 的根目录。在之前的 Makefile 中,引入其他 Makefile 时,将它作为基础路径。而且,Go 1.0 之后,go tool 利用它查找 Go 编译器(保存在 $GOROOT/pkg/tool/$GOOS_$GOARCH)和标准库(在 $GOROOT/pkg/$GOOS_$GOARCH)。
如果你是一名 Java 开发者,可以将 GOROOT 理解为 JAVA_HOME。源码编译 Go,GOROOT 将自动发现(all.bash 的上级目录),然后设置到 go 工具链。
GOPATH:为我们开发常用的目录,建议不要和Go的安装目录一致,在该文件夹下又有三个文件夹:src、pkg、bin,这里src是自己新建的,pkg和bin是后面生成的。 src:主要存放我们的源代码 bin:存放编译后生成的可执行文件,可以自己执行 pkg: 编译后生成的文件(.a文件)(非main函数的文件在go install后生成)
GOBIN:是GOPATH下的bin目录PATH:环境变量,需要go-bin目录加入到path路径下,生成可执行文件就可以直接运行了。
如下命令查看:
$ echo $GOROOT $ go env /home/dfc/go3.安装beego 和bee 工具
beego的安装: go get github.com/astaxie/beego
beego框架升级: go get -u github.com/astaxie/beego
Bee工具安装: go get github.com/beego/bee (1.16 及以前)
go install github.com/beego/[email protected] (go 1.17 后)
创建web项目:bee new 项目名称
创建api项目:bee api 项目名称
3.1go get github.com/astaxie/beego没有反应
执行go get github.com/astaxie/beego时,出现的错误大致如下:
go get: module github.com/astaxie/beego: Get "https://proxy.golang.org/github.com/astaxie/beego/@v/list": dial tcp 172.217.163.49:443: connectex: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond.出现如上现象大致就是网络问题,无法访问,解决方法如下: 运行cmd,执行如下代码:
go env -w GOPROXY=https://goproxy.cn,direct再次执行go get github.com/astaxie/beego就可以了
3.2使用 go get -u github.com/beego/bee 报错
原因分析 Go1.17版使用go install安装依赖
go get 用于下载并安装 Go 包、命令等,而 go install 在 module 时代几乎很少使用,在 GOPATH 年代,go install 用来编译安装本地项目。
自 1.16 起,官方说,不应该 go get 下载安装命令(即可执行程序),不过只是这么说,却依然可以使用。
但 Go1.17 开始,如果使用 go get 安装命令会告警。
解决方法:
# Go1.16及以前 go get -u github.com/beego/bee # Go1.17版本 go install github.com/beego/[email protected]4.-bash: bee: 未找到命令
bee 是为快速创建beego 项目而创立的工具
找不到bee 安装路径的问题
方法一: 将gopath/bin 下的bee 添加到 /etc/profile
我的gopath : /home/wwwroot/goroot/bin [[email protected] bin]$ sudo vi /etc/profile #修改添加 bee 的路径 [[email protected] bin]$ source /etc/profile #使配置生效
方法二:
如果还是 bee bash: bee: command not found 请你把GOPATH/bin下的bee.exe 拷贝到 GOROOT/bin里面,也就是你的go语言环境变量的bin里面,然后运行 bee
5. bee 命令的使用
#显示bee 的版本和 go的版本 bee version6.beego 框架的介绍
相当于PHP框架的ci 轻量级mvc 框架
特点:快速开发,mvc 架构,文档齐全,社区活跃
架构级原理
模块
cache config context httplibs logs orm session toolbox
cache: 支持string类型
文件 内存 memcache redis(推荐)config:
ini json: 推荐 xml yamlcontext: 上下文模块,http封装,用户的输入和输出
request: response:httplibs:
支持:get,post,put,delete,head 支持https 支持超时设置: 支持文件上传logs:
多种输出引擎:输出到文件,输出到邮件 支持异步输出其他:
orm:model模块
session:用户session
toolbox: 监控工具,定时任务等, 监控告警
7.bee 工具的应用
bee new: 新建项目结构,生成完整的目录结构
bee run : 运行项目,修改代码后自动编译部署,不用停止服务再运行
bee generate: 自动生成代码
8.Go构建项目的时候,解决missing go.sum entry for module providing package <package_name>
[[email protected] studyBeego]$ bee run
______
| ___ \
| |_/ / ___ ___
| ___ \ / _ \ / _ \
| |_/ /| __/| __/
\____/ \___| \___| v1.12.0
2022/03/14 16:59:04 INFO 0001 Using 'studyBeego' as 'appname'
2022/03/14 16:59:04 INFO 0002 Initializing watcher...
main.go:5:2: missing go.sum entry for module providing package github.com/astaxie/beego (imported by studyBeego); to add:
go get studyBeego
2022/03/14 16:59:05 ERROR 0003 Failed to build the application: main.go:5:2: missing go.sum entry for module providing package github.com/astaxie/beego (imported by studyBeego); to add:
go get studyBeego
解决方案一:
当在代码中使用了第三方库 ,但是go.mod中并没有跟着更新的时候
如果直接run或者build就会报这个错误
missing go.sum entry for module providing package
可以使用go mod tidy 来整理依赖
这个命令会:
删除不需要的依赖包
下载新的依赖包
更新go.sum
解决方案二:(亲测可行)
go build -mod=mod本人遇到同样的问题,就是用方案解决的。
9.因为我是在mac 里面使用的vagrant 虚拟机,在虚拟机中安装的beego,
在 vagrant 的虚拟机中部署 Web 环境之后直接访问虚拟机的 IP 地址即可访问。
不能使用http://localhost:8080,只能通过IP进行访问 http://192.168.33.11:8080/
192.168.33.11 是我的私有网络,至于如何使用localhost访问,后续再更新
在命令行可以使用locahost 进行访问,但效果肯定不如浏览器直观
[[email protected] studyBeego]# curl http://localhost:8080/每加载一次,下面都会记录一次 bee run 或者使用 go run main.go 运行项目
tree查看目录结构, 使用如下命令
#centos 下安装tree yum -y install tree # 查看目录结构层级 tree -L 3 # 数字3: 代表个3层级
10.因使用的vagrant 虚拟机造成热更新时,加载reload.min.js 每次加载失败,没找到合适的解决方案,故切换到在mac 直接安装beego,如果你有合适的方案欢迎留言评论。
reload.min.js:1 WebSocket connection to 'ws://localhost:12450/reload' failed:mac 环境下,刷新即可,热加载
11.bee generate 自送生成代码的使用
创建数据表
create table `user` ( `id` int(11) not null auto_increment, `name` varchar(255) not null default '', `gender` tinyint(1) not null default 0, `age` int(11) not null default 0, primary key (`id`) ) engine=innodb default insert into user values(1,'zhangsan',1,21),(2,'lisi',0,23),(3,'wangwu',1,24);脚手架命令:
# 注意:命令在一行,不要换行 scaffold 不要带s 字母,否则报错命令找不到 bee generate scaffold user -fields="id:int64,name:string,gender:int,age:int" -driver=mysql -conn="root:@tcp(127.0.0.1:3306)/beego"执行上面命令报错,GOPATH environment is empty,may be you use `go module`
解决方法:
虽然go env中显示是有配置GOPATH的,但是env只没有显示。bee生成的代码执行时还是需要将GOPATH设置到env中。
go env | grep GOPATH GOPATH="/home/wangjia/go"1.执行下面这个发现为空:
echo $GOPATH2.设置
export GOPATH=/home/wangjia/go echo $GOPATH /home/wangjia/go再执行就可以了
12.引入后访问报错 not found
# 引入MySQL驱动就可以了 go get github.com/go-sql-driver/mysqlmain.go
orm.RegisterDataBase("default","mysql","root:[email protected](127.0.0.1:3306)/beego")其中前一个root 是账号,后一个root 是密码
package main import ( _ "beego/routers" "github.com/astaxie/beego" "github.com/astaxie/beego/orm" _"github.com/go-sql-driver/mysql" ) func main() { orm.RegisterDataBase("default","mysql","root:[email protected](127.0.0.1:3306)/beego") beego.Run() }13. bee packge 打包,编译
参考:Linux下提示命令找不到:bash:command not found - 风声风语 - 博客园