首页 > 其他分享 >『互联网架构』软件架构-软件环境的持续发布管理(上)

『互联网架构』软件架构-软件环境的持续发布管理(上)

时间:2023-01-06 12:38:38浏览次数:60  
标签:Confluence 架构 atlassian confluence 发布 软件架构 mysql 软件 6.9


这次就走到软件的最后一站,哈哈,就是把软件给发布部署到服务器上。其实在部署的过程中,尤其现在微服务架构的盛行,软件本身喜欢用什么敏捷开发,导致持续发布的困难也是相当的大,原来不管项目怎么整,只要最后把项目部署好,可以正常的访问这个项目就部署好了。但是一旦把项目拆的很散,拆的很多个服务的时候,这时候想部署起来真的不是一个简单的事情。需要使用科学的方法和经验把这个事情搞定。

『互联网架构』软件架构-软件环境的持续发布管理(上)_mysql

大规模系统发布所面临的问题

尤其现在很多领导都喜欢敏捷开发,敏捷开发就导致本来要一个星期开发的功能,他给你说2天。为什么要2天,敏捷开发就是快,敏捷开发本身就是有问题的。

  • 现在很多公司是如何发布的。多久发布一次。

身边的几种情况

1.自己打包,给领导一说就直接发布了。领导说什么时候上就什么时候发布。
2.告诉运维人员项目git的位置,通知运维上线运维拉取,运维人员发布到生产环境。(如果项目几百,几十个,告诉运维,运维需要多大体积的团队啊)
3.每天都有小更新,每天都在发布。
4.项目发布用了jenkins工具,通过它进行自动化的构建发布。

  • 说说身边的发布中存在的问题
    1.本来问题没有的,参数写错了。
    2.依赖的项目没有发布,自己先发布了
    3.依赖版本的项目本身不在本次发布,结果自身项目依赖那个项目的功能
    4.运维人员把测试环境的代码发布到生产环境了
  • 回滚导致的事故

回滚,一般很难做到如果单纯是代码级别的还好说,直接备份回滚到上一次就可以了,如果涉及到刷数据库是不是就尴尬了,新版本的数据都刷过了,但是代码回滚了,是不是要把数据在重新刷回到未刷的状态。可能你刷过去的脚本有,但是刷回来的脚本可能就没有了。这就是事故了。

要把一个项目,尤其大规模的项目,大型互联网项目都是拆的很散的,几十个上百个,那些项目都是拆的很散的,他们之前还有项目依赖,他们发布起来真的是很难很的事情。

  • 软件发布其实是个非常非常困难的事情,非常考验管理人员的水平,如何全局把控,如何顺序执行。

随着敏捷开发模式和微服务的盛行,导致软件集成难度变大,持续部署变得困难,如何减少发布导致的事故,缩短交互周期,做到可持续部署!其实这也是世界难题,太难了,只能根据自身业务本来来进行设定,不求最新最好,只求最适合自己的。

  • 软件的开发阶段

正确的软件开发的阶段:编码 > 构建 > 集成 >测试 > 交付 >部署
可持续的集成> 可持续的部署 > 可持续的发布

『互联网架构』软件架构-软件环境的持续发布管理(上)_jar_02

  • 持续集成 (INTEGRATE)

集成:如果是单体开发的话,就没有集成这一说,所有的功能都在一个项目,在软件开发过程中都已经集成好了,相当于都已经集成好了。现在越来越流行的是一个功能并不是由一个项目来开发的,比如一个交易中心双11的时候,提交购物信息的时候,可能依赖库存中心,商品中心,支付中心,会员中心,通知中心。开发提交订单这一个功能,后面依赖了一大堆的系统,加入修改提交订单这一个小bug,可能影响到N多个项目都需要修改。极有可能你部署提交订单这个项目,其他N多个项目都需要同步进行部署。

官方解释:软件个人研发部分向软件整体部分交付,频繁的进行集成以便更快的发现其中的错误。

  • 持续交互(DELIVER)

交互:类似线上的预演环境,其实有时候称之为灰度环境,及时我们测试我们也需要在预演环境先走一遍,有的功能要求没有这么严格可能就直接测试了没有预演环境,更多的公司可能直接build后就deploy了。

官方解释:在持续集成的基础上,将集成后的代码部署到更贴近真实运行环境

  • 持续集成,持续交互面临的最大的问题

