环境准备:操作系统选型、基础软件安装与网络配置
说实话,环境准备这一步,看着简单,但最容易翻车。我见过太多人一上来就急着装软件,结果后面各种版本冲突、端口被占、防火墙挡路,折腾半天才发现是基础没打好。咱们这节课,就把这些坑提前填上。
操作系统选型:别纠结,选你熟悉的
验证服务部署,说白了就是跑在 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 |
| 适合场景 | 开发/测试环境 | 老旧生产环境 |
基础软件安装: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
装完 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
3. Docker 网络模式选择
Docker 默认使用 bridge 网络,容器之间通过 IP 通信。如果你需要容器和宿主机共享网络,可以用 host 模式。但 host 模式会绕过防火墙,安全性要自己把控。
# bridge 模式(默认)
docker run -p 8000:8000 my-service
# host 模式
docker run --network host my-service
整体环境准备流程图
下面这张图,把整个环境准备的流程串起来了。你可以照着这个顺序一步步来,基本不会出错。
环境验证清单
所有东西装完后,我习惯跑一遍这个清单,确保万无一失:
- Git 验证:
git clone https://github.com/example/test-repo.git能正常拉取代码。 - Docker 验证:
docker run hello-world能正常输出信息。 - Python3 验证:
python3 -c "print('hello')"能正常输出。 - 防火墙验证:从另一台机器
telnet your-server-ip 8000能通。 - Docker 网络验证:启动一个 Nginx 容器,
curl localhost:8000能返回页面。
核心要点:环境准备不是一次性的。每次部署新服务前,都检查一下基础软件版本和防火墙规则。我习惯把这些检查写成脚本,每次部署前自动跑一遍,省心。