本文基于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 安全建议

  1. 避免使用root直接操作:日常操作使用普通用户,必要时用sudo
  2. 谨慎使用rm -rf:尤其注意*通配符的使用
  3. 定期备份:重要配置和代码使用Git管理

10.2 性能优化

  1. 使用NUMA绑定:多路服务器将进程绑定到特定CPU和内存节点
  2. IO优化:大数据集使用SSD或内存盘(tmpfs)
  3. 监控资源:使用htopiotopnvidia-smi监控资源使用

10.3 故障排查

# 查看系统日志
journalctl -xe

# 查看最后登录信息
last

# 查看磁盘空间
df -h

# 查看目录大小
du -sh /path/to/dir

# 查看内存使用
free -h

结语

本文涵盖了从Linux系统初始化到Python深度学习环境搭建的完整流程。在实际生产环境中,建议:

  1. 文档化:将所有配置步骤写成脚本,便于复现
  2. 容器化:使用Docker封装环境,避免"在我机器上能跑"的问题
  3. 自动化:使用Ansible等工具批量管理服务器

希望这份指南能帮助你高效搭建Linux服务器环境!如有问题,欢迎在评论区交流。


参考文档:


本文基于实际生产环境整理,命令均经过验证。系统版本:CentOS 7.9 / Ubuntu 22.04 LTS

Logo

这里是“一人公司”的成长家园。我们提供从产品曝光、技术变现到法律财税的全栈内容,并连接云服务、办公空间等稀缺资源,助你专注创造,无忧运营。

更多推荐