CodeGym /课程 /Python SELF ZH /代码部署到服务器

代码部署到服务器

Python SELF ZH
第 64 级 , 课程 2
可用

3.1 修改代码

如我上面所说,软件开发就是要不停地对代码做出小改动。 这个过程已经有数百万程序员搞了好几十年,所以它被调试、标准化和形式化得非常彻底。

用来存储代码的有一款特别的软件——Git。 Git 是一个分布式版本控制系统。 它不仅仅存储代码,还可以跟踪代码中的所有变化,并帮助程序员 协同工作而不互相干扰。

使用 Git,开发人员可以创建项目的不同版本(分支), 保存完整的更改历史,甚至可以回到 过去的任何一个时间点。感觉就像代码的时间机器!Git 还能 合并变化并解决冲突,因此它成为了现代开发中团队协作的主要工具。

3.2 项目构建

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

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

构建不仅仅是编译,尽管编译通常是构建过程的一部分。构建完成后,你可能会有几十甚至几百个文件需要上传到不同的服务器。

构建工具可以是低级的,比如:

MavenGradle 在 Java 项目中被广泛用于管理依赖关系和项目构建。

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

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

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

Webpack——常用于构建 JavaScript 应用程序,管理依赖关系和模块。

GulpGrunt——工具,帮助自动化开发 网络应用程序中经常执行的任务,比如文件缩小和将 SCSS 编译为 CSS。

也有一些高级构建工具,下面会讲到。

3.3 CI/CD

CI/CD(持续集成/持续交付)是一种方法,意味着不断地将所有开发分支的更改合并到主分支中,以及自动测试和部署这些更改。这使得可以快速发现和修复错误,提高开发效率和速度。

最常见的 CI/CD 系统之一,尽管有点老旧,是 Jenkins。如果你在一家小公司工作,有 80% 的可能性会使用它。

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

如果你去了一家大公司,那可能还有其他 5 种选择:

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

GitLab CI——GitLab 的内置部分,提供 持续集成和交付,可以通过 YAML 文件进行配置。

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

Travis CI——最早的云端 CI 服务之一, 用于许多开源项目。与 GitHub 的集成很好。

Bamboo——Atlassian 旗下的产品,与 Jira 和 Bitbucket 等公司其他工具紧密集成。

了解这些工具并不需要精通——公司通常有 DevOps 专家来配置这些过程。你所需要做的就是知道它们的存在,并在讨论中听到 Jenkins、CI/CD 或“持续集成”时能够理解。

3.4 项目上线到服务器

编写项目是一回事,但还要把它放到你的服务器上。其实项目的部署(deploy)到服务器是指把 网络应用程序放在服务器上并激活它,使用户可以通过互联网访问。

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

你觉得你的代码是怎么上到服务器上的?有人会把它传上去吗?还是说你会用 SSH 连接到远程服务器,上传几个文件 然后进行所有的设置?放轻松:现在没人这样做了。现在有 Docker。

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