一般公司或者团队是怎么进行代码开发并且部署到服务器上的?
废话不多说,直接来干的。这里介绍一套成熟的方案。
gitlab(代码管理)+jenkins(持续集成)+k8s(服务管理)
其中涉及到的技术细节:dockerindockermakefile
gitlab使用介绍
gitlab是一款类似github的开源代码管理软件,可在公司内网,直接搭建一套私有代码仓库,适合团队多人开发,具有完善的分支管理、角色管理、issue、里程碑等。是非常优秀的一款软件。
jeknis使用介绍
这是一款开源持续集成软件,说人话就是使用他可以自动化部署服务。其具有gitlab相关的插件,安装后可直接对接gitlab,当gitlab发生push或者merge代码事件,会通知jeknis去完成最新推送的代码的镜像构建和部署。
推荐上面说的两款技术和jeknis混合使用。
1dockerindocker技术。顾名思义就是docker里面运行docker,简单点直接用dockerfile在jeknis镜像的基础上安装docker客户端或者k8s客户端。这样我们在容器中就可以直接调用宿主机的docker命令或者k8s命令。这对我们使用jenkins执行部署脚本,通知k8s或者docker部署服务,非常方便。
2makefile之所以介绍这款他,是因为其具有一个绝佳的功能,可以检测文件内容是否发生变化,这样对于微服务架构,其配合jenkins,无需指定什么,就可以部署上发生文件变化的微服务。而不会影响到其他服务。
k8s使用介绍
这款当红炸子鸡,相信大家耳闻已久。其实现了对docker的管理和编排。配合上共享存储和其服务自动重启机制,可以让我们的服务无当机。
对于docker内部服务的暴露推荐ingress+service
docker镜像管理推荐harbor。
以上完整的自动化开发部署环境,有兴趣的可以自行学习相关内容,进行搭建测试。
1 Puppet
Puppet是一款开源工具,旨在为系统管理员大大简化自动化和报告工作。它基本上是款配置管理软件,有助于配置和维护企业网络中的服务器及其他系统。系统管理员通常每天要花大量时间重复做同样的任务。他们总是想要使这些任务实现自动化,以便有更多的时间来处理其他项目或学习新的概念和脚本语言。管理员可以通过编写脚本使任务实现自动化,但是在拥有大型网络的公司,脚本不是很方便。这时候,Puppet就大有用场,因为借助Puppet,你可以:
为网络上的每个主机定义独特的配置设置;
不断监测网络,查找任何变动;
帮助高效地创建和管理用户;
帮助管理每个开源工具的配置设置。
2 CHEF
Chef是另一款可供Linux系统管理员使用的流行的自动化工具。它用Ruby和Erlang编写,对于配置和维护公司的服务器大有帮助,无论贵公司拥有十台服务器还是上百台。它还可以帮助你将云端服务器与亚马逊EC2、OpenStack、RackSpace或谷歌云整合起来。Chef可以将你的基础设施转变成代码,那样借助代码,你只要更改几行代码,就能轻松撤下一台服务器,从而让你轻松管理服务器。物理节点还意味着:将变更内容部署到生产环境之前,可以对它轻松进行测试,你还可以轻松控制针对代码的每次更新的版本。Chef DK为你提供了测试和管理配置的所有工具,Chef Server充当你所有“菜谱”(recipe)的存储库,可以管理与服务器连接的每个节点。Chef客户软件在每个客户端上运行,时不时收到服务器方面的信息,从而更新其配置设置。
3 CFEngine
面向Linux系统管理员的下一款自动化工具是CFEngine,这是另一个领先的自动化系统,可帮助你轻松管理整套基础设施,并使之实现自动化。一旦你使用CFEngine为网络中的系统定义了配置,那么CF Engine就会自动确保配置符合规范。不用说,如果你的网络中有10个或100个节点,可以在短短几秒内更新或改动任何一个节点或所有节点。CFEngine之所以受到许多Linux系统管理员的青睐,是由于它运行成本低、响应速度快、具有自愈合功能。
4 Ansible
Ansible是Red Hat提供的一款开源配置管理和IT企业自动化软件,随带一种简单的编程语言,让系统管理员能够高效地处理自动化和配置过程。Ansible由控制机器和控制机器控制的节点组成。节点是通过SSH来加以控制的。Ansible的主要特点之一是代理并不是部署到节点 ,但是完全借助SSH来进行通信。易学易用、具有一致性、高可靠性和安全性是让Ansible脱颖而出的其他特性。Ansible的唯一局限就是无法配置裸机和虚拟机。
5 Foreman
Foreman是另一种用于取证分析的开源配置管理工具。Foreman提供了仪表板,我们可以通过仪表板来配置裸机服务器和虚拟机。默认情况下,无论我们何时安装Foreman,它都使用Puppet作为配置工具。不过借助插件,Foreman还支持与其他配置管理工具整合起来,比如Chef、Puppet、Ansible、Salt及其他众多工具。Foreman自动化工具还随带各种各样的接口,包括命令行接口、Web前端以及REST API。Foreman的其他一些显著功能包括如下:
通过仪表板,管理Puppet模块和puppet类方面的改动;
很容易从Foreman仪表板来管理Puppet环境;
由于仪表板,创建主机群(Hosts Group)以及为主机群添加puppet模块变得很轻松;
可以从Foreman仪表板,轻松添加Puppet模块或推送到节点。
6 Katello
Katello是另一种开源自动化工具。换而言之,我们可以说Katello是一种开源版的Red Hat satellite Server;如果我们不想花钱在企业产品及其支持上,就可以用它来代替Red Hat satellite Server。Katello已被Foreman收购,Foreman中的大部分功能在Katello中也得到了支持。Katello Server的主要功能如下:
给基于Linux的服务器(RHEL和CentOS )打补丁;
使用Pulp Service来同步代码库;
使用Foreman进行各种配置;
它还可以处理订阅内容管理,并审计所有已部署的软件包;
借助Katello,你可以为所有主机创建主机群,另外还可以在单一主机或一群主机上批量执行操作。
7 Nagios
Nagios现在名为Nagios Core,它是一种开源自动化和监控工具,可以管理基础设施中的所有系统。它还提供警报服务,一旦察觉到你的网络中哪里有问题,就会提醒系统管理员。借助SNMP以及Nagios,系统管理员还可以控制并管理打印机、路由器和交换机。Nagios让我们得以创建事件处理工具,一旦某个应用程序及其服务停运,就可以自动重启出现故障的那个应用程序及其服务。
1、修改用户名和密码右击我的电脑-管理,然后在弹出的计算机管理界面中,点击“本地用户和组”在右侧找到你登录时候用的用户名,右击-设置密码即可设置该用户名的新密码,如果修改用户名可以右击-重命名即可修改。
2、磁盘管理右击我的电脑-管理,然后在弹出的计算机管理界面中,点击“磁盘管理”右侧黑色的代表为指派的磁盘空间右击黑色未指派磁盘-新建磁盘分区-新建磁盘分区向导-选折主磁盘分区(大小根据需求设置)-指派磁盘驱动器号-执行快速格式化-完成。更改盘符的卷标-右击该盘符-更改驱动器号和路径-指派驱动器号。
3、更改3389远程登录端口 Windows默认的远程登录端口是3389,有的时候为了安全考虑,需要更改远程端口。点击开始-运行-输入regedit打开注册表编辑器,由于注册表上有很多信息,最简单的方法寻找需要修改端口的地方,键盘ctrl+F,弹出搜索框,输入Portnumber进行查找,可能会搜到几处选项,注意查找值为3389的名称。需要修改的地方有两个-双击portnumber,选择十进制,将3389更改为别的数字,最好是越大越好,当然在65535之内,因为大的数字别的程序占用的几率比较小。
4、防火墙安全配置修改完成后,一定要查看本地的防火墙用没有打开,如果打开,需要在防火墙中将修改后的端口添加到例外。右键网上邻居-选择属性-网络连接-右键本地连接-属性-高级-设置,打开windows防火墙,选择例外选项。
第一步 - 安装 Java OpenJDK 7
Jenkins 基于 Java,因此我们需要在服务器上安装 Java OpenJDK 7。在这里,我们会从一个 PPA 仓库安装 Java 7,首先我们需要添加这个仓库。
默认情况下,Ubuntu 1604 没有安装用于管理 PPA 仓库的 python-software-properties 软件包,因此我们首先需要安装这个软件。使用 apt 命令安装 python-software-properties。
apt-get install python-software-properties
下一步,添加 Java PPA 仓库到服务器中。
add-apt-repository ppa:openjdk-r/ppa
用 apt 命令更新 Ubuntu 仓库并安装 Java OpenJDK。
apt-get update
apt-get install openjdk-7-jdk
输入下面的命令验证安装:
java -version
你会看到安装到服务器上的 Java 版本。
第二步 - 安装 Jenkins
Jenkins 给软件安装包提供了一个 Ubuntu 仓库,我们会从这个仓库中安装 Jenkins。
用下面的命令添加 Jenkins 密钥和仓库到系统中。
wget -q -O - https://pkgjenkinsio/debian-stable/jenkinsiokey | sudo apt-key add -
echo 'deb https://pkgjenkinsio/debian-stable binary/' | tee -a /etc/apt/sourceslist
更新仓库并安装 Jenkins。
apt-get update
apt-get install jenkins
安装完成后,用下面的命令启动 Jenkins。
systemctl start jenkins
通过检查 Jenkins 默认使用的端口(端口 8080)验证 Jenkins 正在运行。我会像下面这样用 netstat 命令检测:
netstat -plntu
Jenkins 已经安装好了并运行在 8080 端口。
第三步 - 为 Jenkins 安装和配置 Apache 作为反向代理
在这篇指南中,我们会在一个 Apache web 服务器中运行 Jenkins,我们会为 Jenkins 配置 apache 作为反向代理。首先我会安装 apache 并启用一些需要的模块,然后我会为 Jenkins 用域名 myjenkinsid 创建虚拟主机文件。请在这里使用你自己的域名并在所有配置文件中出现的地方替换。
从 Ubuntu 仓库安装 apache2 web 服务器。
apt-get install apache2
安装完成后,启用 proxy 和 proxy_http 模块以便将 apache 配置为 Jenkins 的前端服务器/反向代理。
a2enmod proxy
a2enmod proxy_http
下一步,在 sites-available 目录创建新的虚拟主机文件。
cd /etc/apache2/sites-available/
vim jenkinsconf
粘贴下面的虚拟主机配置。
<Virtualhost :80>
ServerName myjenkinsid
ProxyRequests Off
ProxyPreserveHost On
AllowEncodedSlashes NoDecode
<Proxy http://localhost:8080/>
Order deny,allow
Allow from all
</Proxy>
ProxyPass / http://localhost:8080/ nocanon
ProxyPassReverse / http://localhost:8080/
ProxyPassReverse / http://myjenkinsid/
</Virtualhost>
保存文件。然后用 a2ensite 命令激活 Jenkins 虚拟主机。
a2ensite jenkins
重启 Apache 和 Jenkins。
systemctl restart apache2
systemctl restart jenkins
检查 Jenkins 和 Apache 正在使用 80 和 8080 端口。
netstat -plntu
第四步 - 配置 Jenkins
Jenkins 用域名 'myjenkinsid' 运行。打开你的 web 浏览器然后输入 URL。你会看到要求你输入初始管理员密码的页面。Jenkins 已经生成了一个密码,因此我们只需要显示并把结果复制到密码框。
用 cat 命令显示 Jenkins 初始管理员密码。
cat /var/lib/jenkins/secrets/initialAdminPassword
a1789d1561bf413c938122c599cf65c9
将结果粘贴到密码框然后点击 Continue。
现在为了后面能比较好的使用,我们需要在 Jenkins 中安装一些插件。选择 Install Suggested Plugin,点击它。
Jenkins 插件安装过程:
安装完插件后,我们需要创建一个新的管理员密码。输入你的管理员用户名、密码、电子邮件等,然后点击 'Save and Finish'。
点击 start 开始使用 Jenkins。你会被重定向到 Jenkins 管理员面板。
成功完成 Jenkins 安装和配置。
第五步 - Jenkins 安全
在 Jenkins 管理员面板,我们需要为 Jenkins 配置标准的安全,点击 'Manage Jenkins' 和 'Configure Global
Security'。
Jenkins 在 'Access Control' 部分提供了多种认证方法。为了能够控制所有的用户权限,我选择了 'Matrix-based Security'。在复选框 'User/Group' 中启用 admin 用户。通过勾选所有选项给 admin 所有权限,给 anonymous 只读权限。现在点击 'Save'。
你会被重定向到面板,如果出现了登录选项,只需输入你的管理员账户和密码。
第六步 - 测试一个简单的自动化任务
在这一部分,我想为 Jenkins 服务测试一个简单的任务。为了测试 Jenkins 我会创建一个简单的任务,并用 top 命令查看服务器的负载。
在 Jenkins 管理员面板上,点击 'Create New Job'。
输入任务的名称,在这里我输入 'Checking System',选择 Freestyle Project 然后点击 OK。
进入 Build 标签页。在 Add build step,选择选项 Execute shell。
在输入框输入下面的命令。
top -b -n 1 | head -n 5
点击 Save。
现在你是在任务 'Project checking system' 的任务页。点击 Build Now 执行任务 'checking system'。
任务执行完成后,你会看到 Build History,点击第一个任务查看结果。
下面是 Jenkins 任务执行的结果。
到这里就介绍完了在 Ubuntu 1604 中用 Apache web 服务器安装 Jenkins 的内容。
Tomcat服务器 具有一个常用的功能: 即自动编译,自动发布,自动部署功能
问题: 当我们第一次发布程序以后,我们增删改Servelt,Java,xml等文件,都必须重启Tomcat,如果项目巨大,那么
这是在浪费时间!
分析: Tomcat 自带了自动部署功能,只要我们在Tomcat安装目录下的Serverxml中的<host>中添加<context>标
签即可
实例: Tomcat安装目录: C:\Program Files\Apache Software Foundation\Tomcat 60\conf 下的serverxml中
的<host>标签中添加如下代码:
<Context path="" reloadable="true" docBase="E:\code_center\my_code\eclipse_code\TomcatTest\WebRoot"/>
配置文件解析:
path : 此项目的发布路径为空即为http://localhost:8080为该项目默认的路径,取消了项目名
reloadable: 是否在程序文件改变的时候重新加载
docBase: 源文件的配置文件页面和已编辑的文件存在的目录,一般都到WebRoot下
设置服务器为debug模式(debug onserver),否则修改不起作用
在软件开发中,通常会使用不同的配置文件来分别配置测试、开发和运行环境。下面是一些通用的做法:
测试环境配置文件:
在测试环境中,通常需要模拟生产环境的配置,以便进行有效的测试。测试环境的配置文件应该包含以下内容:
- 数据库配置:包括数据库类型、地址、端口、用户名和密码等。
- 日志配置:控制日志级别和输出位置。
- 缓存配置:指定缓存类型和设置缓存大小等。
- 邮件配置:指定邮件服务器地址、端口号和认证信息等。
2 开发环境配置文件:
在开发环境中,通常需要一些额外的功能和便利性,以提高开发效率。因此,开发环境的配置文件应该包含以下内容:
- 调试配置:指定调试级别和调试信息输出位置。
- 自动部署配置:指定自动化部署的服务器地址和部署脚本等。
- 代码检查配置:指定需要使用的代码检查工具。
3 运行环境配置文件:
在生产环境中,安全性和性能是最重要的因素。因此,为了确保应用程序的安全性和高效性,生产环境的配置文件应该包含以下内容:
- 数据库配置:包括数据库类型、地址、端口、用户名和密码等。
- 日志配置:控制日志级别和输出位置,同时记录必要的安全日志。
- 缓存配置:指定缓存类型和设置缓存大小等,以提高性能。
- 安全配置:包括防火墙设置、加密算法和认证等。
需要注意的是,上述只是一些通用的做法,并不适用于所有情况。在实际应用中,您可以根据自己的需求和具体情况来定义和使用配置文件。
0条评论