CodeGym /课程 /Frontend SELF ZH /在服务器上部署代码

在服务器上部署代码

Frontend SELF ZH
第 48 级 , 课程 2
可用

12.1 修改代码

就像我之前说的,现在的开发基本上就是对代码进行小的改动。数以百万计的程序员几十年来一直在做这事,所以这个过程已经被精心调整、标准化和形式化了。

首先,有一个专门用于管理代码的程序——Git。Git是一个分布式版本控制系统,用于跟踪代码的变更以及协调程序员在合作项目中的工作。

Git允许开发人员在项目中创建分支,同时保留完整的变更历史记录和回滚到文件任何状态的能力。这使得变更合并和冲突解决更加高效,使Git成为现代软件开发中代码协作的主要工具。

其次,更改代码的过程也已标准化。通常,每个新功能在Git中创建一个新分支,将更改提交成一系列的commit,然后发起Pull Request给你的团队负责人或团队同事,让他们进行Code Review并确认你的更改。

如果一切正常,你的更改会合并到dev分支中,项目会自动构建并运行测试。很多测试。

12.2 构建项目

在测试或上传项目到服务器之前,必须先构建它。

构建项目 —— 是将项目的源代码编译成可执行程序或其他可启动格式的过程,通常会包含测试和部署。这是软件开发中的关键部分,确保程序已准备好使用。

构建并不完全是编译,但编译往往是构建过程的一部分。构建完成后,你常常会有几十甚至几百个文件需要上传到不同的服务器。

构建工具可能是低级别的:

MavenGradle —— 通常用于Java项目的依赖管理和构建。

Apache Ant —— 另一个用于Java项目构建的工具,提供更大的灵活性编写构建脚本。

MSBuild —— 用于构建使用Microsoft Visual Studio创建的项目。

Make —— 经典的构建工具,使用Makefile定义构建规则,特别在C和C++项目中流行。

Webpack —— 常用于JavaScript应用的构建,管理依赖和模块。

GulpGrunt —— 帮助自动化Web应用开发中常见任务的工具,比如文件压缩和SCSS编译成CSS。

构建工具也可以是高级的。下面会讲到。

12.3 CI/CD

CI/CD(持续集成/持续交付) —— 是一种方法,强调从所有开发分支持续合并变更到主分支并自动测试和部署这些变更。这样可以快速发现并修复错误,提高开发效率和速度。

其中一个最常见的,虽然有点老旧的CI/CD系统是Jenkins。如果你在小公司工作,使用它的概率有80%。

Jenkins —— 是一个流行的自动化系统,用于持续集成和交付(CI/CD)。Jenkins允许你自动化软件开发的各个阶段,包括构建、测试和部署,从而提高代码质量并加快开发过程。

如果你进入一家大公司,可能还有另外五种选择:

TeamCity —— 是JetBrains的一款强大的商业系统,提供与各种开发和测试环境的深度集成。

GitLab CI —— 是GitLab的一部分,通过YAML文件配置,提供持续集成和交付。

CircleCI —— 是一个云端CI/CD服务,支持多个项目的测试和部署自动化。

Travis CI —— 是首批云端CI服务之一,被许多开源项目使用,与GitHub集成良好。

Bamboo —— 是Atlassian的产品,与该公司其他工具如Jira和Bitbucket紧密集成。

你不需要知道它们的所有细节和如何与它们合作:公司里通常有一个DevOps专家来设置这些构建流程。你只需要知道它们的存在,并了解当谈话中提到Jenkins、CI/CD或“持续集成”时的意义。

12.4 将项目部署到服务器

写完项目还不够,它还必须部署到你的服务器上。实际上将项目(deploy)部署到服务器上是一个将web应用程序部署并激活在服务器上的过程,以便用户可以通过互联网访问它。

这包括将项目文件传输到服务器、配置服务器环境、数据库、依赖项,以及配置网络设置和安全性。

你认为你的代码会如何到达服务器?有人会上传它吗?或者你可能会通过SSH连接到远程服务器,上传几个文件然后手动配置它们?放松:现在没人再这么做了。现在我们有了Docker。

Docker —— 是一个通过容器化技术来开发、部署和运行应用的平台。Docker使得应用程序的创建、部署和执行变得更加容易,它将应用程序及其所有环境和依赖项打包在一个紧凑的对象中,确保在开发、测试和生产的各个阶段环境的一致性。

Docker允许你将项目打包成Docker容器。就像虚拟机,只不过是非常轻量的。

而且虽然在任何Docker相关的论坛上,如果你把它称为虚拟机,都会被骂。但如果你知道什么是虚拟机,你可以把Docker容器想象成虚拟机。只不过是非常轻量的。

其实,Docker容器就是一种“虚拟的虚拟机”。虚拟机包含操作系统的完整副本、操作系统内核和虚拟硬件,而Docker容器共享主机的内核,可以更加轻便和快速。

而且使用Docker进行项目部署简化了应用程序的部署过程,带来了速度和可靠性。项目被打包进Docker容器,可以轻松地在任何支持Docker的系统上移动和运行。

这解决了服务器环境差异带来的问题,并可以轻松根据负载增加或减少容器来扩展应用程序。大家都转向Docker了——非常方便非常简单。

评论
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION