• 敏捷持续集成(Jenkins)


    在前面已经完成git和gitlab的相关操作

    1.持续集成的概念:

    1. 什么是持续集成:
        持续集成是一种软件开发实践,即团队开发成员经常集成他们的工作,通过每个成员每天至少集成一次,也就意味着每天可能会发生多次集成。每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证,从而尽早地发现集成错误。
    2. 好处:
    	节省人力成本
    	加快软件开发进度
    	实时交付
    3. 整体流程
        成员通过git提交代码--》持续集成引擎来去代码并使用构建工具自动构建--》发布项目
    4. 重要组成部分:
        git : 版本管理
    	gitlab : 远程仓库
    	jenkins 持续集成引擎
    	maven 构建工具
    	sonarqube 代码质量管理
    	junit 自动执行单元测试
    	JDK
    	Tomcat
    
    	几个war--》微服务架构
    

    2.jdk与maven的安装

    1. 版本说明:
        * jdk1.8(目前大部分公司内部使用的还是JDK8,大部分依赖java的工具或框架,对JDK8的支持度是最好的)
        * maven3.5.3
    2. 将下载好的jdk跟maven上传到服务器上(jdk的安装可以参考linux命令)
    3. jdk的安装
        解压jdk到/usr/local/
    	    tar -zxvf jdk-8u91-linux-x64.tar.gz -C /usr/local/
        配置环境变量
             vim /etc/profile
             在最下面,按i进入insert模式,添加一下内容
                JAVA_HOME=/usr/local/jdk1.8.0_91
    			export JAVA_HOME
    			CLASSPATH=.:$JAVA_HOME/lib
    			export CLASSPATH
    			PATH=$PATH:$JAVA_HOME/bin:$CLASSPATH
    			export PATH
    		 按esc进入命令行模式,再按:wq保存退出
    		 激活配置
    		    source /etc/profile
    5. maven的安装
          解压: tar -zxvf apache-maven-3.5.3-bin.tar.gz -C /usr/local/
          配置: vim /etc/profile
            MAVEN_HOME=/usr/local/apache-maven-3.5.3
    		export MAVEN_HOME
    		PATH=$PATH:$MAVEN_HOME/bin
    		export PATH
    		按esc进入命令行模式,再按:wq保存退出
    		 激活配置
    		 	source /etc/profile
    

    3.nexus私服搭建

    1. 上传到服务器
    2. 解压:tar -zxvf nexus-3.12.1-01-unix.tar.gz -C /usr/local/
    3. 修改配置文件(文件在安装目录的etc下):
        vim /usr/local/nexus-3.12.1-01/etc/nexus-default.properties
        修改对应的端口:默认是8081,没有使用的就可以不用修改
        修改防火墙
        	vim  /etc/sysconfig/iptables
    	    -A INPUT -m state --state NEW -m tcp -p tcp --dport 8081 -ACCEPT
    	重启防火墙:
    	    service iptables restart
    4. 进入bin目录进行启动:
        ./nexus start (如果是root用户启动会有提示不建议使用root用户)
    5. 关闭nexus服务:
        ps aux | grep nexus
        kill 进程号
    6. 新建用户:
        useradd nexus
        chown -R nexus:nexus /usr/local/nexus-3.12.1-01 (自己的目录,解压出来有两个文件夹,两个文件夹的权限都要给该用户)
        su nexus(如果出现bash-4.2$,就使用su root切换回root用户,使用cp -a /etc/skel/. /home/nexus之后再切换用户)
        使用cd命令进入nexus的bin目录,使用./nexus start执行就好。
    7. 通过 ps aux | grep nexus 可以查看nexus是否真正启动, 如果没有,可以使用 ./nexus run来查看没有启动的问题(错误信息)
    8. 访问: 在本地使用 ip:8081 进行访问,如果可以正常访问,就安装成功(默认的账户是admin,密码是admin123),进行登录.
    9. 使用root账户进入到bin目录下,修改上传的文件大小,使用 ulimit -a可以看到open file是1024,将他增加到65536,使用 vi /etc/security/limits.conf,在倒数第二行添加两行:
        * soft nofile 65536    
        * hard nofile 65536
    10. 修改nexus自启动: vi /etc/rc.d/rc.local,添加一行:
        su - nexus -c  '/usr/local/software/nexus/nexus-3.12.1-01/bin/nexus start'
    11. 切换回nexus账户: su nexus,使用./nexus restart 重新启动
    

    4. 私服的使用

    1. 仓库的类型:
        * proxy: 代理仓库,主要代理远程的仓库,私服和远程仓库之间的连接
        * group: 仓库组,通常包含了多个代理仓库和宿主仓库,在项目中只要引入仓库组就可以下载到代理仓库和宿主仓库中的包
        * hosted:宿主仓库,内部项目、付费jar
            1. releases  发布内部release版本的仓库
    	    2. snapshots 发布内部snapshots版本的仓库
    	    3. third 自建第三方jar
    2. 新建
        * 点击设置,就是小齿轮那个标签
        * 点击左侧导航的Repositories
        * 点击create repository
        * 选择 maven hosted,输入字段(maven-third),点击create完成
    3. 配置本地的maven(家目录下的.m2,没找到,就去maven_home下的setting),修改maven的setting文件
        * 在servers标签内配置远程私服的账号和密码:
            <server>
           		<id>xdclass-releases</id>
           		<username>admin</username>
           		<password>admin123</password>
           	</server>
           	<server>
           		<id>xdclass-snapshots</id>
           		<username>admin</username>
           		<password>admin123</password>
           	</server>
        * 在<profiles>中配置私有库和插件库的地址(地址指向私服的group地址):
            <profile>
              <id>xdclass</id>
              <activation>
                <activeByDefault>false</activeByDefault>
              </activation>
              <!-- 私有库地址-->
              <repositories>
                <repository>
                  <id>xdclass</id>
                  <url>http://192.168.88.128:8081/repository/maven-public/</url>
                  <releases>
                    <enabled>true</enabled>
                  </releases>
                  <snapshots>
                    <enabled>true</enabled>
                  </snapshots>
                </repository>
              </repositories>
              <!--插件库地址-->
              <pluginRepositories>
                <pluginRepository>
                  <id>xdclass</id>
                  <url>http://192.168.88.128:8081/repository/maven-public/</url>
                  <releases>
                    <enabled>true</enabled>
                  </releases>
                  <snapshots>
                    <enabled>true</enabled>
                  </snapshots>
                </pluginRepository>
              </pluginRepositories>
            </profile>
        * 新加标签在setting结束标签之前加上下面代理,用来激活配置
            <activeProfiles>
                <activeProfile>xdclass</activeProfile>
             </activeProfiles>
        * 修改私服上的代理地址,将代理地址改为阿里云的:
            http://maven.aliyun.com/nexus/content/groups/public
    4. 上传本地项目到私服,在maven项目的pom.xml中进行配置:
         <!--pom.xml 远程仓库的配置  id要跟本地maven的setting.xml相同 -->
        <distributionManagement>
            <repository>
                <id>xdclass-releases</id>
                <name>Wangzhi Release Repository</name>
                <url>http://192.168.88.128:8081/repository/maven-releases/</url>
            </repository>
    
            <snapshotRepository>
                <id>xdclass-snapshots</id>
                <name>Wangzhi Snapshot Repository</name>
                <url>http://192.168.88.128:8081/repository/maven-snapshots/</url>
            </snapshotRepository>
        </distributionManagement>
    5. 点击deploy就可以发布了
    6. 上传第三方jar包到私服:
        * 选择私服的upload,选择上传到哪个?一般选择自己新建的.
        * 选项的填写:
            1. file : 选择本地的第三方jar
            2. extension: 是什么jar包,也就是后缀名
            3. group id : com.xdclass
            4. artifact id : wiggin
            5. version: 1.0
            6. 选中generate a pom那一行,点击upload就可以了
            7. 本地项目的引用按照上面填写的引用就可以
    

    5. 安装Mysql(可以参考linux常用命令中的安装mysql,比这个相对简单)

    linux下安装mysql的方式
    yum 安装简单
    自行编译安装 自由
    mysql下载
    	http://mirrors.sohu.com/mysql/MySQL-5.7/mysql-5.7.17.tar.gz
    编译安装mysql
    1.解压
    	tar -zxvf mysql-5.7.17.tar.gz
    2.安装相应的依赖
    	yum install make cmake gcc gcc-c++ bison bison-devel ncurses ncurses-devel autoconf automake wget
    3.下载boost
    	mkdir /usr/local/boost
    	wget http://www.sourceforge.net/projects/boost/files/boost/1.59.0/boost_1_59_0.tar.gz --no-check-certificate
    4.添加用户并创建相应目录存放数据
    	useradd mysql
    	cd /home/mysql/
    	mkdir data logs temp
    	chown -R  mysql:mysql data logs temp
    4.执行cmake
    	cmake 
    	-DCMAKE_INSTALL_PREFIX=/usr/local/mysql 
    	-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock 
    	-DDEFAULT_CHARSET=utf8 
    	-DDEFAULT_COLLATION=utf8_general_ci 
    	-DWITH_MYISAM_STORAGE_ENGINE=1 
    	-DWITH_INNOBASE_STORAGE_ENGINE=1 
    	-DWITH_ARCHIVE_STORAGE_ENGINE=1 
    	-DWITH_BLACKHOLE_STORAGE_ENGINE=1 
    	-DWITH_MEMORY_STORAGE_ENGINE=1 
    	-DWITH_READLINE=1 
    	-DENABLED_LOCAL_INFILE=1 
    	-DMYSQL_DATADIR=/home/mysql/data 
    	-DMYSQL_USER=mysql 
    	-DMYSQL_TCP_PORT=3306 
    	-DWITH_BOOST=/usr/local/boost
    5.编译安装
    	make  进行编译
    	make install 安装
    6.修改mysql安装目录权限
    	chown -R mysql:mysql /usr/local/mysql
    7.初始化mysql   
    mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/home/mysql/data
    产生密码 eqK:iH;+S6dC
    8.删除/etc下的my.cnf  
    	rm /etc/my.cnf
    9.复制服务启动脚本
    	cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql
    10.启动 MySQL 服务:
    	service mysql start
    11.设置mysql服务开机自启动
    	chkconfig mysql on
    12.登陆mysql并设置可远程登陆 
    	mysql -u root -p 回车
    	粘贴初始化时产生的临时密码 eqK:iH;+S6dC
    	GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'xdclass' WITH GRANT OPTION;此时不让改,提示要先设置下密码
    	SET PASSWORD = PASSWORD('xdclass');
    	ALTER USER 'root'@'localhost' PASSWORD EXPIRE NEVER;
    	flush privileges;
    	exit;
    	重新登陆,使用刚刚设置的密码
    	mysql -u root -p
    	登陆完成之后,即可设置允许远程登陆
    	GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'xdclass' WITH GRANT OPTION;
    13.开启防火墙端口
    	vim /etc/sysconfig/iptables
    	加入
    	-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT
    14.使用连接工具测试远程连接
    

    6. sonarQube(代码质量管理工具)的安装和使用(可以检查项目代码的错误,覆盖率等等)

    前置依赖
    mysql 5.6 or 5.7
    jdk 1.8
    1.下载
    	https://www.sonarqube.org/
    2.安装unzip并解压sonarqube并移动到/usr/local
    	yum install unzip
    	unzip sonarqube-6.7.4.zip
    	mv sonarqube-6.7.4 /usr/local/
    3.mysql里新增数据库
    	CREATE DATABASE sonar DEFAULT CHARACTER SET utf8;
    4.修改sonarqube相应的配置(下面的配置都是在原来的配置中找见进行修改)
    	vim /usr/local/sonarqube-6.7.4/conf/sonar.properties
    	sonar.jdbc.username=root
    	sonar.jdbc.password=wiggin
    	sonar.jdbc.url=改成步骤3创建的库名
    	sonar.web.context=/sonar
    	sonar.web.host=0.0.0.0
    5.新增用户,并将目录所属权赋予该用户
    	useradd sonar
    	chown -R sonar:sonar sonarqube-6.7.4/
    6.启动
    	su soanr
    	/usr/local/sonarqube-6.7.4/bin/linux-x86-64/sonar.sh start   (可能会启动失败,可以查看 logs下的日志文件来查看失败原因)
    7.界面访问
    	http://192.168.56.101:9000/sonar
    	开启防火墙
        	firewall-cmd --zone=public --add-port=9000/tcp --permanent
        	firewall-cmd --reload
    8. 进行登录:
        默认的账户名和密码都是admin,登录成功之后需要生成token(8e8d2ede68954ddf387e50efb24a140f0e3ff7d4)
        
    	在界面产生令牌,并将项目代码使用以下命令进行提交由sonarqube进行分析,完成后,查看相应的分析结果
        mvn sonar:sonar 
          -Dsonar.host.url=http://192.168.88.128:9000/sonar 
          -Dsonar.login=8e8d2ede68954ddf387e50efb24a140f0e3ff7d4
          
        在项目的根目录,使用git bash命令,将上面3行放入git bash命令行中运行,就可以build success
    

    Jenkins的安装及常见问题定位

    安装tomcat
        1. 安装tomcat(创建用户操作tomcat)
            useradd tomcat    新建用户
            passwd tomcat     修改密码(密码不能过于简单)--Mypwd123456$
        2. 使用root命令进行解压tomcat
        3. 将解压的目录的权限给tomcat用户:
            chown -R tomcat:tomcat apache-tomcat-9.0.12
    
    安装Jenkins(基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。)
        1. 下载 https://jenkins.io/download/
            下载长期支持的war包(通用)
        2. 将下载的war包上传到安装的tomcat的webapps目录下 
        3. 将jenkins的war包操作权限给tomcat用户
            chown tomcat:tomcat  jenkins.war
        4. 启动tomcat
            进入bin目录,   ./startup.sh
        5. 配置防火墙
            firewall-cmd --zone=public --add-port=8080/tcp --permanent
            firewall-cmd --reload
        6. 不能访问查看日志: 进入logs目录, more catalina.out可以看到端口已经被使用,关闭tomcat,使用netstat -tlun可以看到8080端口还在被使用,使用netstat -tlunp | grep 8080.可以看到哪个程序占用了80端口,发现是与gitlab相关,所以修改tomcat的端口号.
        7. 修改端口号:
            进入tomcat的conf目录,修改server.xml,找到8080端口,将端口修改为9999,重新进入bin目录进行启动,可以使用netstat -tlun查看到9999端口已经启动
        8. 防火墙
            firewall-cmd --zone=public --add-port=9999/tcp --permanent
            firewall-cmd --reload
        9. 就可以在本机访问了:
            访问 http://192.168.88.128:9999/jenkins 就可以进行安装jenkins了,会提示到某一个目录下去查找密码,使用 more + 目录就可以进行查看了,复制内容,进行操作就好
        10. 安装(如果出现离线问题)
            离线解决:
               访问 http://192.168.56.101:9999/jenkins/pluginManager/advanced 目录,拉到最底下,将https--》改成http,之后提交,重启tomcat, 再次访问就可以进行安装了,默认安装就好.
        11. 创建管理员用户:
            用户名: wangzhi
            密码 : nrblwbb7
            全名 : wangzhi
            电子邮件: 2585700076@qq.com
            点击保存并完成就好
        12. 发现一片空白,重启tomcat.然后再次访问,就可以了
  • 相关阅读:
    大学生自学网
    如何保证主从复制数据一致性
    CDN
    后端 线上 服务监控 与 报警 方案2
    利用 Gearman 实现系统错误报警功能
    增量部署和全量部署
    后端线上服务监控与报警方案
    简析TCP的三次握手与四次分手
    301 和 302 对 SEO 的影响
    Linux 查看负载
  • 原文地址:https://www.cnblogs.com/wadmwz/p/10145326.html
Copyright © 2020-2023  润新知