协调和写作的问题
依赖的包,依赖的项目说好的要在同一时间一起上线的,结果不知道什么原因,它就掉链子,自身的项目不能如期发布,但是自身的项目可能依赖另一个功能可能需要的接口,导致另外的接口也无法发布,就形成了一个链条,一个功能不能如期,导致其他所有的都无法如期。都崩溃。

1.最大的问题就是协调,协作的问题
2.如果当时约定了,是否考虑应急方案,提前告知无法提供,

  • 顺利的可持续化集成需要做到以下几点
    1.一个清晰的可执行的发布流程
    2.一个熟悉该流程的发布管理协调人员(这种人必须擅长多线程处理问题)
    3.有效的沟通和反馈机制(confluence做信息反馈)
    4.可持续化集成工具(jenkins)
    5.版本管理工具(并不单指代码的管理工具,日常发布的程序文件SVN)

版本发布流程所需环境(confluence,SVN)

  • 信息协调工具(confluence)
    1.月度发布计划(比较粗)
    2.周发布计划(产品经理,提交本次日常要发布功能)
    3.测试人员提交具体的发布窗口计划文档(开发人员编写本次自身负责的系统,及依赖关系和脚本checklist,可以上线前截止某个时间可以修改,可以共同编写文档)
    4.线上事故报告单(bug修复计划)
  • 版本管理工具(发布文件,不是代码级别的)

git(git步骤繁琐,需要add,commit,push)
nexus
ftp(共享文件)最简单的方式。
svn

  • confluence

介绍:Confluence是一个专业的企业知识管理与协同软件,也可以用于构建企业wiki。使用简单,但它强大的编辑和站点管理特征能够帮助团队成员之间共享信息、文档协作、集体讨论,信息推送。也可以作为公司内部的团队协作软件,在线编辑word,execel,ppt等。这个功能与腾讯的在线编辑word,execel类似。但是它的功能更强大。
源码:https://github.com/limingios/netFuture/tree/master/confluence

『互联网架构』软件架构-软件环境的持续发布管理(上)_svn_03

官网: https://www.atlassian.com/software/confluence/download-archives
不建议使用最新的,本身这个软件是收费的,我建议大家下载 5.6.6,为什么呢,因为可以破解 嘿嘿

环境准备
1.CentOS 7
2.java jdk 1.8
3.mysql-server 5.6
4.confluence 6.9.1

『互联网架构』软件架构-软件环境的持续发布管理(上)_jar_04

  • 服务信息

通过vagrant 生成虚拟机

系统类型

IP地址

节点角色

CPU

Memory

Hostname

Centos7

192.168.68.100

confluence

2

4G

confluence

vagrant up
su -
#密码 vagrant
vi /etc/resolv.conf
#nameserver 8.8.8.8
reboot
  • jdk 安装

必须安装jdk8

wget wget --no-cookies --no-check-certificate --header "Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com%2F; oraclelicense=accept-securebackup-cookie" "http://download.oracle.com/otn-pub/java/jdk/8u141-b15/336fa29ff2bb4ef291e347e091f7f4a7/jdk-8u141-linux-x64.tar.gz"
#上边的下载比较慢,建议不通过wget的方式,本地下载后上传上去,我下载了3个多小时,当时正好想看电视剧看了几集
tar -zxvf jdk*
cd jdk*
#获取jdk目录填写到下面JAVA_HOME中
pwd
#追加环境变量
echo "export JAVA_HOME=/root/jdk1.8.0_141" >> /etc/profile
echo "export PATH=$""JAVA_HOME/bin:$""PATH" >> /etc/profile
#执行下面这个才能生效
source /etc/profile
java -version
javac -version

『互联网架构』软件架构-软件环境的持续发布管理(上)_svn_05

  • mysql 安装
#下载mysql 源
wget http://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm
#安装mysql 源
yum -y install mysql57-community-release-el7-11.noarch.rpm
#安装mysql,中间会弹出是与否的选择,选择y即可,然后耐心等待吧。。。。。。。
yum install mysql-community-server
#启动mysql
systemctl start mysqld.service
#查看mysql状态
systemctl status mysqld.service
#查看初始密码
grep "password" /var/log/mysqld.log
#登录
mysql -uroot -p
#输入刚才查看的初始密码

#修改密码:我这里修改成:1qaz@WSX
ALTER USER 'root'@'localhost' IDENTIFIED BY '1qaz@WSX';

#授权远程访问
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '1qaz@WSX' WITH GRANT OPTION;

#刷新上边操作,就是提交操作
FLUSH PRIVILEGES;
#退出mysql控制台
exit

#设置自动启动
systemctl enable mysqld
systemctl daemon-reload

