Go后端部署服务器

go后端部署服务器方式一:(最简单)

和暑假做重点场所项目部署一样,简单,无脑,手动,麻烦
Go后端部署服务器_第1张图片

1# 修改(确保)环境,因为服务器是linux系统
go env -w GOOS=linux
2# 打包
go build -o main # 或者go build main.go
3# xftp传main和config.yaml文件到服务器的某个文件夹下去
chmod +x main 
nohup ./main -c config.yaml > start.log 2>&1 &
# 到这就可以了

4# 之后的话可以写个脚本例如:start.sh
kill -9 "$(pgrep -f main)" 
chmod +x main 
nohup ./main -c config.yaml > start.log 2>&1 &
echo "OK" 
# 上边1、2、3步骤还要做,之后只需要运行这个脚本就可以了

检查

ps -ef|grep main 看进程号有,证明启动了

tail -f start.log 看start.log日志的最后几行

go后端部署服务器方式二(docker):

很简单啦

步骤:
1、整一个centos容器
2、整一个mysql容器,有用mysql软件的话,倒也不用这一步
3、整一个nginx容器,有用nginx软件的话,倒也不用这一步,当然了如果你在配置centos容器时候加了-p linux端口:容器端口那就也不需要nginx代理了

下面是具体的命令啦,不太适合小白,因为解释偏少,但是都是实践过的,我亲自这样做的,每一个命令我可能敲不知道几十遍了(排除dockerfile这种)
他当然有优势了,那就是简短,欸,给懂的人看,例如我,那真叫一个方便

当然还有不足,例如我还没用上git,之后来补上

# dockerfile配置镜像centos_go
# dockerfile内容
FROM centos:7.9.2009
ENV MYPATH /home/project/colorful_moments
WORKDIR  $MYPATH
RUN yum -y update \
&& yum -y install vim \
&& yum -y install git \
&& yum install -y gcc-c++ \
&& yum -y install wget \
&& wget -P /home/ https://studygolang.com/dl/golang/go1.18.linux-amd64.tar.gz \	
&& tar -zxvf /home/go1.18.linux-amd64.tar.gz -C /usr/local \					
&& echo export PATH=$PATH:/usr/local/go/bin >> /etc/profile \
&& source /etc/profile && go version \
&& echo "source /etc/profile" >> /root/.bashrc \
&& go env -w GOPROXY=https://goproxy.cn,direct \
&& go env -w GO111MODULE=on \
# 在/home/project/colorful-moments/server下构建镜像
docker build -t centos_go:7.9.2009 .

# 配置centos_colorful容器
docker run -it -v /home/project/colorful_moments/:/home/project/colorful_moments --name centos_colorful centos_go:7.9.2009 /bin/bash

# 配置mysql_colorful容器
docker run -d -p 3306:3306 -v /home/mysql/datadir:/var/lib/mysql -v /home/mysql/conf:/etc/mysql/conf.d -v /home/mysql/logs:/var/log/mysql -e MYSQL_ROOT_PASSWORD=xxxxxx --name mysql_colorful mysql:latest

# 配置nginx_colorful容器
docker run --name nginx-test -d nginx  # 创建一个容器
mkdir /home/project/nginx  # 在我们的project文件夹中创建一个nginx文件夹用来存放nginx方面的内容
docker cp nginx-test:/etc/nginx/nginx.conf /home/project/nginx/  # 从nginx容器中复制出配置文件 (不需要进入到容器中)
docker cp nginx-test:/etc/nginx/conf.d /home/project/nginx/
docker stop nginx-test  # 停止容器运行
docker rm nginx-test  # 删除测试容器

docker run -it --name nginx_colorful --net host -v /home/project/nginx/nginx.conf:/etc/nginx/nginx.conf -v /home/project/nginx/conf.d:/etc/nginx/conf.d -v /home/project/nginx/logs:/var/log/nginx -d nginx

