声明!
学习视频来自B站up主 **泷羽sec** 有兴趣的师傅可以关注一下,如涉及侵权马上删除文章,笔记只是方便各位师傅的学习和探讨,文章所提到的网站以及内容,只做学习交流,其他均与本人以及泷羽sec团队无关,切勿触碰法律底线,否则后果自负!!!!有兴趣的小伙伴可以点击下面连接进入b站主页[B站泷羽sec](https://space.bilibili.com/350329294)
系统和工具
链接:https://pan.quark.cn/s/7c366373a85e
提取码:5cuD链接:https://pan.baidu.com/s/1Rn7mA_-aEh60L_iX4PWjzg?pwd=2w25
提取码:2w25 解压密码:Sec工具
所提供的工具资料仅供学习之用。这些资料旨在帮助用户增进知识、提升技能,并促进个人成长与学习。用户在使用这些资料时,应严格遵守相关法律法规,不得将其用于任何非法、欺诈、侵权或其他不当用途。本人和团队不对用户因使用这些资料而产生的任何后果负责,包括但不限于因操作不当、误解资料内容或违反法律法规而导致的损失或损害。用户应自行承担使用这些资料的风险,并在使用前进行充分的了解和评估。
云技术介绍
云架构的发展历史
阶段一:传统基础设施构建阶段
背景:以前构建系统的时候,需要购买设备,租用数据中心机柜,然后搭建基础设施。
特点:在这个阶段,构建系统需要购买大量的硬件设备,租用数据中心机柜,并手动搭建基础设施。这种方式不仅成本高昂,而且灵活性差,难以适应快速变化的市场需求。
限制:资源利用率低,扩展性差,难以满足大规模、高并发的业务需求。
阶段二:虚拟化技术阶段
背景:随着处理器的不断进化,虚拟机出现了。它能把一台机器的资源分成多台机器来使用,提高了资源利用率,变得更加灵活可拓展,实现了从裸机基础设施到虚拟化基础设施的转变。
特点:虚拟化技术提高了资源利用率,使得资源更加灵活可拓展。通过虚拟化技术,企业可以构建出从裸机基础设施到虚拟化基础设施的转变,降低了成本,提高了效率。
代表技术:VMware、Hyper-V等虚拟化平台。
阶段三:容器化技术阶段
背景:接着,容器化技术登场,进一步提高了效率,实现了服务器,网络和存储的虚拟交付。
特点:容器化技术进一步提高了资源的利用效率,实现了服务器、网络和存储的虚拟交付。通过容器化技术,企业可以更加快速地部署和管理应用程序,降低了运维成本。
代表技术:Docker、Kubernetes等容器化平台和工具。
阶段四:云计算阶段
定义:现在,我们把最新一代的基础设施称为“云”。云计算不是单一的技术,而是众多技术的集合体,它包括了虚拟化技术、容器化技术、自动化技术、大数据技术等众多先进技术。
特点:云计算提供了按需付费、弹性扩展、高可用性等优势,使得企业可以更加灵活地应对市场需求的变化。通过云计算,企业可以快速地获取计算资源、存储资源和数据库资源等,降低了IT成本,提高了业务效率。
服务类型:云计算服务通常分为基础设施即服务(IaaS)、平台即服务(PaaS)和软件即服务(SaaS)三种类型。IaaS提供底层的计算、存储和网络资源;PaaS提供开发、测试和部署应用程序的平台;SaaS则提供完整的应用程序服务,用户无需关心底层的基础设施和平台。
云服务的定义与特点
定义:云是一种IT基础设施系统,它将资源的创建抽象在容错,地理分布和可扩展的物理基础设施之上。云服务是将原本需要在本地进行的计算、存储等任务,转移到由大量服务器组成的云端进行,用户只需通过网络即可访问和使用这些资源。云基础架构必须稳定,不能频繁出现终端。
特点:
无需下载与安装:用户无需在本地设备上下载和安装任何软件或应用,只需通过网络即可直接使用云服务提供的功能。
操作方便:云服务通常提供简洁易用的用户界面和丰富的在线帮助文档,使得用户无需具备专业的技术知识也能轻松上手。
功能丰富:云服务提供商不断更新和优化其功能,以满足用户日益多样化的需求。从简单的文件存储和共享,到复杂的数据分析和处理,云服务都能提供一站式的解决方案。
价格低廉:由于云服务采用了按需付费的模式,用户只需支付实际使用的资源费用,大大降低了初期的投资成本。
高度可扩展:云服务能够根据用户的需求动态调整资源分配,确保在业务高峰期也能提供稳定可靠的服务。
地理分布的云基础设施能够提高容错能力,而且云必须能够快速扩展,以满足各种需求。
有很多公有云有云服务商,比如Amzon Web Services(AWS),Azure,Google(GCP),还有华为云,腾讯云,阿里云等等。
组织可以使用OpenStack等工具在自己的数据中心搭建私有云,或者一部分业务运行在私有云中,一部分运行在共有云中。
云分类
基础设施即服务(IaaS)
定义:IaaS是一种云计算服务模式,它将计算资源(如服务器、存储、网络等)作为服务提供给用户。用户可以通过互联网租用这些资源,并根据自己的需求进行配置和管理。
特点:
提供底层的计算、存储和网络资源。
用户需要自行安装和配置操作系统、中间件和应用程序。
灵活性和可扩展性强,用户可以根据需求动态调整资源。
成本效益高,用户只需支付实际使用的资源费用。
平台即服务(PaaS)
定义:PaaS是一种云计算服务模式,它为用户提供了一个基于云端的开发和部署环境。用户可以在这个平台上开发、测试、部署和管理自己的应用程序,而无需关心底层基础设施的配置和管理。
特点:
提供应用程序开发、测试、部署和托管所需的平台和工具。
简化了应用程序的开发和部署过程,提高了开发效率。
支持多种编程语言和框架,满足不同开发者的需求。
用户可以专注于应用程序的功能实现,而无需担心底层基础设施的配置和管理。
软件即服务(SaaS)
定义:SaaS是一种云计算服务模式,它提供了直接交付已经构建好的应用程序。用户可以通过互联网访问这些应用程序,并根据自己的需求进行使用,而无需在本地安装和配置。
特点:
提供完整的应用程序服务,用户无需关心底层的基础设施和平台。
用户可以通过订阅或按需付费的方式使用应用程序。
应用程序的维护、升级和扩展由SaaS提供商负责。
用户可以随时随地通过互联网访问应用程序,提高了灵活性和便利性。
共享责任模型
共享责任模型的定义
共享责任模型(Shared Responsibility Model,SRM)是一种在云服务环境中,云服务提供商与客户之间共同分担云安全责任的框架。该模型强调,云服务的安全性不仅取决于云服务提供商的努力,还需要客户的积极参与和配合。
共享责任模型的原理
在共享责任模型中,云服务提供商和客户各自负责云堆栈的不同部分。云服务提供商通常负责云平台的安全性,包括主机操作系统、虚拟化层及其设施的物理安全性等。而客户则需要负责在云中的业务安全性,包括客户操作系统、应用程序软件、云计算实例的防火墙以及传输和空闲时的加密数据等。
共享责任模型的具体应用
以AWS为例,AWS明确支持共享责任模型,并详细阐述了其与客户在云安全方面的责任划分。AWS表示,其负责云平台的安全性,包括主机操作系统、虚拟化层以及物理设施的安全性等。而客户则需要负责其操作系统、应用程序、数据以及网络安全等方面的管理。
具体来说,AWS提供以下安全措施:
主机操作系统和虚拟化层安全:AWS负责管理和维护其主机操作系统和虚拟化层的安全性,包括定期更新补丁、监控和防御安全威胁等。
物理设施安全:AWS的数据中心具备严格的物理安全措施,如门禁系统、CCTV监控、物理访问审计等,以确保其物理设施的安全性。
而客户则需要负责以下安全措施:
操作系统和应用程序安全:客户需要负责其操作系统和应用程序的安全配置和更新,包括安装安全补丁、配置防火墙和入侵检测系统(IDS)等。
数据安全:客户需要对其存储在AWS云平台上的数据进行加密和保护,以防止数据泄露和篡改。
网络安全:客户需要配置和管理其云计算实例的网络访问控制,包括设置安全组、网络访问控制列表(NACL)等。
共享责任模型的注意事项
在采用共享责任模型时,需要注意以下几点:
明确责任划分:云服务提供商和客户之间需要明确各自的安全责任,以避免出现责任不清的情况。
定期评估和更新:随着云技术的不断发展和安全威胁的不断变化,云服务提供商和客户需要定期评估和更新其安全措施,以确保云环境的安全性。
加强沟通和协作:云服务提供商和客户之间需要加强沟通和协作,共同应对安全威胁和挑战。
共享责任模型的案例
以AWS上的数据泄露事件为例,如果数据泄露是由于AWS程序漏洞导致的,那么AWS可能需要承担一定的责任。但如果数据泄露是由于客户未能妥善配置其安全设置或管理其数据而导致的,那么客户则需要承担相应的责任。因此,在采用云服务时,客户需要认真了解并遵守云服务提供商的安全要求和指导,以确保其业务的安全性。
云架构
虚拟化
虚拟化是云架构的核心技术之一,它将物理硬件资源封装成多个独立的虚拟环境,实现了资源的共享和隔离。虚拟化技术具有以下几个特点:
资源抽象:虚拟化技术将物理硬件资源抽象成多个独立的虚拟环境,使得每个虚拟环境都可以独立运行操作系统和应用程序。
动态分配:虚拟化技术实现了计算资源的动态分配和灵活管理,可以根据实际需求调整虚拟环境的配置和数量。
资源隔离:虚拟化技术通过隔离机制,确保不同虚拟环境之间的数据和应用程序互不干扰,提高了系统的安全性和稳定性。
虚拟化技术可以分为全虚拟化、半虚拟化和硬件辅助虚拟化等多种类型。其中,全虚拟化技术通过软件方式模拟完整的计算机硬件系统,适用于各种操作系统和应用程序;半虚拟化技术则需要修改操作系统以更好地支持虚拟化环境;硬件辅助虚拟化技术则利用CPU等硬件特性来提高虚拟化性能。
容器
容器是一种轻量级、可移植的虚拟化技术,它允许在一个主机操作系统上运行多个独立的应用程序环境。容器技术具有以下几个特点:
轻量级:容器相对于虚拟机来说更加轻量级,因为它不需要模拟完整的硬件系统,只需要提供应用程序运行所需的环境。
可移植性:容器可以在不同的主机操作系统上运行,而无需进行额外的配置和修改。
高效性:容器通过共享主机操作系统的内核和资源,可以更加高效地利用计算资源。
容器技术的工作原理是利用操作系统的虚拟化功能,将应用程序及其依赖项打包成一个独立的容器,并在容器中运行。每个容器都包含了运行应用程序所需的全部组件,包括代码、运行时、系统工具、库和设置。这使得应用程序可以在任何容器化环境中一致地运行,而无需担心底层系统的差异。
云架构的其他关键技术
除了虚拟化和容器技术外,云架构还涉及以下关键技术:
分布式存储技术:云架构需要处理大量用户数据,因此必须采用高效、可靠的存储技术来确保数据的可用性和安全性。分布式存储技术通过将数据分散存储在多个节点上,提高了数据的可靠性和可用性。
网络通信技术:云架构需要支持低延迟、高带宽的网络连接,以确保用户能够流畅地使用云服务。网络通信技术是实现远程访问和实时交互的基础,需要支持多种网络协议和通信技术。
安全管理技术:云架构中涉及大量的用户数据和应用程序,因此必须确保数据的安全性和隐私性。安全管理技术需要采用多层次的防护机制来确保用户数据的安全性和隐私性,同时支持实时的安全监控和应急响应以应对各种潜在的安全威胁。
云架构设计
组件选择
架构确定:在设计云架构之前,首先需要明确业务需求、应用场景以及性能要求等,从而确定适合的架构类型,如微服务架构、分布式架构等。一旦确定了架构类型,就很难进行大规模的更改,因此这一步骤需要格外谨慎。
组件选择:组件可以分为绑定组件和非绑定组件。绑定组件通常与特定的云服务商或技术栈紧密相关,而非绑定组件则更加通用和灵活。组件的来源可以是自己开发、使用开源组件或购买商业组件。云原生组件是专为分布式系统设计的,具有高度的可扩展性、可靠性和安全性。这些组件通常是开源的,但也可以选择购买商业支持。
安全编码:无论选择哪种组件,都需要确保安全编码。这包括使用最新的安全协议、避免常见的安全漏洞以及进行定期的安全审计。
基础设施即代码(IaC)
基础设施即代码是一种将基础设施配置和管理过程自动化的方法。它允许开发人员使用代码来描述和部署基础设施,从而提高了效率和可靠性。以下是IaC的几个关键方面:
引导介质:Packer是一个开源工具,用于创建机器镜像。它可以从各种源(如ISO文件、虚拟机快照等)创建镜像,并支持多种操作系统和云平台。
安装系统:Terraform是一个开源的基础设施即代码工具,用于安全、高效地部署和管理云基础设施。它允许开发人员使用声明式语言来描述基础设施的期望状态,并自动执行必要的配置和部署操作。
自动配置:Ansible是一个开源的自动化工具,用于配置管理、应用部署和任务自动化。它支持多种操作系统和云平台,并提供了丰富的模块和插件来简化配置过程。
状态强制:Monit是一个系统监控和管理工具,用于监控进程、文件系统、网络等。它可以在检测到异常时自动执行指定的操作,如重启进程、发送警报等。
整体架构设计
在确定了组件和IaC工具后,就可以开始设计整体架构了。这包括确定各个组件之间的交互方式、数据流动路径、安全策略等。以下是一些建议:
模块化设计:将整个架构拆分成多个独立的模块,每个模块负责特定的功能或服务。这有助于提高系统的可扩展性和可维护性。
高可用性设计:通过负载均衡、冗余备份和故障转移等技术来提高系统的可用性。确保在部分组件出现故障时,整个系统仍然能够正常运行。
安全性设计:采用多层次的防护机制来确保数据的安全性和隐私性。包括使用加密技术、访问控制、安全审计等。
性能优化:根据业务需求和应用场景对系统进行性能优化。包括优化数据库查询、使用缓存技术、减少网络延迟等。
集成部署
持续集成和持续交付(CI/CD)管道
CI/CD管道是云构建集成部署的核心,它实现了从代码编写到部署的自动化流程。以下是CI/CD管道的关键步骤:
代码版本控制:使用版本控制系统(如Git)来管理代码,确保团队成员可以协同开发,同时保持代码的可追溯性。
自动化构建:使用自动化构建工具(如Jenkins、Travis CI)来自动化构建过程,确保代码在每次提交后能够自动编译、测试和构建。
自动化测试:编写自动化测试,包括单元测试、集成测试和端到端测试。测试用例的自动运行可以在代码变更时及时检测问题。
持续集成:配置持续集成服务器,定期或在代码提交时自动执行构建和测试,及时发现问题并进行修复。
自动化部署:使用自动化部署工具(如Jenkins、GitLab CI/CD)来自动化部署应用程序到目标环境。
GitOps:GitOps是一种基于Git的离散交付和部署的操作框架模型,它使开发者使用Git,而不是传统的连续交付管道,来进行集群管理和应用程序部署。
弹性可靠性
弹性可靠性是云构建集成部署的重要方面,它确保了系统在面临单点故障时能够持续提供服务。以下是实现弹性可靠性的关键策略:
冗余设计:通过冗余部署、故障转移和数据备份策略来提高系统的可靠性和可用性。
弹性伸缩:利用云计算平台的弹性伸缩功能,根据负载自动调整资源,确保交付过程的稳定性。
故障检测和恢复:采用自动化的故障检测工具,可以快速识别和修复故障,提高系统的响应速度和可用性。
全球负载均衡(GSLB)
全球负载均衡是解决客户单访问单点故障隐患的有效手段。它通过智能DNS或全局流量管理器等技术,将用户请求分发到全球范围内的多个数据中心,从而实现负载均衡和故障转移。GSLB还可以根据用户的位置、网络状况等因素,选择最优的数据中心提供服务,提高用户体验。
控制保护
控制保护是确保系统免受漏洞和内部攻击的关键。以下是实现控制保护的关键措施:
访问控制:实施严格的访问控制机制,只允许授权的用户和应用程序访问系统资源。
安全审计:定期进行安全审计和漏洞扫描,及时发现并修复潜在的安全问题。
数据加密:对敏感数据进行加密存储和传输,确保数据的安全性和隐私性。
监控和报警:配置监控和报警系统,及时发现并解决运行时问题。
云设计模式
微服务架构
微服务架构是一种将应用程序构建为一组小型、自治的服务的方法,每个服务都运行在其独立的进程中,服务间通过轻量级通信机制进行通信。这种架构模式具有以下特点:
模块化服务:微服务架构将应用程序划分为多个独立的服务,每个服务都专注于特定的业务功能,从而实现了代码的模块化和服务的松散耦合。
独立部署和扩展:由于每个微服务都是独立的,因此可以独立地进行代码修改、部署和扩展,无需影响其他服务。这提高了系统的弹性和容错能力。
技术栈灵活性:微服务架构允许使用不同的技术栈来开发不同的服务,从而可以根据业务需求选择最佳的技术方案。
安全优势:每个微服务都被强化和隔离,因此单一服务的漏洞对整体系统的影响较小,提高了系统的安全性。
然而,微服务架构也存在一些挑战:
调试复杂性:由于服务之间的交互增多,调试和跟踪事务变得更加复杂。
性能瓶颈:微服务之间的通信可能会引入额外的网络延迟,从而影响系统性能。
零信任架构
零信任架构是一种网络安全理念,它打破了传统的基于网络边界的信任模型,转而采用基于身份的访问控制和持续的信任评估。这种架构模式具有以下特点:
基于身份的访问控制:零信任架构以用户的身份为授权访问的关键,所有用户和设备在访问资源之前都必须经过严格的身份验证和授权检查。
持续的信任评估:授权决策不再依赖于传统的静态标准(如用户的地理位置或网络内部/外部),而是对用户的行为和环境进行连续监控,并根据实时数据动态调整访问权限。
动态访问管理:系统会不断监测用户的行为、设备状态和网络环境,以便在任何必要时刻迅速调整访问权限,确保只有合规的活动能够获得所需资源的访问。
最小化权限原则:按照“只必需”的原则来分配权限,确保用户和设备只能访问完成特定任务所必须的最少资源。
零信任架构的应用场景非常广泛,包括远程办公、多云环境、合作伙伴访问等。在实现零信任架构时,可以采用多种技术,如SDP(软件定义边界)、MSG(微隔离)、IAM(增强型身份治理)等。
安全控制
网络控制
在传统架构中,网络控制主要通过防火墙来实现。防火墙能够设置规则,允许或阻止特定的网络流量通过,从而保护内部网络免受外部威胁。然而,在云环境中,网络架构变得更加复杂和动态,因此传统的防火墙控制方式已经无法满足需求。云环境通常使用SDN(软件定义网络)和SD-WAN(软件定义广域网)来实现网络控制。
SDN:一种新型的网络架构,它将数据平面和控制平面分离,通过集中式的控制器来管理网络流量。SDN可以对不同的接口(如API或GUI)设置网络规则,从而实现更灵活、更细粒度的网络控制。SDN还支持虚拟化、网络编程和自动化部署等功能,可以大大简化网络管理和维护的难度。在SDN中,mTLS(相互传输层安全)不仅能加密流量,还能对客户端进行身份验证,确保只有拥有合法证书的客户端才能访问微服务。
SD-WAN:一种通过软件控制和网络虚拟化技术,优化和管理广域网(WAN)流量的解决方案。SD-WAN能够智能地选择最佳路径来传输数据,基于应用优先级、带宽利用率、延迟和其他性能指标来动态调整流量流向。SD-WAN还支持多种类型的连接(如MPLS、宽带互联网和LTE),能够灵活接入不同的数据中心和云服务平台。在多云环境下,SD-WAN可以实现自动化服务交付、负载均衡、安全管理等功能,提高云计算的性能、稳定性和安全性。
身份管理
身份管理是指对用户身份进行验证、授权和管理的过程。在企业和云环境中,身份管理对于确保数据安全和访问控制至关重要。
企业身份管理:企业通常使用AD(活动目录)和LDAP(轻量目录访问协议)进行身份管理。这些系统能够存储用户账户信息、密码和权限等,并支持对用户进行身份验证和授权。在企业中,身份管理通常与访问控制系统集成,以实现对资源(如文件、数据库和应用程序)的细粒度访问控制。
云身份管理:随着云计算的普及,云身份管理变得越来越重要。云身份提供者(IdP)作为真实身份来源,是更安全的解决方案。
安装及使用容器
虚拟化中每个 VM 需要运行自己的操作系统,大大增加了总体开销。容器化是更现代的架构,容器共享内核与硬件,更快、更小、更高效。容器是对虚拟化的补充,而非取代。容器的系统开销更小,可以进一步分离应用组件,比如搜索、登录、查询、订单功能分开。容器使用映像作为模板生成,映像相当于计算机硬盘。容器使用不同发行版文件加载内核,运行容器。
Docker
安装docker
通过apt-get安装docker
sudo apt-get install docker.io
启动docker
启动docker并查看服务状态
systemctl start docker
systemctl status docker
Docker换源
使用vi编辑器编辑daemon.json文件进行换源
sudo vi /etc/docker/daemon.json
拉取镜像
拉取centos的docker镜像
docker pull centos:7.6.1810
运行镜像
docker run -it --name my_centos7 centos:7.6.1810 /bin/bash
-it:这是两个选项的组合。
-i 或 --interactive:保持容器的标准输入(STDIN)开放,即使没有附加任何东西也是如此。
-t 或 --tty:分配一个伪终端(pseudo-TTY)或终端。
--name my_centos7:这个选项为容器指定了一个名称(my_centos7)。
centos:7:这指定了要使用的Docker镜像。如果本地没有这个镜像,Docker会从Docker Hub上拉取它。
/bin/bash:这是在容器内部要执行的命令。这个Bash会话将是交互式的。
创建apache容器
docker container run -d --rm -p 8080:80 httpd
-d:这个选项告诉Docker以“detached mode”(后台模式)运行容器。这意味着容器会在后台运行。
--rm:这个选项告诉Docker在容器停止时自动删除它。
-p 8080:80:这个选项用于端口映射。它将容器内部的80端口映射到宿主机的8080端口上。可以通过访问宿主机的8080端口来访问容器内部运行的Apache HTTP服务器。
httpd:这是要运行的Docker镜像的名称。
访问apache容器
常用命令
查看所有容器
docker container ls
进入特定容器
docker exe -it 899 /bin/bash
停止容器
dochker container stop 899
挂载宿主机目录运行容器
dock container run -d --rm -p 8080:80 -v /home/user/webroot/:/usr/local/apache2/htdocs/ httpd
列出所有正在运行的容器
docker ps
查看特定容器的进程信息
Kubernetes(K8S)
Kubernetes(k8s)介绍
Kubernetes 通常简称为 K8s,是一个开源的容器编排平台。
它可以自动化部署、扩展和管理容器化应用程序,在多个服务器上高效运行容器,确保应用的高可用性和可扩展性。
Kubernetes 的核心概念
Pod:是 Kubernetes 中最小的可部署单元,可包含一个或多个容器,这些容器共享网络命名空间和存储卷,一起被调度和管理。
Deployment:用于管理 Pod 的副本数量和更新策略,确保应用始终保持指定数量的副本在运行,可实现滚动更新等功能。
Service:定义一组 Pod 的访问方式,提供稳定的 IP 地址和端口,让外部可以访问到一组 Pod。
Node:是 Kubernetes 中的工作节点,可以是物理服务器或虚拟机。每个 Node 上运行着 Kubelet 和容器运行时,负责管理容器的生命周期。
安装 Kubernetes
安装 Minikube(用于本地开发的 Kubernetes 环境):下载安装包,根据操作系统选择合适版本,按照安装向导进行操作。
启动 Minikube:打开终端,运行“minikube start”命令。
部署应用到 Kubernetes
创建一个 Deployment:“kubectl create deployment nginx --image=nginx”,部署 Nginx 服务器。
查看 Deployment:“kubectl get deployments”。
创建一个 Service:“kubectl expose deployment nginx --port=80 --type=NodePort”,让外部访问 Nginx 服务器。
查看 Service:“kubectl get services”。
访问应用
在 Service 信息中找到 NodePort 的端口号,使用“<Minikube IP>:<NodePort>”在浏览器中访问 Nginx 服务器。
扩展应用
扩展 Deployment 的副本数量:“kubectl scale deployment nginx --replicas=3”。
查看副本数量:“kubectl get deployments”。
更新应用
更新 Deployment 的镜像:“kubectl set image deployment/nginx nginx=new-image:version”。
查看更新进度:“kubectl rollout status deployment/nginx”。
Git
Git 是一个分布式版本控制系统,用于跟踪文件的变化,方便团队协作开发软件项目。可以记录文件的历史版本,允许开发者在不同版本之间切换,并且可以合并多个开发者的修改。
安装 Git
在不同操作系统上安装方法不同:
Windows:从 Git 官方网站下载安装程序进行安装。
macOS:使用 Homebrew 等包管理器安装 Git。
Linux:通过系统的包管理器安装 Git,如在 Ubuntu 上使用“sudo apt-get install git”。
Git 的安全措施
保护 Git 仓库很重要,因为它通常包含项目的源代码和敏感信息。
使用强密码,为 Git 远程仓库设置强密码,避免简单或常用密码。
限制访问权限,只授予必要人员访问权限,可使用 Git 提供的权限管理功能或第三方工具。
避免提交敏感信息,若不小心提交,可使用“git rm --cached <文件名>”从暂存区删除,然后“git commit --amend”修改上一次提交。创建“.gitignore”文件,列出不需要被跟踪的文件和目录。
确保与 Git 远程仓库的通信是加密的,可以使用 SSH 或 HTTPS 协议进行通信。
定期进行安全审计,检查 Git 仓库的安全性,包括权限设置、敏感信息泄露等,可使用第三方工具。
定期备份 Git 仓库,防止数据丢失,可以使用 Git 的备份工具或复制到其他存储设备中。
克隆仓库:“git clone <远程仓库地址>”。
处理冲突:当多个开发者同时修改同一个文件时,可能会出现冲突,在合并分支时需要手动解决冲突,然后提交更改。
创建分支:“git branch <分支名>”。
切换分支:“git checkout <分支名>”。
合并分支:在一个分支上完成工作后,可将其合并到另一个分支。先切换到目标分支,然后使用“git merge <源分支名>”命令进行合并。
初始化仓库:“git init”。
添加文件:“git add <文件名>”或“git add.”。
提交更改:“git commit -m "提交说明"”。
查看状态:“git status”。
查看历史记录:“git log”。