CentOS与Ubuntu的详细区别
CentOS和Ubuntu是两个主流的Linux发行版,它们在设计理念、技术架构和使用场景上存在显著差异。
发行版基础与理念差异
CentOS(Community Enterprise Operating System)基于Red Hat Enterprise Linux(RHEL)的源代码构建,属于Red Hat系发行版。它的核心理念是提供一个免费的企业级操作系统,强调稳定性和长期支持。CentOS采用保守的更新策略,软件包版本相对较旧但经过充分测试,适合需要高稳定性的生产环境。
Ubuntu则基于Debian发行版,由Canonical公司主导开发。它的设计理念更加注重用户友好性和创新性,采用相对激进的更新策略,软件包版本较新,每6个月发布一个新版本。Ubuntu在桌面环境和云计算领域都有广泛应用,特别适合开发环境和需要最新软件特性的场景。
包管理系统差异
两个发行版使用完全不同的包管理系统。CentOS使用YUM(Yellowdog Updater Modified)和DNF(Dandified YUM)作为包管理器,软件包格式为RPM(Red Hat Package Manager)。而Ubuntu使用APT(Advanced Package Tool)作为包管理器,软件包格式为DEB。这种差异意味着软件的安装命令、依赖处理方式和软件仓库结构都不相同。
系统管理和配置差异
在系统服务管理方面,虽然两者现在都使用systemd作为init系统,但在网络配置、防火墙管理等方面仍有差异。CentOS默认使用firewalld作为防火墙管理工具,网络配置文件位于/etc/sysconfig/network-scripts/目录。Ubuntu则使用ufw(Uncomplicated Firewall)作为防火墙前端,网络配置使用Netplan(较新版本)或传统的/etc/network/interfaces文件。
SELinux(Security-Enhanced Linux)是另一个重要差异点。CentOS默认启用SELinux,提供强制访问控制,增强系统安全性但也增加了配置复杂度。Ubuntu默认使用AppArmor作为安全模块,相对来说配置更简单,但功能不如SELinux全面。
发布周期和支持周期
CentOS传统上提供10年的支持周期,主要版本间隔较长(约3-4年),适合长期稳定运行的服务器。不过需要注意的是,CentOS 8已经在2021年底结束支持,Red Hat将重心转向CentOS Stream(滚动发布版本)。
Ubuntu提供两种版本:常规版本每6个月发布一次,支持9个月;LTS(Long Term Support)版本每2年发布一次,提供5年的免费支持。这种模式让用户可以根据需求选择稳定性或新特性。
CentOS配置镜像源
配置国内镜像源可以显著提高软件包下载速度。以下是配置阿里云镜像源的详细步骤:
CentOS 7配置镜像源
首先备份原有的repo文件,这是一个良好的习惯,可以在出现问题时快速恢复:
sudo cp -r /etc/yum.repos.d /etc/yum.repos.d.backup
下载阿里云的CentOS 7镜像源配置文件:
sudo curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
如果系统没有curl,可以使用wget:
sudo wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
清理缓存并生成新的缓存:
sudo yum clean all
sudo yum makecache
CentOS Stream 8/9配置镜像源
对于CentOS Stream版本,配置略有不同:
# 备份原有配置
sudo cp -r /etc/yum.repos.d /etc/yum.repos.d.backup
# 使用sed命令替换为阿里云镜像
sudo sed -i 's|mirrorlist=|#mirrorlist=|g' /etc/yum.repos.d/CentOS-*
sudo sed -i 's|#baseurl=http://mirror.centos.org|baseurl=http://mirrors.aliyun.com|g' /etc/yum.repos.d/CentOS-*
# 清理并重建缓存
sudo dnf clean all
sudo dnf makecache
配置EPEL源
EPEL(Extra Packages for Enterprise Linux)提供了许多额外的软件包,对于开发环境特别有用:
# CentOS 7
sudo yum install -y epel-release
sudo sed -i 's|#baseurl=https://download.fedoraproject.org/pub|baseurl=https://mirrors.aliyun.com|g' /etc/yum.repos.d/epel*
sudo sed -i 's|metalink|#metalink|g' /etc/yum.repos.d/epel*
# CentOS Stream 8/9
sudo dnf install -y epel-release
sudo dnf config-manager --set-enabled powertools # CentOS 8
sudo dnf config-manager --set-enabled crb # CentOS 9
安装常用开发软件
基础开发工具链
安装编译工具和基础开发包是搭建开发环境的第一步:
# 安装开发工具组
sudo yum groupinstall -y "Development Tools"
# 安装额外的常用工具
sudo yum install -y vim git wget curl tree htop net-tools
编程语言环境
Python开发环境的配置需要注意版本管理:
# 安装Python 3
sudo yum install -y python3 python3-devel python3-pip
# 升级pip并配置国内源
pip3 install --upgrade pip -i https://pypi.douban.com/simple/
mkdir ~/.pip
echo "[global]
index-url = https://pypi.douban.com/simple/
trusted-host = pypi.douban.com" > ~/.pip/pip.conf
# 安装虚拟环境工具
pip3 install virtualenv virtualenvwrapper
Node.js环境可以通过NodeSource仓库安装最新版本:
# 添加NodeSource仓库(以Node.js 18为例)
curl -fsSL https://rpm.nodesource.com/setup_18.x | sudo bash -
# 安装Node.js和npm
sudo yum install -y nodejs
# 配置npm国内镜像
npm config set registry https://registry.npmmirror.com
# 安装常用全局包
npm install -g yarn pm2 nodemon
Java开发环境的安装相对简单:
# 安装OpenJDK
sudo yum install -y java-11-openjdk java-11-openjdk-devel
# 安装Maven
sudo yum install -y maven
# 配置Maven国内镜像(编辑~/.m2/settings.xml)
mkdir -p ~/.m2
cat > ~/.m2/settings.xml << 'EOF'
<settings>
<mirrors>
<mirror>
<id>aliyun</id>
<mirrorOf>central</mirrorOf>
<url>https://maven.aliyun.com/repository/public</url>
</mirror>
</mirrors>
</settings>
EOF
数据库和缓存
MySQL/MariaDB的安装和初始配置:
# 安装MariaDB(MySQL的开源分支)
sudo yum install -y mariadb mariadb-server
# 启动并设置开机自启
sudo systemctl start mariadb
sudo systemctl enable mariadb
# 安全初始化
sudo mysql_secure_installation
Redis的安装和基础配置:
# 安装Redis
sudo yum install -y redis
# 修改配置允许远程连接(生产环境需谨慎)
sudo sed -i 's/bind 127.0.0.1/bind 0.0.0.0/g' /etc/redis.conf
sudo sed -i 's/protected-mode yes/protected-mode no/g' /etc/redis.conf
# 启动服务
sudo systemctl start redis
sudo systemctl enable redis
容器化工具
Docker的安装需要配置专门的仓库:
# 安装依赖包
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
# 添加Docker仓库
sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# 安装Docker
sudo yum install -y docker-ce docker-ce-cli containerd.io
# 配置镜像加速
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"]
}
EOF
# 启动Docker
sudo systemctl daemon-reload
sudo systemctl start docker
sudo systemctl enable docker
# 将当前用户加入docker组(需要重新登录生效)
sudo usermod -aG docker $USER
Web服务器
Nginx的安装和基础配置:
# 安装Nginx
sudo yum install -y nginx
# 启动并设置开机自启
sudo systemctl start nginx
sudo systemctl enable nginx
# 配置防火墙允许HTTP/HTTPS
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reload
这些配置和安装方法为CentOS系统搭建完整的开发环境提供了基础。根据具体的开发需求,安装其他专门的工具和库。生产环境中要特别注意安全配置,比如设置防火墙规则、配置SELinux策略、定期更新系统等。