保姆级服务器部署终极篇Golang

服务器部署两种方式

服务器内部部署

也叫简单部署,你只需要把main二进制文件和所需要的环境 .conf或者.yaml文件 放在你服务器的你指定的文件夹中,然后指定好日志文件,把进程跑起来就完事儿了
详细操作过程直接看我的上一篇博客就行

docker容器部署

概述:容器就相当于一个集装箱,也就是一个独立的空间,你可以任意搭配任意需要的环境版本,而且开启和删除一个容器的成本很低。

操作步骤

一、在服务器上下载git

首先项目部署你需要有一个dockerfile文件去生成镜像然后生成容器,但是比这更之前就是需要把你的代码放在你指定的一个文件夹下面,怎么去放两种方式,

第一种就是用Xftp手动去上传

保姆级服务器部署终极篇Golang_第1张图片

第二种就是git去拉取

这是因为程序员要有程序员的方式进行拉取代码会更帅一点儿。
把你的项目上传到远程的代码仓库,这个不固定,我用的是Coding云效,然后在你的服务器上下载git,配置好SSH公钥之后拉取就行。因为你在容器里面也要选择这种方式,就是你的项目一旦更新新的提交了只需要拉取远程代码之后编译执行就可以,很方便。
1.下载git
这个找一篇博客跟着下载就可以
https://blog.csdn.net/csdnerM/article/details/122100354
2.配置远程仓库的SSH公钥
也有人说用https也可以,是的但是一般需要输入自己的账号密码进行验证,你可别输错就行,反正我是记不住密码,这个你就看官方给的配置教程就好了,没啥说的,人家说推荐使用默认地址就跟着人家教程来,别一身反骨,然后报错自己又找一大堆博客也解决不掉
https://coding.net/help/docs/repo/ssh/config.html
3.在你的服务器你创建好的项目目录下面输入命令就可以拉取了
git clone [ssh的克隆地址]

构建自己项目的dockerfile文件

dockerfile文件你可以学习一下怎么去构建每一步都代表什么意思,但是这边是保姆级所以建议你直接拿去用,
上面容器内说过也是需要git的,但是dockerfile文件里已经写好了,所以你到时候就不用再来一遍下载了,只需要配置SSH公钥就可以了

FROM centos:7.9.2009
ENV MYPATH /root/project
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 /root/ https://studygolang.com/dl/golang/go1.17.11.linux-amd64.tar.gz \
&& tar -zxvf /root/go1.17.11.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 \

通过dockerfile文件构建镜像

docker build -f Dockerfile -t interview_serve .

其中Dockerfile是dockerfile文件的文件名字  -t后面的是镜像名字  后面还有一个点别忘记了

构建好镜像根据镜像开启容器

docker run -it -v /root/project/interview_front-desk:/root/project/interview_front-desk -p 8085:8085  --name interview_serve interview_serve /bin/bash

前面-v是用来挂载也就是让你的服务器那个位置的项目与容器内的项目保持一致  -p用来规定端口号 --name后面加容器名字 再后面加上镜像名字

容器构建好之后进入容器执行脚本文件就可以

脚本文件就是.sh文件。

time1=$(date "+%Y-%m-%d-%H:%M")
cp main ./backup/${time1}
git pull origin master
go build main.go
kill -9 "$(pgrep -f main)"
nohup ./main > start.log 2>&1 &
echo "OK"  

前两行是把main二进制文件复制放进文件夹backup中方便你遇到问题回滚
第三行是拉取代码从远程仓库
第四行是编译项目生成二进制文件 在容器里面的文件不需要再赋予权限
第五行是杀死老进程
第六行是开启新进程 其中规定好把日志写进start.log文件中 如果你有多个环境也可以规定详情请看服务器内部部署的博客
第七行是打印一个OK

最后总结一下需要用到的常用命令

ls
查看所处文件夹下的文件

cd ..
退出该文件夹返回该文件夹上一级

docker ps 
查看现在正在运行的进程

docker ps -a
查看所有的进程

docker images
查看所有的镜像

cat +文件名
查看文件的前几行

tail -f 日志名
查看正在进行的日志

less 日志文件
可以分页滚动看日志

netstat -tuln
查看端口

lsof -i:端口号
查看端口号进程

grep -c "接口名称" /path/to/logfile.log
查看日志文件接口被调用次数命令

ps -ef|grep main
查看mian进程

nohup ./main -c config.dev.yaml > start.log 2>&1 &
指定运行的环境和日志文件

你可能感兴趣的:(docker,golang,开发语言,后端)