『互联网架构』软件架构-软件环境的持续发布管理(上)_jar_06

『互联网架构』软件架构-软件环境的持续发布管理(上)_svn_07

『互联网架构』软件架构-软件环境的持续发布管理(上)_svn_08

『互联网架构』软件架构-软件环境的持续发布管理(上)_jar_09

confluence是可以使用内嵌数据库的额,但是作为生产环境的话,confluence是建议使用自己的数据库的,
在安装数据库的时候是支持多种的数据库的,我这里用的是mysql,版本5.6/5.7都可以。还有需要连接mysql的jar包mysql-connector。

首先是配置文件/etc/my.cnf,在[mysqld]标签下添加

vi /etc/my.cnf
[mysqld]
character-set-server=utf8
collation-server=utf8_bin
default-storage-engine=INNODB
max_allowed_packet=256M
innodb_log_file_size=2GB
sql_mode = NO_AUTO_VALUE_ON_ZERO
transaction-isolation=READ-COMMITTED
binlog_format=row

『互联网架构』软件架构-软件环境的持续发布管理(上)_mysql_10

最后是重启mysqld,并登陆mysqld查看字符集,创建数据库的时候设置的密码是:1qaz@WSX

service mysqld restart
mysql -uroot -p
mysqld [(none)]> show variables like "%character%";show variables like "%collation%";

『互联网架构』软件架构-软件环境的持续发布管理(上)_mysql_11

为Confluence创建对应的数据库、用户名和密码

create database confluence default character set utf8 collate utf8_bin;
grant all on confluence.* to 'root'@'%' identified by '1qaz@WSX';
flush privileges;
  • 安装Confluence
# 下载安装程序
wget https://product-downloads.atlassian.com/software/confluence/downloads/atlassian-confluence-6.9.1-x64.bin
# 授权安装程序执行权限
chmod a+x atlassian-confluence-6.9.1-x64.bin
# 执行安装程序,进行安装:

./atlassian-confluence-6.9.1-x64.bin
[root@confluence ~]# chmod a+x atlassian-confluence-6.9.1-x64.bin
[root@confluence ~]# ./atlassian-confluence-6.9.1-x64.bin
Unpacking JRE ...
Starting Installer ...

This will install Confluence 6.9.1 on your computer.
OK [o, Enter], Cancel [c]
#选择确定安装
o
Click Next to continue, or Cancel to exit Setup.

Choose the appropriate installation or upgrade option.
Please choose one of the following:
Express Install (uses default settings) [1],
Custom Install (recommended for advanced users) [2, Enter],
Upgrade an existing Confluence installation [3]
#目录选择自定义
2

Select the folder where you would like Confluence 6.9.1 to be installed,
then click Next.
Where should Confluence 6.9.1 be installed?
[/opt/atlassian/confluence]
#这里填写自定义目录
/usr/local/atlassian/confluence

Default location for Confluence data
[/var/atlassian/application-data/confluence]


Configure which ports Confluence will use.
Confluence requires two TCP ports that are not being used by any other
applications on this machine. The HTTP port is where you will access
Confluence through your browser. The Control port is used to Startup and
Shutdown Confluence.
Use default ports (HTTP: 8090, Control: 8000) - Recommended [1, Enter], Set custom value for HTTP and Control ports [2]
#端口默认8090
1

Confluence can be run in the background.
You may choose to run Confluence as a service, which means it will start
automatically whenever the computer restarts.
Install Confluence as Service?
Yes [y, Enter], No [n]
#自动启动 选择y
y

Extracting files ...


Please wait a few moments while we configure Confluence.

Installation of Confluence 6.9.1 is complete
Start Confluence now?
Yes [y, Enter], No [n]
#选择y
y

Please wait a few moments while Confluence starts up.
Launching Confluence ...

Installation of Confluence 6.9.1 is complete
Your installation of Confluence 6.9.1 is now ready and can be accessed via
your browser.
Confluence 6.9.1 can be accessed at http://localhost:8090
Finishing installation ...

『互联网架构』软件架构-软件环境的持续发布管理(上)_jar_12

​https://blog.csdn.net/weixin_41004350/article/details/80590421​

进入浏览器访问,如果是英文可以选择【语言】中文,选择【产品安装

『互联网架构』软件架构-软件环境的持续发布管理(上)_svn_13

先不要选择任何插件

『互联网架构』软件架构-软件环境的持续发布管理(上)_jar_14

记录服务器ID (B5BE-SJ3C-N42I-XCN0)

『互联网架构』软件架构-软件环境的持续发布管理(上)_jar_15

