zoukankan      html  css  js  c++  java
  • 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

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

    好了。成功!

  • 相关阅读:
    [摘录]C++ GUI库大全
    ascii 表
    ubuntu 7.04 Feisty Fawn 安装手记之二:基本配置
    二叉排序树之删除结点
    二叉树与数组
    二叉树删除,重建,交换
    二叉树判断相等,复制
    链表扩展是否有环及环的第一个结点
    二分查找
    二叉排序树之按大小遍历
  • 原文地址:https://www.cnblogs.com/fcppl/p/14735236.html
Copyright © 2011-2022 走看看