CodeGym /课程 /C# SELF /部署代码到服务器

部署代码到服务器

C# SELF
第 10 级 , 课程 6
可用

1. 修改代码

就像我之前说的,软件开发其实就是不断在代码里做小改动。这个过程被成千上万的程序员用几十年,经过反复调试、标准化和正规化,变得非常成熟。

用来存储代码的专用工具叫做 GitGit 是一个分布式版本控制系统。它不仅仅存代码,还能追踪所有的改动,帮助程序员协作开发,不会互相干扰 🤝。

有了 Git,开发者可以创建不同的项目版本(分支),保存完整的变更历史,甚至随时回到过去的某个状态。这就像代码的时光机!Git还能帮忙合并改动、解决冲突,所以它成为现代团队开发的核心工具之一。👩‍💻

2. 构建项目

在测试或上传到服务器之前,必须先把项目“构建”出来。

🏗️ 项目构建,就是把源代码编译成可执行程序或其他运行格式,通常还会包括测试和部署。这是软件开发的关键环节,确保程序能正常用。

构建不只是简单的编译,虽然编译通常是构建的一部分。完成后,你可能会得到几十甚至几百个文件,要上传到不同的服务器。

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

  • MavenGradle — 在Java项目中很常用,用来管理依赖和构建流程。
  • 🐜 Apache Ant — 另一个Java构建工具,写脚本更灵活。
  • 🖥️ MSBuild — 用于微软Visual Studio创建的项目的构建。
  • ⚙️ Make — 经典的构建工具,用Makefile定义规则,特别在C/C++项目中流行。
  • 🌐 Webpack — 常用来打包JavaScript应用,管理依赖和模块。
  • 📜 GulpGrunt — 自动化常见任务,比如压缩文件、编译SCSS成CSS。

还有一些高级的构建工具,后面会讲到。

3. CI/CD

🔄 CI/CD(持续集成/持续交付),是一套流程,保证所有开发分支的改动都能持续合并到主分支,并自动测试和部署。这样可以快速发现问题,提升开发效率和质量。

最常用的CI/CD工具之一是 Jenkins。如果你在小公司工作,80%的可能性会用到它。

🤖 Jenkins,是个很流行的自动化系统,用来做持续集成和交付(CI/CD)。它可以自动化构建、测试、部署的各个环节,让代码质量更高,开发速度更快。

如果你在大公司,可能还会遇到其他几款:

  • 🚦 TeamCity — JetBrains出品的强大商业工具,和开发、测试环境集成紧密。
  • 📝 GitLab CI — GitLab自带的CI/CD功能,用YAML配置,灵活好用。
  • ☁️ CircleCI — 云端的CI/CD平台,支持自动测试和部署多个项目。
  • 🦑 Travis CI — 早期的云端CI服务,很多开源项目用它,和GitHub集成很好。
  • 🎍 Bamboo — Atlassian的产品,和Jira、Bitbucket配合紧密。

不用你全都掌握,通常公司里有专门的DevOps工程师负责这些流程。你只要知道它们存在,听到 Jenkins、CI/CD 或“持续集成”这些词也能明白大概意思。

4. 把项目部署到服务器

写完项目还不够,它还得跑到你的服务器上。部署(deploy)就是把你的Web应用放到服务器上,让用户能通过互联网访问 🚚

这个过程包括把项目文件传到服务器、配置环境、数据库、依赖包,还要调好网络和安全设置 😅。

你觉得你的代码会自己上传到服务器吗?有人会帮你操作?还是你自己用SSH连接远程服务器,上传文件,然后手动配置?别担心:现在都不用这么麻烦了。因为有 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