环境准备:操作系统选型、基础软件安装与网络配置

说实话,环境准备这一步,看着简单,但最容易翻车。我见过太多人一上来就急着装软件,结果后面各种版本冲突、端口被占、防火墙挡路,折腾半天才发现是基础没打好。咱们这节课,就把这些坑提前填上。

操作系统选型:别纠结,选你熟悉的

验证服务部署,说白了就是跑在 Linux 上。我个人习惯用 Ubuntu 20.04 LTS 或 CentOS 7.9。为什么是这两个?

  • Ubuntu 20.04:包管理方便,社区活跃,Python3 默认就是 3.8,省事。
  • CentOS 7.9:生产环境里存量很大,如果你公司还在用老系统,这个更稳。

嗯,这里要注意:别追新。Ubuntu 22.04 虽然新,但有些 Docker 版本和内核模块的兼容性我踩过坑。CentOS 8 已经停止维护了,别碰。

特性 Ubuntu 20.04 LTS CentOS 7.9
默认 Python 版本 3.8 2.7(需手动装3.x)
包管理器 apt yum
Docker 安装 官方脚本一键搞定 需添加 yum 源
内核版本 5.4+ 3.10
适合场景 开发/测试环境 老旧生产环境
我的建议:如果你是自己练手,直接上 Ubuntu 20.04。少折腾,把精力留给后面的验证服务本身。

基础软件安装:Git、Docker、Python3

这三样是验证服务的「三驾马车」。咱们一个一个来,别急。

1. Git:版本控制的基础

Git 安装很简单,但版本要注意。太老的 Git 不支持一些新特性,比如 --depth 浅克隆在某些场景下会报错。

# Ubuntu
sudo apt update
sudo apt install git -y
git --version

# CentOS
sudo yum install git -y
git --version

安装完记得配一下全局用户信息,不然 commit 时会报错。我曾经见过一个同事,配了邮箱但没配用户名,结果代码提交记录全是「unknown」,查问题的时候差点崩溃。

git config --global user.name "Your Name"
git config --global user.email "your.email@example.com"

2. Docker:容器化的核心

Docker 安装我推荐用官方脚本,干净利落。别用系统自带的包管理器装,版本太旧。

# 官方一键安装脚本(Ubuntu/CentOS 通用)
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh

# 启动并设置开机自启
sudo systemctl start docker
sudo systemctl enable docker

# 验证
sudo docker run hello-world
避坑指南:我曾经在 CentOS 7 上直接用 yum 装 Docker,结果装了个 1.13 的远古版本,连 docker-compose 都跑不起来。后来老老实实用官方脚本,再也没出过问题。

装完 Docker,记得把当前用户加入 docker 组,不然每次都要 sudo,很烦。

sudo usermod -aG docker $USER
# 退出重新登录,或者执行 newgrp docker 生效

3. Python3:验证服务的执行引擎

Ubuntu 20.04 默认自带 Python 3.8,够用。CentOS 7 默认是 Python 2.7,需要手动装 3.x。

# Ubuntu 检查
python3 --version

# CentOS 安装 Python 3.6(或更高版本)
sudo yum install centos-release-scl -y
sudo yum install rh-python36 -y
scl enable rh-python36 bash
python3 --version

我个人习惯用 python3 -m venv 创建虚拟环境,避免包冲突。你想想看,如果所有项目都共用一套 Python 包,迟早会出问题。

# 创建虚拟环境
python3 -m venv venv
source venv/bin/activate
pip install --upgrade pip

网络与防火墙配置:别让安全策略卡住你

验证服务通常需要暴露一些端口,比如 API 端口(8000)、监控端口(9090)等。如果防火墙没配好,服务跑起来了也访问不了。

1. 检查防火墙状态

# Ubuntu (ufw)
sudo ufw status

# CentOS (firewalld)
sudo systemctl status firewalld

2. 开放必要端口

我一般会开放以下端口:

端口 用途 协议
22 SSH 远程连接 TCP
80/443 HTTP/HTTPS TCP
8000 验证服务 API TCP
9090 Prometheus 监控 TCP
2375/2376 Docker API(慎开) TCP
# Ubuntu
sudo ufw allow 22/tcp
sudo ufw allow 80/tcp
sudo ufw allow 8000/tcp
sudo ufw enable

# CentOS
sudo firewall-cmd --permanent --add-port=22/tcp
sudo firewall-cmd --permanent --add-port=8000/tcp
sudo firewall-cmd --reload
注意:Docker API 端口(2375)默认是未加密的,千万别在生产环境开放到公网。我见过有人图方便直接暴露,结果被挖矿程序盯上,服务器直接变矿机。

3. Docker 网络模式选择

Docker 默认使用 bridge 网络,容器之间通过 IP 通信。如果你需要容器和宿主机共享网络,可以用 host 模式。但 host 模式会绕过防火墙,安全性要自己把控。

# bridge 模式(默认)
docker run -p 8000:8000 my-service

# host 模式
docker run --network host my-service

整体环境准备流程图

下面这张图,把整个环境准备的流程串起来了。你可以照着这个顺序一步步来,基本不会出错。

环境准备流程图 环境准备核心流程 操作系统选型 基础软件安装 Git Docker Python3 网络与防火墙配置 验证环境就绪 提示:每一步完成后建议做一次简单验证,避免问题累积到最后才发现

环境验证清单

所有东西装完后,我习惯跑一遍这个清单,确保万无一失:

  1. Git 验证:git clone https://github.com/example/test-repo.git 能正常拉取代码。
  2. Docker 验证:docker run hello-world 能正常输出信息。
  3. Python3 验证:python3 -c "print('hello')" 能正常输出。
  4. 防火墙验证:从另一台机器 telnet your-server-ip 8000 能通。
  5. Docker 网络验证:启动一个 Nginx 容器,curl localhost:8000 能返回页面。

核心要点:环境准备不是一次性的。每次部署新服务前,都检查一下基础软件版本和防火墙规则。我习惯把这些检查写成脚本,每次部署前自动跑一遍,省心。