Linux服务器环境配置与Python开发环境搭建完全指南
·
本文基于CentOS 7/8和Ubuntu 22.04 LTS系统,涵盖系统管理、环境配置、Python安装、深度学习框架部署等实战内容。
一、系统基础信息查看
1.1 查看操作系统版本
在开始任何配置之前,首先需要确认操作系统类型和版本:
# CentOS/RHEL 系统
cat /etc/redhat-release
# 通用方法(适用于所有Linux发行版)
cat /etc/os-release
Ubuntu 22.04 LTS 输出示例:
PRETTY_NAME="Ubuntu 22.04.5 LTS"
NAME="Ubuntu"
VERSION_ID="22.04"
VERSION="22.04.5 LTS (Jammy Jellyfish)"
VERSION_CODENAME=jammy
ID=ubuntu
ID_LIKE=debian
1.2 查看服务器硬件配置
# 查看CPU详细信息
lscpu
# 查看每插槽核心数(线程数)
lscpu | grep "Core(s) per socket"
# 查看CPU核心总数
lscpu | grep "CPU(s):"
# 查看NUMA节点信息(多路服务器必备)
numactl --hardware
# 查看特定进程运行在哪个CPU核心
ps -o pid,psr,comm -p [PID]
二、系统初始化配置
2.1 防火墙与SELinux配置
生产环境建议: 内网环境可关闭防火墙,公网环境建议开放特定端口而非完全关闭。
# 关闭防火墙并禁用开机启动
systemctl disable firewalld --now
# 查看防火墙状态
systemctl status firewalld
# 配置SELinux为宽容模式(Permissive)
sed -i 's/SELINUX=enforcing/SELINUX=permissive/g' /etc/selinux/config
setenforce 0
# 验证SELinux状态
getenforce
2.2 配置YUM镜像源(CentOS)
备份现有仓库文件:
sudo mkdir -p /etc/yum.repos.d/backup
sudo mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/backup/
配置阿里云基础源:
cd /etc/yum.repos.d/
curl -o Centos_Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
sed -i -e '/mirrors.cloud.aliyuncs.com/d' -e '/mirrors.aliyuncs.com/d' Centos_Base.repo
配置SCL(Software Collections)源(用于安装高版本GCC):
vim /etc/yum.repos.d/CentOS-SCLo-scl.repo
[centos_sclo]
name=Centos_sclo
baseurl=https://mirrors.tencent.com/centos/7.9.2009/sclo/x86_64/sclo/
gpgcheck=0
enabled=1
[centos_sclo_rh]
name=Centos_sclo_rh
baseurl=https://mirrors.tencent.com/centos/7.9.2009/sclo/x86_64/rh/
gpgcheck=0
enabled=1
清理缓存:
yum clean all
三、GCC编译器升级
3.1 为什么需要升级GCC?
CentOS 7默认GCC版本为4.8.5,许多现代Python库(如gensim、TensorFlow等)需要GCC 5+才能编译安装。
3.2 安装DevToolset高版本GCC
# 安装SCL仓库(如果尚未安装)
sudo yum install centos-release-scl
# 安装GCC 9(或更高版本,如devtoolset-11)
sudo yum install devtoolset-9-gcc devtoolset-9-gcc-c++
# 临时启用GCC 9(当前会话)
scl enable devtoolset-9 bash
# 验证版本
gcc -v
# 永久启用(添加到.bashrc)
echo "source /opt/rh/devtoolset-9/enable" >> ~/.bashrc
注意: 如果遇到 No package devtoolset-9-gcc available 错误,请确保已正确配置SCL源(见2.2节)。
四、Python环境搭建
4.1 安装系统依赖
CentOS/RHEL:
yum update -y
yum install -y gcc openssl-devel bzip2-devel libffi-devel zlib-devel wget make
yum install -y gcc openssl openssl-devel make automake autoconf gcc-c++ bzip2-devel sqlite-devel
Ubuntu/Debian:
apt-get update
apt-get install -y build-essential libssl-dev libbz2-dev libsqlite3-dev
4.2 方案一:源码编译安装Python
适用于需要特定Python版本或自定义编译选项的场景:
# 下载Python源码(以3.9为例)
wget https://www.python.org/ftp/python/3.9.18/Python-3.9.18.tgz
tar -xzf Python-3.9.18.tgz
cd Python-3.9.18
# 配置编译选项
./configure --prefix=/usr/local/python3.9 --enable-optimizations
# 编译安装(使用多核加速)
make -j$(nproc)
sudo make altinstall
# 创建软链接
ln -s /usr/local/python3.9/bin/python3.9 /usr/bin/python3.9
ln -s /usr/local/python3.9/bin/pip3.9 /usr/bin/pip3.9
4.3 方案二:Anaconda安装(推荐)
Anaconda是数据科学场景的最佳选择,预装了数百个科学计算包:
# 下载Anaconda安装脚本(2024年最新版)
wget https://repo.anaconda.com/archive/Anaconda3-2024.02-1-Linux-x86_64.sh
# 验证文件完整性(强烈推荐)
sha256sum Anaconda3-2024.02-1-Linux-x86_64.sh
# 执行安装
bash Anaconda3-2024.02-1-Linux-x86_64.sh
# 按照提示完成安装,最后初始化conda
# 安装完成后重启终端或执行:
source ~/.bashrc
五、Conda环境管理实战
5.1 基础命令
# 查看所有环境
conda env list
# 创建新环境(指定Python版本)
conda create --name myenv python=3.9
# 激活环境
conda activate myenv
# 退出当前环境
conda deactivate
# 删除环境
conda remove --name myenv --all
5.2 配置国内镜像源
Conda镜像源配置:
# 添加清华镜像源
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
# 设置搜索时显示通道地址
conda config --set show_channel_urls yes
# 清除镜像源(如需恢复官方源)
conda config --remove-key channels
Pip镜像源使用(单次安装):
# 清华源
pip install numpy -i https://pypi.tuna.tsinghua.edu.cn/simple/
# 阿里云
pip install pandas -i https://mirrors.aliyun.com/pypi/simple/
# 华为云
pip install scikit-learn -i https://repo.huaweicloud.com/repository/pypi/simple/
国内常用镜像源汇总:
| 镜像站 | 地址 |
|---|---|
| 清华 | https://pypi.tuna.tsinghua.edu.cn/simple/ |
| 阿里云 | https://mirrors.aliyun.com/pypi/simple/ |
| 中国科技大学 | https://pypi.mirrors.ustc.edu.cn/simple/ |
| 豆瓣 | https://pypi.douban.com/simple/ |
| 华为云 | https://repo.huaweicloud.com/repository/pypi/simple/ |
5.3 深度学习环境配置示例
# 创建专用环境
conda create --name dl python=3.9
conda activate dl
# 安装PyTorch(GPU版,根据CUDA版本调整)
pip install torch==2.6.0 -i https://pypi.tuna.tsinghua.edu.cn/simple/
# 安装Transformers等NLP库
pip install transformers==4.53.0 -i https://pypi.tuna.tsinghua.edu.cn/simple/
# 数据处理库
pip install pandas==1.5.3 scikit-learn==1.3.2 -i https://pypi.tuna.tsinghua.edu.cn/simple/
# 中文NLP工具
pip install jieba -i https://pypi.tuna.tsinghua.edu.cn/simple/
常见依赖冲突解决方案:
# 升级conda解决导入问题
conda update --all
# 安装特定版本numpy避免兼容性问题
pip install "numpy<2.0" gensim==3.7.3 -i https://pypi.tuna.tsinghua.edu.cn/simple/
六、文件传输与远程操作
6.1 SCP跨平台文件传输
Windows → Linux:
# 传输文件夹(递归)
scp -r C:/本地/文件夹 用户名@服务器IP:/目标/路径
# 传输单个文件
scp C:/本地/文件.txt 用户名@服务器IP:/目标/路径/
# 实际示例
scp -r C:/学习/AI/Pytorch版本/roberta_chinese haichao@10.4.101.107:/home/haichao/project/data
Linux → Linux:
# 从远程服务器下载
scp -r user@remote_host:/remote/path /local/path
# 使用压缩传输(-C)加速
scp -rC /local/path user@host:/remote/path
6.2 实用文件操作命令
# 查找包含特定字符的文件夹
find . -name "*关键词*" -type d
# 查找并删除特定文件(谨慎使用)
find . -maxdepth 1 -name "*temp*" -type f -delete
# 批量删除(使用通配符)
rm -f *备份文件*
# 创建嵌套目录
mkdir -p 项目/代码/模型/日志
# 快速创建空文件
touch train.py test.py config.yaml
# 查看大文件内容
more large_file.log
# 操作:d(下翻)、b(上翻)、q(退出)
七、进程管理与系统维护
7.1 进程管理
# 查找特定进程
ps -ef | grep python
# 精确杀死进程(推荐)
pkill -9 -f "python train.py"
# 组合命令:查找并杀死
ps -ef | grep MatServer | xargs kill -9
# 查看GPU进程(需安装nvidia-smi)
nvidia-smi
7.2 历史命令管理
# 查看历史命令
history
# 清空当前会话历史(不写入文件)
history -c
# 删除历史记录文件
rm -rf ~/.bash_history
# 暂停记录历史(执行敏感命令前)
set +o history
# 执行敏感命令...
# 恢复记录
set -o history
7.3 网络配置
# 清除网络接口配置(故障排查时使用)
sudo ip addr flush dev eno2
sudo ip route flush dev eno2
# 查看网络接口状态
ip addr show
八、深度学习训练优化技巧
8.1 梯度累积(解决显存不足)
# 保持小批量,但累积梯度
accumulation_steps = 4 # 累积4个批次的梯度
optimizer.zero_grad()
for i, (inputs, labels) in enumerate(dataloader):
outputs = model(inputs)
loss = criterion(outputs, labels)
loss = loss / accumulation_steps # 归一化损失
loss.backward()
if (i + 1) % accumulation_steps == 0:
optimizer.step()
optimizer.zero_grad()
8.2 混合精度训练(提速+省显存)
from torch.cuda.amp import autocast, GradScaler
scaler = GradScaler()
for data, target in dataloader:
optimizer.zero_grad()
with autocast():
output = model(data)
loss = criterion(output, target)
scaler.scale(loss).backward()
scaler.step(optimizer)
scaler.update()
九、软件安装方式汇总
| 安装方式 | 适用场景 | 命令示例 |
|---|---|---|
| apt/dpkg | Ubuntu离线/在线安装 | sudo dpkg -i package.deb / sudo apt-get install package |
| yum/rpm | CentOS/RHEL | sudo yum install package / rpm -ivh package.rpm |
| conda | Python数据科学环境 | conda install numpy |
| pip | Python包管理 | pip install torch |
| 源码编译 | 自定义需求 | ./configure && make && make install |
十、最佳实践与注意事项
10.1 安全建议
- 避免使用root直接操作:日常操作使用普通用户,必要时用
sudo - 谨慎使用
rm -rf:尤其注意*通配符的使用 - 定期备份:重要配置和代码使用Git管理
10.2 性能优化
- 使用NUMA绑定:多路服务器将进程绑定到特定CPU和内存节点
- IO优化:大数据集使用SSD或内存盘(tmpfs)
- 监控资源:使用
htop、iotop、nvidia-smi监控资源使用
10.3 故障排查
# 查看系统日志
journalctl -xe
# 查看最后登录信息
last
# 查看磁盘空间
df -h
# 查看目录大小
du -sh /path/to/dir
# 查看内存使用
free -h
结语
本文涵盖了从Linux系统初始化到Python深度学习环境搭建的完整流程。在实际生产环境中,建议:
- 文档化:将所有配置步骤写成脚本,便于复现
- 容器化:使用Docker封装环境,避免"在我机器上能跑"的问题
- 自动化:使用Ansible等工具批量管理服务器
希望这份指南能帮助你高效搭建Linux服务器环境!如有问题,欢迎在评论区交流。
参考文档:
本文基于实际生产环境整理,命令均经过验证。系统版本:CentOS 7.9 / Ubuntu 22.04 LTS
更多推荐


所有评论(0)