## 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
- 聚合文檔
- 灰度發布