CodeGym /课程 /JAVA 25 SELF /将代码部署到服务器

将代码部署到服务器

JAVA 25 SELF
第 10 级 , 课程 6
可用

1. 修改代码

正如我之前所说,软件开发本质上就是对代码进行小步更改。数以百万计的程序员在几十年间一直在做这件事,这使得这一流程被以各种方式充分打磨、标准化并形式化。

用于保存代码有一款专门的程序——GitGit 是一款分布式版本控制系统。它不仅能存储代码,还能跟踪其中的所有更改,并帮助程序员在不互相干扰的情况下协作开发项目 🤝。

借助 Git,开发者可以创建项目的不同版本(分支)、保留完整的变更历史,甚至回到过去的任意时刻。这就像给代码配了一台时光机!Git 还能帮助合并更改并解决冲突,因此成为现代团队协作开发的核心工具。👩‍💻

2. 构建项目

在对项目进行测试或上传至服务器之前,需要先完成构建。

🏗️ 项目构建是将项目的源代码编译为可执行程序或其他可运行形式的过程,通常还会包含测试与部署环节。这是软件开发中的关键环节,确保程序具备可用性。

构建不只是编译,尽管编译往往是构建流程的一部分。构建完成后,你可能会得到数十甚至数百个文件,需要把它们上传到不同的服务器上。

构建工具可以是偏底层的,比如:

  • MavenGradle——在 Java 项目中广泛使用,用于依赖管理与项目构建。
  • 🐜 Apache Ant——另一款用于 Java 项目构建的工具,提供高度灵活的构建脚本编写能力.
  • 🖥️ MSBuild——用于构建使用 Microsoft Visual Studio 创建的项目。
  • ⚙️ Make——经典的构建工具,通过 Makefile 定义构建规则,尤其在 C 和 C++ 项目中广受欢迎。
  • 🌐 Webpack——常用于构建 JavaScript 应用,负责依赖与模块管理。
  • 📜 GulpGrunt——帮助自动化 Web 应用开发中常见任务的工具,例如文件压缩与将 SCSS 编译为 CSS。

另外也有更高层的构建工具,下面会介绍。

3. CI/CD

🔄 CI/CD(Continuous Integration/Continuous Delivery,持续集成/持续交付)是一种方法论,强调将所有开发分支的更改持续合并到主分支,并对这些更改进行自动化测试与部署。这有助于快速发现与修复问题,提高开发效率与交付速度。

最普及、虽然稍显老牌的 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 或“continuous integration”时,明白对方在说什么即可。

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