cd /home/project/nginx/conf.d
cp default.conf colorful_moments.conf
vim colorful_moments.conf

更改编辑内容为如下(原来的删掉就行)

nginx到底是干嘛的?意思是:我访问47.113.189.136:80端口跳转到该服务器也还是47.113.189.136的172.18.0.2:8888这个地方访问,这应该就是nginx代理了,它的好处是访问服务端口修改简单,只需要把80改为你想要的就可以,但好处应该不止于此

upstream myserver {
    server 172.18.0.2:8888; # 容器ip(cat etc/hosts命令查看):这个服务对应的端口号(config.yaml中看)
}

server {
    listen 80;
    listen  [::]:80; 
    client_max_body_size 20m;
    server_name 47.113.189.136;  # 你的服务器地址

    location / {
	proxy_pass http://myserver;			# 后端访问端口
    	proxy_set_header   Host    $host;
    	proxy_set_header   X-Forwarded-Proto  $scheme;
    	proxy_set_header   X-Real-IP   $remote_addr;
   	 proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;	
	}
}

接着

docker restart nginx_colorful

用上git

首先因为新买的服务器之前也没整过公钥密钥,大家看我之前写的整:https://blog.csdn.net/EGXXM/article/details/123494440
1-0看完就可以了
当然更推荐阿里云官方教程(真可谓优雅):https://help.aliyun.com/document_detail/153709.html

# 需要注意的是会多这几步,意思如下
Enter file in which to save the key (/root/.ssh/id_rsa): /root/.ssh/id_rsa   # 意思是输入要保存的文件,直接写/root/.ssh/id_rsa
Enter passphrase (empty for no passphrase): 			# 输入密码:我输入的是空
Enter same passphrase again:							# 再输入一次,空
# 接着咱们 cat id_rsa.pub ,把内容ctrl+inx复制一下
# 接着去云效,右上角,点头像,个人设置-》左侧ssh公钥,添加即可,这里也有写如何生成它,有两种,大家可以学一下

接着大家直接就可以在这个容器里,git clone [email protected]…你仓库的ssh地址,拉取代码,之后更新只需要git pull origin dev更新就可以了,这已经属于是git的内容了,大家可以看狂神和网上教git的学习资料学一下,例如我的:https://blog.csdn.net/EGXXM/article/details/123494440
接着,咱们就可以go build main.go啦,然后把start.sh脚本移动过来,运行一下啦

另外补充:

提交centos_go镜像到Dockerhub以及阿里云镜像服务仓库,但是都不太建议,我的centos_go镜像有1.2个G,因为实际测试都贼拉慢,所以你可以找个几百M的镜像发布一下玩玩,学学就可,平时直接用dockerfile构建镜像就行

# 提交centos_go镜像到Dockerhub
# 官网地址:https://hub.docker.com/
docker login -u Douckerhub注册的名字 # 登录Douckerhub
Douckerhub密码
docker tag 5ae0e71be350 jingzhi21/centos_go:7.9.2009
docker push jingzhi21/centos_go:7.9.2009

# 提交centos_go镜像到阿里云镜像服务仓库
# 阿里云镜像服务地址,有三个免费额度:https://cr.console.aliyun.com/cn-shanghai/instance/repositories
$ docker login --username=景之爱code registry.cn-shanghai.aliyuncs.com
# 输入阿里云账号的密码
docker push jingzhi21/centos_go:7.9.2009    # 以下两步也可以直接用这个一步
# docker tag [ImageId] registry.cn-shanghai.aliyuncs.com/go_jingzhi/jingzhi_centos_go:[镜像版本号]
# docker push registry.cn-shanghai.aliyuncs.com/go_jingzhi/jingzhi_centos_go:[镜像版本号]

# 之后可以docker logout登出
# 之后大家用我的可以直接拉取:$ docker pull registry.cn-shanghai.aliyuncs.com/go_jingzhi/jingzhi_centos_go:7.9.2009

你可能感兴趣的:(go,golang,服务器,运维)