## Go安装
### 安装Go环境
> 提示: 版本需要 go version go1.13.6,运行go mod tidy,报1.10.x版本错误
> Golang官网下载地址:https://golang.org/dl/
1. 打开官网下载地址选择对应的系统版本, 复制下载链接
这里我选择的是
```
go1.13.6.linux-amd64.tar.gz:
https://dl.google.com/go/go1.13.6.linux-amd64.tar.gz
```
2. cd进入你用来存放安装包的目录。直接输入cd ~。
然后执行
```
wget https://dl.google.com/go/go1.13.6.linux-amd64.tar.gz
```
3. 下载完成
4. 执行tar解压到/usr/loacl目录下,得到go文件夹
```
tar -C /usr/local -zxvf go1.13.6.linux-amd64.tar.gz
```
5. 添加/usr/loacl/go/bin目录到PATH变量中。
添加到/etc/profile 或$HOME/.profile都可以`vim /etc/profile`
GOROOT 在最后一行添加GOROOT自定义后需要在下面添加三个文件
GOPATH=$HOME/gocode
```
export GOROOT=/usr/local/go
export GOPATH=/home/hadoop/golang
export PATH=$PATH:$GOROOT/bin
```
wq保存退出后source一下
`source /etc/profile`
6. 执行go version,如果现实版本号,则Go环境安装成功。
```
[root@boss helloworld]# go version
go version go1.13.6 linux/amd64
```
7. 创建工作空间
> 注意事项:Go代码必须放在工作空间内。它其实就是一个目录,其中包含三个子目录:
src 目录包含Go的源文件,它们被组织成 包 (每个目录都对应一个包),
pkg 目录包含 包 编译后生成的库文件,
bin 目录包含 包 编译后生成可执行程序。
可在合适的位置创建工作空间和子目录,实例如下:
```
mkdir -p /home/hadoop/golang/src
mkdir -p /home/hadoop/golang/pkg
mkdir -p /home/hadoop/golang/bin
```
或者
```
$ cd /home/hadoop/golang/
$ mkdir src pkg bin
```
### 运行第一个程序
cd /home/hadoop/golang/src
```
mkdir helloworld
cd helloworld/
# 第一个入口,main和java类似
touch main.go
```
编写一个脚本,保存
```
package main
import "fmt"
func main() {
fmt.Println("Hello, World!")
}
```
执行文件helloworld,输出:Hello, World!
```
[hadoop@boss02 helloworld]$ go run main.go
Hello, World!
```
> 注意事项:采用 go build 进行编译,根据不同环境产生不同执行文件,
> 其中account中特别之处,在以拉取依赖,采用 go mod tidy。
> 由于网络下载开源依赖需要下载全,才可以进行 go build 进行打包
执行:./account &
> 细节硬核:修改配置还是代码,都要从新构建运行,不然无法生效。
### 卸载 Go
卸载Go,其实就是将前面安装Go的东西全部删除:
删除 go 目录:
```
sudo rm -rf /usr/local/go
```
删除软链接:
```
sudo rm -rf /usr/bin/go
```
### 通用脚本扩展
#### 1. 启动脚本:
脚本:1startAccount
```
# ps -ef | grep account
# 关闭kill -9 id
nohup ./account.wll &
```
#### 2. 其他脚本:
关于关闭、进程查看、日志查看
脚本:2stopAccount
```sh
#!/bin/bash
#这里可替换为你自己的执行程序,其他代码无需更改
#======================================================================
# 通用脚本编写,项目启动shell脚本
# go目录: golang包
# log/account.log: 记录启动日志
# log/back目录: 项目运行日志备份目录
# nohup后台运行
#
# author: lucky
# date: 2020-02-05
#======================================================================
# 项目名称
APPLICATION="account.wll"
APP_PATH="/root/account"
APP_LOG="/root/account/log/account.log"
# bin目录绝对路径
BIN_PATH=$(cd `dirname $0`; pwd)
# 进入bin目录
cd `dirname $0`
# 返回到上一级项目根目录路径
cd ..
# 打印项目根目录绝对路径
# `pwd` 执行系统命令并获得结果
BASE_PATH=`pwd`
# 项目日志输出绝对路径
LOG_FILE="${APPLICATION}.log"
LOG_PATH="${APP_PATH}/${LOG_FILE}"
# 日志文件夹不存在则自动创建
if [ ! -d "${LOG_PATH}" ];then
mkdir ${LOG_PATH}
fi
GOT_PATH=${BASE_PATH}
APP_NAME=${APPLICATION}
LOG_NAME=${APP_LOG}
cd ${GOT_PATH}
cd ${APP_PATH}
# 使用说明,用来提示输入参数
usage() {
echo "Usage: sh 执行脚本.sh [stop|restart|status|logs|proc]"
exit 1
}
# 检查程序是否在运行
is_exist(){
# ps -ef |grep account.wll |grep -v "grep"|awk '{print $2}'
pid=`ps -ef|grep $APP_NAME|grep -v grep|awk '{print $2}' `
# 如果不存在返回1,存在返回0
if [ -z "${pid}" ]; then
return 1
else
return 0
fi
}
# shell中的函数
# 启动方法
start(){
is_exist()
if [ $? -eq "0" ]; then
echo "${APP_NAME} is already running. pid=${pid} ."
else
# 后台运行
nohup ./account.wll &
fi
}
# 停止方法
stop(){
is_exist
if [ $? -eq "0" ]; then
echo kill $pid
kill -9 $pid
echo "${APP_NAME} killed"
else
echo "${APP_NAME} is already stopped"
fi
}
# 输出运行状态
status(){
is_exist
if [ $? -eq "0" ]; then
echo "${APP_NAME} is running. Pid is ${pid}"
else
echo "${APP_NAME} is not running."
fi
}
#重启
restart(){
stop
start
}
#重启
logs(){
tail -f $LOG_NAME
}
# 查看进程
proc(){
pid=`ps -ef|grep $APP_NAME | grep -v grep|awk '{print $2}' `
# 如果不存在返回1,存在返回0
if [ -z "${pid}" ]; then
echo "${APP_NAME} Process number ${pid}."
else
echo "${APP_NAME} Process number ${pid}."
fi
}
# 根据输入参数,选择执行对应方法,不输入则执行使用说明
case "$1" in
#"start")
# start
# ;;
"stop")
stop
;;
"status")
status
;;
"restart")
restart
;;
"logs")
logs
;;
"proc")
proc
;;
*)
usage
;;
esac
```
- 服务工具
- Go编程
- 开始
- 入门
- Java编程
- Spring编程
- SpringBoot编程
- SpringCloud编程
- 服务组件
- 环境浏览
- 版本查看
- 新建用户和用户组
- 初始化脚本
- 通用组件
- 安装Zookeeper
- 安装Jdk
- 安装Go
- 安装Nginx
- 安装Git
- 安装Maven
- 安装RabbitMQ
- 安装Node
- 容器部署
- 安装Docker
- 安装DockerCompose
- 安装Redis
- 安装Jenkins
- 安装Zookeeper
- 安装zentao
- 数据库搭建
- 安装MySQL
- 安装Oracle
- OSS存储搭建
- 安装MinIO
- 私服存储搭建
- 安装Gogs
- 安装Gitlab
- 安装Harbor
- 服务中心
- 高可用
- 配置中心高可用
- eureka注册中心高可用
- consul注册中心高可用
- nacos注册中心高可用
- 服务应用
- 微服务
- 单体服务
- 微信小程序
- 服务助手
- 比对工具
- 快速查询工具
- Postman工具
- 代码生成工具
- 数据库设计生成工具
- 服务生产
- 前端部署
- 后端部署
- 服务监控
- 链路监控
- Zipkin
- Pinpoint
- Skywarking
- ELK日志收集
- 服务企业
- 分表分库
- 任务调度
- XXL-JOB
- 缓存管理
- 文件系统
- 七牛云
- 阿里云
- Fastdfs
- MinIO
- MongoDB
- 聚合文档
- 灰度发布