提取破解文件,关闭Confluence

# 进入你安装的目录
cd /usr/local/atlassian/confluence
# 关闭confluence
bin/stop-confluence.sh
# 将confluence 下面的一个atlassian-extras-decoder-v2-3.3.0.jar包复制一份出来
cp confluence/WEB-INF/lib/atlassian-extras-decoder-v2-3.3.0.jar ~/

# 将其改名为atlassian-extras-2.4.jar
mv ~/atlassian-extras-decoder-v2-3.3.0.jar ~/atlassian-extras-2.4.jar
#安装传输工具
cd ~
yum -y install lszrz

『互联网架构』软件架构-软件环境的持续发布管理(上)_mysql_16

破解文件,源码里面有。

『互联网架构』软件架构-软件环境的持续发布管理(上)_mysql_17


然后本地window电脑操作:

① 打开下载的破解工具,运行confluence_keygen.jar

②将记录的server ID填入,Name随便填。

③点击gen, 生成key并记录。

④点击patch,选择刚下传到本地的atlassian-extras-2.4.jar文件进行破解。

⑤不要关闭破解工具,过会需复制key里面的密钥

『互联网架构』软件架构-软件环境的持续发布管理(上)_mysql_18

『互联网架构』软件架构-软件环境的持续发布管理(上)_svn_19

『互联网架构』软件架构-软件环境的持续发布管理(上)_mysql_20

OK,破解完成后,将破解后的文件传回服务器

cd ~
mkdir bak
cd bak
# 传回服务器后,将名称改回之前的名称
mv atlassian-extras-2.4.jar atlassian-extras-decoder-v2-3.3.0.jar

# 然后覆盖回原路径
mv atlassian-extras-decoder-v2-3.3.0.jar /usr/local/atlassian/confluence/confluence/WEB-INF/lib/

『互联网架构』软件架构-软件环境的持续发布管理(上)_mysql_21

Confluence本身是没有集成mysql驱动的,需要自己下载并上传,原本在你安装的时候,输入key之后,会需要填入mysql连接信息,那里会有链接指向官方文档,教你如何配置mysql。但是配置完成后需要重启,会导致前面的破解出问题,所以,这里要一起完成后再重新启动。官方教程文档地址如下:
​​​https://confluence.atlassian.com/doc/database-setup-for-mysql-128747.html​​​ 源码中包括:mysql的驱动
解压后把mysql-connector-java-5.1.46-bin.jar传到服务器上,放到confluence的类目录下:

sz 

cp mysql-connector-java-5.1.46-bin.jar /usr/local/atlassian/confluence/lib/

『互联网架构』软件架构-软件环境的持续发布管理(上)_mysql_22

  • 上述操作完成后,重启完成重启confluence,

想不花钱确定麻烦没办法

service confluence start

『互联网架构』软件架构-软件环境的持续发布管理(上)_svn_23

