Linux+git+Docker+nginx+Jenkins模拟负载均衡继承自动化发布.NetCore项目

1、服务器准备

首先需要一台服务器,因为是自己用的,所以我的服务器是在阿里云买的最低配新人价,可以直接买3年,linux服务器CentOS系统,具体购买教程就不说了。

2、系统更新

如果是新买的或初始化的系统,最好更新一下,避免一些老版本的依赖用不了或者缺少依赖。

sudo yum update

 

更新过程会有点慢,等待出现Complete即更新成功!

3、Docker安装

卸载旧版本Docker,如果是新机可以不执行。Docker安装一定要最先执行,因为我的服务器是CentOS8版本,在安装完git、nginx、sdk后有莫名原因导致Docker安装不全,导致Docker命令不能执行,试过网上很多方法都得不到解决。经过反复测试Docker在系统更新后直接安装没有问题。有知道解决方案得小伙伴可以告诉下吗

sudo  yum remove docker-ce

Step 1: 安装必要的一些系统工具
    sudo yum install -y yum-utils device-mapper-persistent-data lvm2

Step 2: 添加软件源信息
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

Step 3: 更新并安装Docker-CE
    sudo yum -y install docker-ce

Step 4: 开启Docker服务
    sudo service docker start

设置docker开机启动

systemctl enable docker

启动docker

systemctl start docker

查看版本

docker --version
4、git安装
sudo yum -y install git

安装完成后查看git版本

git --version

新建一个文件夹用来存储源码

mkdir pro

切换到新建的pro文件夹中,下载源码。我的源码是放到码云中的,因为是自己的项目,自己的项目如果放到github的话,会被折磨的心态炸裂。

cd pro
git clone https://gitee.com/xxxx/xxx.git

下载时会让输入你git的账号和密码,就是你的码云账号密码。账号在输入的时候会显示,密码是不显示的,也没有*之类的代替,就是看不见,所以不要以为是没有输入成功。输入完成后回车就开始下载了

下载完成后切换到项目文件夹,git pull一下,更新下代码

可以看到又让输入git账号密码,这个时候Ctrl+C退出,然后运行命令,使git记录账号密码缓存

git config --global credential.helper store

执行后继续git pull代码,输入一次账号密码,之后再对git操作就不需要输入账号密码了。

5、安装nginx
sudo yum install nginx

启用和启动服务:

sudo systemctl enable nginx
sudo systemctl start nginx

6、NetCoreSDK安装
sudo rpm -Uvh https://packages.microsoft.com/config/centos/7/packages-microsoft-prod.rpm
sudo yum install dotnet-sdk-3.1

查看sdk版本

dotnet  --list-sdks

7、本地发布

为了确保项目没有问题,首先在本机发布后上传到服务器,再通过Docker生成容器,避免后续出错难以定位错误原因。

首先添加Dockerfile文件,我的习惯是直接自己新建,不用VS生成的。

Dockerfile文件一定要设置为始终复制,否则发布时带不出去。

发布成功后点击目标位置后面的路径,找到发布后的publish文件夹。

之后到服务器中创建存放发布文件的文件夹

然后将我们发布后的publish文件夹上传到服务器的netcore文件夹中,上传后切换到publish文件夹中。

 

接下来通过Docker发布

docker build -t technologystacksummary .
docker run --name=technologystacksummary -p 15672:80 -v /log:/app/log -d technologystacksummary

生成镜像后根据镜像生成容器,build镜像时注意后面的.一定要有

通过

docker ps

查看容器是否正常运行,存在即运行成功,可以通过浏览器访问一下。

8、通过nginx转发模拟负载均衡

打开nginx.conf文件,在/etc/nginx/文件夹中,为了避免改错,我直接用记事本打开。

删掉其余部分,只留下server和event就可以。

修改配置

修改后重启一下nginx服务

nginx -s reload

重启后删除原容器,重新生成一个端口是15671的容器,然后浏览器访问15672端口看是否正常请求我们的容器。

docker rm -f technologystacksummary
docker run --name=technologystacksummary -p 15671:80 -v /log:/app/log -d technologystacksummary

 

哇瑞古德,成功!

接下来模拟负载均衡。在原有镜像上多生成几个容器,换个端口和容器名就可以模拟微服务了。

docker run --name=technologystacksummary1 -p 15673:80 -v /log:/app/log -d technologystacksummary

以此类推,我们先创建四个。

创建完成后修改nginx配置文件模拟负载均衡。

然后重启一下

nginx -s reload

直接在浏览器访问15672端口,查看响应头

这两个就是本次请求转发的地址,可以多请求几次,亲眼看到它转发了所有不同的端口服务才放心。用这种方式看主要是我不想改代码了,能改我不改,就是玩儿!也可以直接在项目中获取地址。

负载均衡就是这么简单!

9、Jenkins持续集成自动部署

安装java的SDK

yum install -y java

接下来安装Jenkins,这个鬼东西是很慢的

1.wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/redhat/jenkins.repo
2.rpm --import https://jenkins-ci.org/redhat/jenkins-ci.org.key
3.yum install -y jenkins --nogpgcheck

如果安装不了,就换个方式,下载rpm包

1.wget http://pkg.jenkins-ci.org/redhat-stable/jenkins-2.7.3-1.1.noarch.rpm
2.rpm -ivh jenkins-2.7.3-1.1.noarch.rpm

最好用第一种方式安装,因为第二种直接用rpm安装会缺少东西。很麻烦

我回来了....经过一个多小时的下载,这个鬼东西终于下载完了。

按照上面步骤安装完后,配置一下Jenkins端口,可以不用配置,最好还是换一下,避免端口冲突

vi /etc/sysconfig/jenkins

重启一下Jenkins

service jenkins restart

在浏览器中访问

首次进入会要求输入初始密码如下图,

初始密码在:/var/lib/jenkins/secrets/initialAdminPassword

输入密码后会让安装插件

 

选择第二个,然后直接点安装即可。安装完后会让创建管理员用户,随便创建即可,自己记住账号密码。

进入后创建任务

随便起个名字,点击创建自由风格的项目

 创建后配置工作区

 

 git配置好后,添加构建部分

因为是安装在linux服务器,也是在linux进行发布,所以选择sh

 sh批处理命令添加完后保存。批处理命令最好先放到服务器中手动运行一下,避免出错。

 保存后点击Dashboard返回主工作区目录,找到自己创建的工作,点击立即构建。

 构建完成后,点击TechnologyStackSummary名称进入工作区。

点击这里,是每次构建的记录。

 找到控制台输出,这里是构建的日志,包括错误日志。

 可以看到是git的问题,在最下方可以看到是git权限问题。这里需要注意的是现在jenkins的用户默认就是jenkins,所以没有权限。我们需要修改一下jenkins的配置文件,将用户修改为root。

网上有暴力方法,直接将需要权限的更改为所有用户均可用,就是

chorm -R 777 xxx

 这种方式不仅麻烦,而且不安全,jenkins在使用时,需要权限的地方很多,通过这种方式每一个涉及到的文件及文件夹都要处理。

打开配置文件

vi /etc/sysconfig/jenkins

 修改完成后,执行命令

chown -R root:root /var/lib/jenkins
chown -R root:root /var/cache/jenkins
chown -R root:root /var/log/jenkins

重启jenkins

service jenkins restart

按照上面步骤重新构建下项目。

好了。成功!

原文地址:https://www.cnblogs.com/fcppl/p/14735236.html