Microservice-微服務-micro-環境搭建-ubuntu
1.系統
1.系統信息
sudo cat /proc/version
2.替換軟件源
sudo cp /etc/apt/sources.list /etc/apt/sources.list.backup
sudo sed -i 's/cn.archive.ubuntu.com/mirrors.aliyun.com/g' /etc/apt/sources.list
sudo sed -i 's/archive.ubuntu.com/mirrors.aliyun.com/g' /etc/apt/sources.list
# sudo sed -i 's/cn.security.ubuntu.com/mirrors.aliyun.com/g' /etc/apt/sources.list
# sudo sed -i 's/security.ubuntu.com/mirrors.aliyun.com/g' /etc/apt/sources.list
source /etc/apt/sources.list
3.升級
sudo apt-get upgrade -y
sudo apt-get update
sudo apt upgrade -y
sudo apt update
4.安裝必備軟件
sudo apt install -y vim
sudo apt-get install -y vim
sudo apt install -y git
sudo apt-get install -y git
sudo apt install -y wget
sudo apt-get install -y wget
sudo apt install -y curl
sudo apt-get install -y curl
sudo apt install -y net-tools
sudo apt-get install -y net-tools
sudo apt install -y openssh-server
sudo apt-get install -y openssh-server
sudo apt install -y bridge-utils
sudo apt-get install -y bridge-utils
sudo apt install -y dnsutils
sudo apt-get install -y dnsutils
sudo apt install -y tar
sudo apt-get install -y tar
sudo apt install -y unzip
sudo apt-get install -y unzip
sudo apt install -y tree
sudo apt-get install -y tree
sudo apt install -y make
sudo apt-get install -y make
sudo apt install -y g++
sudo apt-get install -y g++
sudo apt install -y gcc
sudo apt-get install -y gcc
sudo apt install -y autoconf
sudo apt-get install -y autoconf
sudo apt install -y automake
sudo apt-get install -y automake
sudo apt install -y python-pip
sudo apt-get install -y python-pip
sudo apt install -y python-dev
sudo apt-get install -y python-dev
sudo apt install -y libffi-dev
sudo apt-get install -y libffi-dev
sudo apt install -y openssl
sudo apt-get install -y openssl
sudo apt install -y openssl-dev
sudo apt-get install -y openssl-dev
sudo apt install -y gcc
sudo apt-get install -y gcc
sudo apt install -y libc-dev
sudo apt-get install -y libc-dev
sudo apt install -y make
sudo apt-get install -y make
sudo apt install -y libtool
sudo apt-get install -y libtool
sudo apt-get install -y teeapt-transport-https
sudo apt-get install -y ca-certificates
sudo apt-get install -y software-properties-common
sudo apt-get clean
sudo apt-get upgrade -y
sudo apt-get update
sudo apt upgrade -y
sudo apt update
2.Golang
1.下載安裝
cd ~ && wget https://dl.google.com/go/go1.14.2.linux-amd64.tar.gz
cd ~ && sudo tar -zxvf go1.14.2.linux-amd64.tar.gz -C /usr/local
ls /usr/local/ | grep go
2.設置環境變量
mkdir -p ~/workspace/go/bin ~/workspace/go/src ~/workspace/go/pkg && tree ~/workspace/go/
sudo tee -a /etc/profile <<-'EOF'
export GOROOT=/usr/local/go
export GOPATH=~/workspace/go
export GOBIN=$GOPATH/bin
export GO111MODULE="on"
export GOPROXY=https://goproxy.io
export PATH=$PATH:$GOROOT/bin:$GOPATH:$GOBIN:$GOPROXY
EOF
source /etc/profile
3.測試
go env
go version
2.Docker
1.docker
1.下載安裝
sudo apt-get upgrade -y
sudo apt-get update
sudo apt upgrade -y
sudo apt update
sudo apt-get -y install apt-transport-https ca-certificates curl software-properties-common
curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] https://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"
sudo apt-get -y update
sudo apt update
# 安裝docker
sudo apt-get -y install docker-ce
sudo groupadd docker
sudo gpasswd -a ${USER} docker
sudo service docker restart
newgrp - docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": [
"https://1nj0zren.mirror.aliyuncs.com",
"http://f1361db2.m.daocloud.io",
"https://registry.docker-cn.com",
"https://dockerhub.azk8s.cn",
"https://docker.mirrors.ustc.edu.cn",
"https://reg-mirror.qiniu.com",
"https://hub-mirror.c.163.com",
"https://mirror.ccs.tencentyun.com",
"https://docker.mirrors.ustc.edu.cn"
]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
2.測試
docker info
docker version
2.docker-compose
1.下載安裝
cd ~
mkdir -p ~/.pip && cd $_ && tee ~/.pip/pip.conf <<-'EOF'
[global]
trusted-host=mirrors.aliyun.com
index-url=http://mirrors.aliyun.com/pypi/simple/
EOF
source ~/.pip/pip.conf
sudo apt install -y python-pip python-dev libffi-dev openssl-dev gcc libc-dev make
sudo pip install docker-compose
2.測試
docker-compose version
3.protobuf
1.protobuf
1.解決git clone速度慢
sudo cp /etc/hosts /etc/hosts.backup
curl -skX GET 'https://github.com.ipaddress.com/' | grep -oP '<th>IPv4 Addresses</th><td><ul class="comma-separated"><li>.*?</li>'| grep -oP '[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+'| awk '{print $1" github.com"}'> ~/myhosts
curl -skX GET 'https://fastly.net.ipaddress.com/github.global.ssl.fastly.net' | grep -oP '<th>IPv4 Addresses</th><td><ul class="comma-separated"><li>.*?</li>'| grep -oP '[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+'| awk '{print $1" github.global.ssl.fastly.net"}'>> ~/myhosts
sudo /bin/bash -c 'cat ~/myhosts>>/etc/hosts'
cat /etc/hosts
sudo service networking restart
rm -f ~/myhosts
2.下載安裝
cd ~
git clone https://github.com/protocolbuffers/protobuf.git && ls | grep protobuf
# 開始安裝
cd ./protobuf
git submodule update --init --recursive
./autogen.sh
./configure
make
make check
sudo make install
sudo ldconfig # [很重要]刷新共享庫
3.測試
protoc --version
protoc --help
sudo cp /etc/hosts.backup /etc/hosts
sudo service networking restart
2.golang-protobuf
1.下載安裝
go get -u -v github.com/golang/protobuf/...
cd $GOPATH/bin && ls -la | grep protoc-gen-go
sudo tee -a /etc/protofile <<-'EOF'
export PATH=$PATH:$GOPATH/bin
EOF
source /etc/profile
2.測試
終端輸入protoc-,然後按下Tab鍵查看是否補全,補全即OK!
protoc-
4.gRPC
1.下載安裝
go get -u -v google.golang.org/grpc/...
2.測試
1.server啓動
cd $GOPATH/pkg/mod/google.golang.org/grpc*/examples/helloworld/*_server && ls
cd $GOPATH/pkg/mod/google.golang.org/grpc*/examples/helloworld/*_server && go run main.go
2.client啓動(另開一個終端)
cd $GOPATH/pkg/mod/google.golang.org/grpc*/examples/helloworld/*_client && ls
cd $GOPATH/pkg/mod/google.golang.org/grpc*/examples/helloworld/*_client && go run main.go
5.consul
1.下載安裝
cd ~ && sudo apt install -y wget unzip
wget https://releases.hashicorp.com/consul/1.7.2/consul_1.7.2_linux_amd64.zip && ls
sudo unzip ./consul_1.7.2_linux_amd64.zip -d /usr/local/bin/
2.測試
consul
6.micro
1.不支持consul註冊服務【默認mdns/etcd】
1.下載
go get -u -v github.com/micro/micro/...
2.編譯安裝
cd $GOPATH/pkg/mod/github.com/micro/ && ls |grep micro
選擇版本進入編譯到/bin/目錄下,名稱爲micro,源文件爲main.go
cd $GOPATH/pkg/mod/github.com/micro/[email protected]
sudo $GOROOT/bin/go build -o /bin/micro main.go
3.插件安裝
go get -u -v github.com/golang/protobuf/{proto,protoc-gen-go}
go get -u -v github.com/micro/protoc-gen-micro
4.測試
micro --version
micro --help
2.支持consul註冊服務
在生成的srv服務進行修改main.go即可
原main.go
package main
import (
"github.com/micro/go-micro/util/log"
"github.com/micro/go-micro"
"micro/rpc/srv/handler"
"micro/rpc/srv/subscriber"
srv "micro/rpc/srv/proto/srv"
)
func main() {
// New Service
service := micro.NewService(
micro.Name("go.micro.srv.srv"),
micro.Version("latest"),
)
// Initialise service
service.Init()
// Register Handler
srv.RegisterSrvHandler(service.Server(), new(handler.Srv))
// Register Struct as Subscriber
micro.RegisterSubscriber("go.micro.srv.srv", service.Server(), new(subscriber.Srv))
// Register Function as Subscriber
micro.RegisterSubscriber("go.micro.srv.srv", service.Server(), subscriber.Handler)
// Run service
if err := service.Run(); err != nil {
log.Fatal(err)
}
}
修改後【中文註釋部分即爲修改部分】:
package main
import (
"micro/rpc/srv/handler"
"micro/rpc/srv/subscriber"
"github.com/micro/go-micro"
"github.com/micro/go-micro/util/log"
srv "micro/rpc/srv/proto/srv"
"github.com/micro/go-micro/registry" // 添加註冊插件
"github.com/micro/go-plugins/registry/consul" // 添加註冊插件的consul支持
)
func main() {
// consul註冊
consulReg := consul.NewRegistry(
registry.Addrs("127.0.0.1:8500"),
)
// New Service
service := micro.NewService(
micro.Name("go.micro.srv.srv"),
micro.Version("latest"),
micro.Registry(consulReg), // micro添加consul的註冊
)
// Initialise service
service.Init()
// Register Handler
srv.RegisterSrvHandler(service.Server(), new(handler.Srv))
// Register Struct as Subscriber
micro.RegisterSubscriber("go.micro.srv.srv", service.Server(), new(subscriber.Srv))
// Register Function as Subscriber
micro.RegisterSubscriber("go.micro.srv.srv", service.Server(), subscriber.Handler)
// Run service
if err := service.Run(); err != nil {
log.Fatal(err)
}
}
重新run[consul 一定要開啓consul agent -dev]即可
go run main.go