• 学习git(一)


    一、自动化运维

    1、网络层(接入层、汇聚层、核心层);

    1 LB+HA(L4、L7);
    2 服务层(reverse proxy cache、应用层、web层、SOA层、分布式层、DAL);
    3 数据层(分布式缓存、NoSQL、DB);
    4 系统层(环境初始化)
    5 基础设施(IDC托管、设备上下架);

    2、自动化实现:

    1 网络层(SDN,softwaredefinition network);
    2 LB+HA(平台开发、IaaS);
    3 服务层(PaaS or docker(自动化调度、自动化开发、自动化发现(服务发现、服务注册));reverse proxy cache(第三方平台开发);应用层(自定义开发);web层、SOA层、分布式层、DAL(saltstack,saltcloud,有docker模块、消息));
    4 数据层(DAL);
    5 基础设备、系统层(IaaS,openstack);

    3、安全:

    1 网络层(firewall);
    2 LB+HA、服务层(WAF,web application firewall)
    3 数据层(如DB权限);
    4 系统层(tcp wrapper);
    5 基础设施(物理安全);

     4、备份:

     1 网络层(HSRP、VRRP);
     2 LB+HA(VRRP);
     3 数据层(DB备份);
     4 服务层中的web层(saltstack);
     5 核心层(网关设备(outside、inside)、防火墙、router);
     6 汇聚层(三层交换;动态路由、静态路由、EC、端口汇聚);
     7 接入层(二层交换;VTP、SPF、trunk、port安全);
     8 L4(LVS、F5's BigIP、Citrix's Netscaler、A10);
     9 L7(haproxy、nginx);
    10 DAL、专业团队做(taobao'sTDDL、360);
    11 分布式层(分布式存储(glusterfs、moosefs、fastDFS);分布式MQ(rabbitMQ、QPID、zeroMQ));
    12 SOA层、服务化(应用服务层duddo、基于restfull api开发);
    13 web层(httpd、nginx、tomcat、jboss、resin);
    14 应用层、应用变更ittle(php、java、python、C、C++);
    15 reverse proxy cache(ATS、squid、varnish;CDN(配置同步;流量统计;预缓存;缓存更新;日志分析;智能DNS));
    16 DB(MySQL、Oracle、postgre SQL、SQLserver、access);
    17 NoSQL(mongodb、redis、couchbase、elasticsearch);
    18 分布式缓存(memcached、redis);
    19 环境初始化(性能优化;监控agent;自动化管理saltstack minion;内部DNS;limit(例如tcp wrapper限制仅跳板机ssh到server);
    20 设备上下架(网络配置;标签;自检(配货单与实物对比);raid;iDrac|ILO|IMM;OS安装;资产录入(分层设计)——合同管理(采购方-采购时间-采购人-联系信息)——保修时间——地点——配置详情——MDB配置项(OS类型-IPv4,RIP,VIP,IPMI,hostname)——服务层面);
    21 IDC托管(熟悉各大IDC厂商;根据业务类型选择;网络测试;谈价格、走合同;设备采购(需求分析、采购、上下架));

    5、运维标准化(版本、路径、服务、OS……);

    6、运维边界:

    1 运维边界模糊化(掌握尽可能多的知识点);
    2 运维开发(后端>前端,重点在后端);

    7、自动化运维发展阶段:

    1 标准化、工具化(标准化运维;运维标准化、操作工具化、变更流程化);
    2 web化、平台化(web化运维;操作web化、权限控制、弱化流程、统计分析、统一调度);
    3 服务化、api化(DNS服务、LB服务、监控服务、分布式缓存服务、分布式存储服务、CMDB);
    4 智能化;

    8、服务器生命周期:

    服务器上架-->网络配置-->raid配置-->IPMI
    服务器上架-->环境部署-->运维变更-->(服务更新-->代码更新-->服务扩容&缩容);(服务下线,服务器下线)
    环境部署(OS安装(cobbler);服务部署(saltstack);应用代码部署(saltstack&shell);监控配置(zabbix);加入运行集群(LVS&haproxy))

    9、持续集成、持续部署:

     

    二、git简介

    分布式的版本控制系统;
    diff(2002年之前)-->bitkeeper(2002年)-->git(不要逼我);
    集中式;
    分布式(中央服务器用于交换代码);
    https://www.git-scm.com/
    注:不要拿git与svn相对比,git只能管理文本文件,不能管理picture;
    https://github.com/jowinchaitest,github源码托管,开源项目,代码管理,控制工具;

     三、安装部署

    yum install git                                  #安装git
    git config –global user.name “tom”               #配置git用户
    git config –global user.email “tom@qq.com”       #配置git邮箱
    git config –global color.ui true                 #配置颜色
    git config –list                                 #查看配置信息

    四、git常用命令

    add         #添加文件内容至索引
    bisect      #通过二分查找定位引入 bug 的变更
    branch      #列出、创建或删除分支
    checkout    #检出一个分支或路径到工作区
    clone       #克隆一个版本库到一个新目录
    commit      #记录变更到版本库
    diff        #显示提交之间、提交和工作区之间等的差异
    fetch       #从另外一个版本库下载对象和引用
    grep        #输出和模式匹配的行
    init        #创建一个空的 Git 版本库或重新初始化一个已存在的版本库
    log         #显示提交日志
    merge       #合并两个或更多开发历史
    mv          #移动或重命名一个文件、目录或符号链接
    pull        #获取并合并另外的版本库或一个本地分支
    push        #更新远程引用和相关的对象
    rebase      #本地提交转移至更新后的上游分支中
    reset       #重置当前HEAD到指定状态
    rm          #从工作区和索引中删除文件
    show        #显示各种类型的对象
    status      #显示工作区状态
    tag         #创建、列出、删除或校验一个GPG签名的 tag 对象

     五、git基本操作

    1、git提交数据

    mkdir tom
    cd tom
    git init                            #初始为git工作目录
    echo 111 > readme.txt
    git status                          #查看git状态
    git add readme.txt                  #git添加文件至暂存区
    git status                          #再次查看状态
    git commit -m “this is 1 commit”    #git cmmit提交暂存取文件至git版本仓库

    2、git移除数据

    touch aa.txt
    git add aa.txt                 #添加文件至暂存区
    git status
    git rm –cached aa.txt          #将文件从git暂存区域的追踪列表移除(不会删除文件的数据)
    git status
    
    将文件数据从git暂存区和工作目录一起删除 git add aa.txt git rm –f aa.txt #强制删除
    -f参数 ls git status

     3、git移动数据

    方法一:
    git mv readme.txt test.txt         #修改文件名称
    git status
    git commit -m “changed name” 
    方法二:
    mv test.txt readme.txt             #先修改名称
    git rm test.txt                    #然后删除git版本仓库内的文件快照
    git add readme.txt                 #最后再将新的文件添加进入
    git commit -m “changed  name”      #提交至git版本仓库

    4、git历史记录

    git log                        #查看提交历史记录
    git log -2                     #查看最近几条记录
    git log -p -1                  #-p显示每次提交的内容差异,例如仅查看最近一次差异
    git log –stat -2               #–stat简要显示数据增改行数,这样能够看到提交中修改过的内容,
    对文件添加或移动的行数,并在最后列出所有增减行的概要信息 git log –pretty
    =oneline #–pretty根据不同的格式展示提交的历史信息 git log –pretty=fuller -2 #以更详细的模式输出提交的历史记录 git log –pretty=fomat:”%h %cn” #查看当前所有提交记录的简短SHA-1哈希字串与提交着的姓名
    还可以使用format参数来指定具体的输出格式,这样非常便于后期编程的提取分析哦,常用的格式有:
    %s 提交说明。 %cd 提交日期。 %an 作者的名字。 %cn 提交者的姓名。 %ce 提交者的电子邮件。 %H 提交对象的完整SHA-1哈希字串。 %h 提交对象的简短SHA-1哈希字串。 %T 树对象的完整SHA-1哈希字串。 %t 树对象的简短SHA-1哈希字串。 %P 父对象的完整SHA-1哈希字串。 %p 父对象的简短SHA-1哈希字串。 %ad 作者的修订时间。

    5、git还原数据

    echo “hello word” >> readme.txt     #追加一段话
    git add readme.txt                  #添加至暂存区
    git commit -m “test”                #提交至git版本仓库
    git log –pretty
    =oneline #查看提交的历史信息 git reset –hard HEAD^ #还原历史提交版本上一次 cat readme.txt #查看文件内容(已经还原)
    git log –pretty
    =oneline git reflog #查看未来历史更新点 git reset –hard 4bf5b29 #找到还原点的SHA-1值,就可以还原(值不写全,系统会自动匹配) echo “hello tom” >> readme.txt git checkout — readme.txt #还原某个文件 cat readme.txt
    规则:如果暂存区中有该文件,则直接从暂存区恢复。如果没有该文件,将还原成最近一次提交的快照。

    六、git管理分支结构

    1、创建分支

    git branch linux                        #创建分支
    git checkout linux                      #切换分支
    git branch                              #查看当前分支情况,标示为*号
    
    echo “Create new branch” >> readme.txt  #我们对文件追加一行字符串
    git add readme.txt                      #提交到暂存区
    git commit -m “new branch”              #提交到git版本仓库
    
    git checkout master                     #切回master分支
    cat readme.txt                          #查看文件内容,并没有新追加的字符串
    分支可以理解为:目录、数据库

    2、合并分支

    git branch              #查看是否在master分支
    git merge linux         #合并Linux分支至master
    cat readme.txt          #查看合并后的readme文件
    git branch -d linux     #确认合并完成后,删除Linux分支
    git branch              #查看分支

    3、分支冲突

    git checkout -b linux          #创建并切换到该分支
    echo “1 hello” >> readme.txt   #追加一行内容
    git add readme.txt             #在Linux分支添加readme至暂存区
    git commit -m “create two”     #在Linux分支提交readme
    
    git checkout master #切换到master分支 echo "2 tom" >> readme.txt #在master分支上追加同一行内容 git add readme.txt #添加至暂存区 git commit
    -m ‘to master’ #提交至Git版本仓库
    git merge linux #合并Linux分支(冲突) cat readme.txt #冲突内容 git status #可获取冲突原因
    解决冲突:手动编辑好,add到缓存区,再commit,最后合并两分支 vim readme.txt
    git add readme.txt #再次添加至暂存区 git commit
    -m ‘config’ #提交至git版本仓库 git merge linux #合并Linux分支

    七、git管理标签

    cd tom/                       #进入git版本控制系统
    git tag v1.0                  #当前分支打一个标签(方便快速回滚)
    git tag                       #查看当前所有的标签
    git show v1.0                 #查看当前1.0版本的详细信息
    git tag v1.2 -m “v1.2”        #创建带有说明的标签,-a指定标签名字,-m指定说明文字
    git tag -d v1.0               #删除之前的v1.0
    git tag                       #再次查看,v1.0已经被删除

    八、持续集成

    markdown编辑器(是一种可以使用普通文本编辑器编写的标记语言)
    
    标题:
    #表示一级标题,##、###、####、#####、######,共支持6级标题
    
    列表:
    列表分有序列表和无序列表,无序列表用*或-;只有空格或tab的就是一个空行;
    
    引用:
    > hello,word
    [ ]( )   #(链接,网页引用,广告链接)
    ![ ]( )  #(图片引用,图片广告)
    
    代码框:
    例1:
    <TAB>while true:
    <TAB><TAB>do echo nimei;
    <TAB>done
    
    例2:
    'yum -y install lrzsz' 'echo nimei'
    *的使用:
    *我变斜了*   #(文字两边各1个*,把文字倾斜)
    **我变粗了**   #(文字两边用2个*,把文字变粗)
    ***  #(一行中仅有3个*,表示分割线)

    九、GitLab安装部署

    Gitlab是一个用Ruby onRails开发的开源项目管理程序,可以通过WEB界面进行访问公开的或者私人项目。它和Github有类似的功能,能够浏览源代码,管理缺陷和注释

    1、安装gitlab的依赖
    yum install -y curl openssh-server openssh-clients postfix cronie policycoreutils-python
    
    2、启动postfix,并设置为开机启动 service postfix start chkconfig on postfix
    3、获取gitlab的rpm包 清华开源镜像站 wget https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el6/gitlab-ce-10.0.2-ce.0.el6.x86_64.rpm
    4、安装gitlab rpm -ivh gitlab-ce-10.0.2-ce.0.el6.x86_64.rpm

    基本操作

    gitlab-ctl reconfigure         #重新编译配置
    gitlab-ctl status              #查看状态
    gitlab-ctl stop                #停止服务
    gitlab-ctl start               #启动服务
    gitlab-ctl tail                #查看日志、
    gitlab-ctl tail nginx #查看nginx日志 gitlab
    -ctl help #查看帮助

    汉化

    1、查看gitlab版本
    head -1 /opt/gitlab/version-manifest.txt
    
    2、停止服务 gitlab-ctl stop
    3、下载汉化包 v7-v8.8:https://gitlab.com/larryli/gitlab v8.9:https://gitlab.com/xhang/gitlab
    4、更新汉化包 cp -rf /tmp/gitlab/* /opt/gitlab/embedded/service/gitlab-rails/
    5、重新编译并启动服务 gitlab-ctl reconfigure gitlab-ctl start
    6、报错排除思路 查看报错日志,排除报错 vim /etc/gitlab/gitlab.rb external_url = '
    http://192.168.4.19' 不加=会出现问题 删除/opt/gitlab/embedded/service/gitlab-rails/public/uploads 删除/opt/gitlab/embedded/service/gitlab-rails/tmp 删除/opt/gitlab/embedded/service/gitlab-rails/log 权限设置 chown -R git:git /var/opt/gitlab/gitlab-rails/tmp/cache chown -R git:root /opt/gitlab/embedded/service/gitlab-rails/

    修改后台密码

    gitlab-rails console production
    user = User.where(id: 1).first     #id为1的是超级管理员
    user.password = '12345678'         #密码必须至少8个字符
    user.save!                         #如没有问题 返回true
    exit

    十、自动化部署上线

    获取代码-->编译(可选)-->配置文件-->打包-->copy到对应服务器(对应目录)-->部署节点、移除集群-->解压、copy差异文件-->创建软链接-->重启-->自动化测试-->加入集群-->列出回滚版本-->执行回滚-->删除软链接-->重新创建软链接-->重启(可选)

    ---------------------script start------------------
    
    #!/bin/bash
    
    #
    
     
    
    DATE=`date "+%Y-%m-%d"`
    
    TIME=`date "+%Y-%m-%d-%H-%M"`
    
    CODE_DIR=/ane/test/demo
    
    CONFIG_DIR=/ane/test/config
    
    TAR_DIR=/ane/tar
    
    TMP_DIR=/ane/tmp
    
     
    
    usage() {
    
        echo$"Usage: $0 [deploy|rollback-list|rollback-pro VERSION]"
    
    }
    
     
    
    git_pro() {
    
        echo "git pull"
    
        cd $CODE_DIR && git pull
    
        API_VERL=`gitshow | grep commit | cut -d' ' -f2`
    
        API_VER=`echo${API_VERL:0:6}`
    
        /bin/cp -r $CODE_DIR $TMP_DIR
    
    }
    
     
    
    config_pro() {
    
        echo "add pro config"
    
        /bin/cp $CONFIG_DIR/* $TMP_DIR/demo
    
        TAR_VER=$API_VER-$TIME
    
        cd $TMP_DIR && mv demo pro_demo_"$TAR_VER"
    
    }
    
     
    
    tar_pro() {
    
        echo "tar_pro"
    
        cd $TMP_DIR && tar zcf pro_demo_"$TAR_VER".tar.gz pro_demo_"$TAR_VER"
    
        echo "tar end"
    
    }
    
     
    
    scp_pro() {
    
        echo "begin scp"
    
        /bin/cp$TMP_DIR/pro_demo_"$TMP_VER".tar.gz /tmp/
    
    }
    
     
    
    deploy_pro() {
    
        echo "begin deploy"
    
        cd /tmp && tar zxf pro_demo_"$TAR_VER".tar.gz
    
        rm -f /var/www/html/demo
    
        ln -s /tmp/pro_demo_"$TAR_VER" /var/www/html/demo
    
    }
    
     
    
    test_pro() {
    
        echo "test begin"
    
        echo "test ok"
    
    }
    
     
    
    rollback_list() {
    
        ls -l /tmp/*.tar.gz
    
    }
    
     
    
    rollback_pro() {
    
        rm -f /var/www/html/demo
    
        ln -s /tmp/$1 /var/www/html/demo
    
    }
    
     
    
    main() {
    
       case $1 in
    
        deploy)
    
            git_pro;
    
            config_pro;
    
            tar_pro;
    
            scp_pro;
    
            deploy_pro;
    
            test_pro;
    
        ;;
    
        rollback-list)
    
            rollback_list;
    
        ;;
    
        rollback-pro)
    
            rollback_pro$2;
    
        ;;
    
        *)
    
            usage;
    
       esac
    
    }
    
     
    
    main $1 $2
    
    ---------------------scriptend-----------------
    pro-deploy.sh
    sh -x  pro-deploy.sh deploy
    sh -x  pro-deploy.sh rollback-list
    sh -x  pro-deploy.sh rollback-pro

    十一、其他应用

    git clone git@github.com:test/demo   #把github上面的仓库克隆到本地
    git push -u origin master            #将本地的Git仓库同步到远程Github服务器上
    git remote                           #查看本机列表

         

  • 相关阅读:
    微信小程序购物商城系统开发系列-目录结构
    微信小程序购物商城系统开发系列-工具篇
    如何用js获取浏览器URL中查询字符串的参数
    Search for a Range
    Search in Rotated Sorted Array
    permutation递归方法
    Permutations
    next permutation
    4Sum
    3Sum Closest
  • 原文地址:https://www.cnblogs.com/wuhg/p/10313242.html
Copyright © 2020-2023  润新知