回到输入key的界面,输入上面记录的key【之前说了别关闭破解软件】,点击下一步

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Fy4rmrO8-1610416165263)(https://upload-images.jianshu.io/upload_images/11223715-9774bfc4dbbd784f.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)]

选择我自己的数据库

『互联网架构』软件架构-软件环境的持续发布管理(上)_jar_24

『互联网架构』软件架构-软件环境的持续发布管理(上)_jar_25

『互联网架构』软件架构-软件环境的持续发布管理(上)_svn_26

『互联网架构』软件架构-软件环境的持续发布管理(上)_jar_27

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bkVMfWGH-1610416165271)(https://upload-images.jianshu.io/upload_images/11223715-01708fcc5b5ba116.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)]

『互联网架构』软件架构-软件环境的持续发布管理(上)_jar_28

『互联网架构』软件架构-软件环境的持续发布管理(上)_svn_29

『互联网架构』软件架构-软件环境的持续发布管理(上)_svn_30

『互联网架构』软件架构-软件环境的持续发布管理(上)_svn_31

『互联网架构』软件架构-软件环境的持续发布管理(上)_svn_32

OK,到此安装完成。关于Confluence的使用,http://www.confluence.cn/pages/viewpage.action?pageId=360467,界面描述是不是就是软件开发使用的,很高大上啊。非常贴合软件开发流程文档的思路。

  • SVN安装
    1.通过yum命令安装svnserve
yum -y install subversion

『互联网架构』软件架构-软件环境的持续发布管理(上)_mysql_33

2.创建版本库目录(此仅为目录,为后面创建版本库提供存放位置)

mkdir /var/svnrepos
  1. 创建版本库目录
svnadmin create /var/svnrepos/svn

『互联网架构』软件架构-软件环境的持续发布管理(上)_svn_34

  1. 配置svn

authz:负责账号权限的管理,控制账号是否读写权限
passwd:负责账号和密码的用户名单管理
svnserve.conf:svn服务器配置文件

cd /var/svnrepos/svn/conf

『互联网架构』软件架构-软件环境的持续发布管理(上)_mysql_35

编辑 authz 文件
[/]:表示根目录,即 /var/svnrepos
admin = rw:表示用户luo对根目录具有读写权限。

『互联网架构』软件架构-软件环境的持续发布管理(上)_mysql_36

编辑 passwd 文件

『互联网架构』软件架构-软件环境的持续发布管理(上)_jar_37

编辑 svnserve.conf 文件(注意:配置的前面不能有空格,一定要顶格写)
anon-access = none:表示禁止匿名用户访问。
auth-access = write:表示授权用户拥有读写权限。
password-db = passswd:指定用户名口令文件,即 passwd 文件。
authz-db = authz:指定权限配置文件,即 authz 文件。
realm = /var/svnrepos:指定认证域,即 /var/svnrepos 目录。

『互联网架构』软件架构-软件环境的持续发布管理(上)_mysql_38

『互联网架构』软件架构-软件环境的持续发布管理(上)_svn_39

PS:本次主要说了项目管理中存在的问题和如何解决,另外说了confluence 和 svn的安装,很不错的软件,confluence说了一些黑科技破解的方案。


标签:Confluence,架构,atlassian,confluence,发布,软件架构,mysql,软件,6.9
From: https://blog.51cto.com/u_12040702/5992961

相关文章

  • 2021年中国软件供应链安全分析报告
    声明本文是学习2021年中国软件供应链安全分析报告.下载地址http://github5.com/view/1216而整理的学习笔记,分享出来希望更多人受益,如果存在侵权请及时联系我们四、国内......
  • 『高级篇』docker之微服务架构带来的问题(五)
    ​之前已经说了微服务的概念,相信老铁对微服务有了一个深刻的概念,从此以后咱们深入微服务,一步步来分析使用微服务会给我们带来哪些问题,或者说使用微服务需要解决哪些问题,以及......
  • 如果软件正在占领全世界,为什么程序员得不到尊重?
    程序员收入不比其它职业差,但是程序员没有高富帅的血统。程序员的真正title是软件工程师。就像这世界上其它行业的的无数工程师一样,他们研究和设计房子、大桥、轮船、铁路、......
  • 总线工具软件TSMaster使用教程之UDS刷写流程
    今天给大家介绍基于TSMaster的UDS诊断刷写流程。基本流程主要分为基本参数配置、刷写流程两部分。一、基本参数配置1、新建工程打开TSMaster软件,选择创建新工程-诊断-UDS诊......
  • 『中级篇』docker架构和底层技术(12)
    ​前11节主要是介绍docker的安装,如果跟这我来学我相信大家已经有了一个docker的安装环境,本次是看下docker的架构和底层的技术,其实随着各位老铁的学习我相信对于docker架......
  • 软件测试和前端开发哪个发展更好?
    没有最好的,只有最适合自己的工作,但是不论是哪个岗位,都是需要不断地更新学习新的知识,这样才能让自己在岗位上立于不败之地。 首先测试和前端虽然都是身处互联网......
  • 软件测试行业的现状和发展趋势
    小编已经与测试行业打交道十多年了,在此期间目睹了测试行业的兴起,并目睹了最早的测试行业人员逐渐被取代,有很多感受。今天,让我们来谈谈测试行业的现状和发展,希望我能帮......
  • SimpleAdmin系统教程之:项目架构设计
    一、说明本章主要介绍的是SimpleAdmin后端架构设计,作为一个系统的基石,一个好的架构设计可以让开发者在开发中少走很多弯路。在写SimpleAdmin这个系统之前,也用过一些其他的......
  • 物联网移动APP架构设计
    Android系统架构应用层SMS短信客户端程序、电话拨号程序、图片浏览器、Web浏览器等。这些应用程序都是用Java语言编写的,并且都是可以被开发人员开发的其他应用程序所替换应......
  • RFID条形码标签软件丨CODESOFT功能简介
    RFID和条形码标签软件,铺就企业成功的基石 1、先进的条形码标签创建与集成2、智能的用户界面3、稳健可靠的数据库连接4、100多种条形码符号体系5、集标签和文......