简介:这是一份围绕CentOS 6.3整理的前端网页源码工具包,面向需要在CentOS服务器上快速部署静态页面或学习HTML/CSS/JavaScript基础结构的开发者。压缩包内含19个文件,其中14张PNG配图、3个JS脚本、1个CSS样式表以及1个首页HTML,整体仅244KB,体积轻量,便于下载和部署。已有514人学习使用,适合作为轻量级网站模板或前端入门练习素材。从目录结构来看,页面主体、图片资源、脚本与样式分离清晰,解开后可直接通过index.html预览效果,也可基于现有JS和CSS进行二次修改,方便在CentOS 6.3环境中搭建简洁的工具展示页或学习静态资源组织方式。由于标签包含“源码”与“工具”,这套资源偏重代码层面的可读性与复用性,对希望手动调试页面、替换图片素材或扩展交互功能的用户较有实用价值。 CentOS 6.3这个版本,搁今天看已经是妥妥的“上古神器”了。2012年发布的它,内核还是2.6.32,连systemd的影子都没有,服务管理全靠service和chkconfig。但如果你跟我一样,在传统企业或IDC机房里摸爬滚打过,就一定知道CentOS 6系列在服务器领域的地位——稳定性极强,资料极多,踩坑成本极低。这篇文章不是怀旧,而是实打实地把这套老系统的部署、优化、排错经验整理出来,给正在接手老旧生产环境的朋友一份参考。
1. CentOS 6.3的时代背景与技术特性拆解
1.1 为什么CentOS 6系列能成为服务器首选
聊CentOS 6.3,就得先聊它当年为什么能霸占服务器市场。核心原因就三个字:稳、免费、兼容。
CentOS是RHEL(Red Hat Enterprise Linux)的社区再编译版本,去掉了Red Hat的商标和商业支持服务,但代码和二进制兼容性保持得几乎一致。这意味着企业可以免费拿到一个跟商业发行版同等稳定性的操作系统。对于预算有限又追求稳定的中小企业来说,这简直是刚需。
CentOS 6.x系列采用的是SysVinit初始化机制,配置文件直接、启动脚本清晰。和后来CentOS 7的systemd相比,它虽然显得“笨”,但胜在透明——出问题时,你能从启动脚本一路查到/etc/rc.d/rc.local,逻辑非常简单,排查心理负担小得多。直到今天,还有不少老机房里跑着CentOS 6.x,不是不想换,是太稳定了不敢动。
1.2 CentOS 6.3的组件版本与兼容性边界
做老系统运维,第一件事就是背熟自带组件的版本号,否则大概率在编译安装时报错。
CentOS 6.3的核心组件版本大概是这样的:内核2.6.32-279、GCC 4.4.6、Python 2.6.6、Perl 5.10.1、Apache 2.2.15、MySQL 5.5.28、PHP 5.3.3。这套组合现在看很旧,但在当年是绝配:PHP 5.3对面向对象和命名空间的支持已经成熟,MySQL 5.5的InnoDB性能也够用,Apache 2.2的模块生态非常完整。
但如果你要在6.3上装现代软件,比如PHP 7.4、MySQL 8.0、Nginx 1.20+,就得小心了。系统自带的GCC 4.4.6太老,编译新版本源码大概率会报错;Python 2.6.6对很多现代Python脚本也不友好。这里我建议你记住一个原则:6.3装老软件很顺手,装新软件要先解决编译链和环境依赖。
1.3 6.3与6.x系列其他小版本的差异
很多人分不清CentOS 6.0到6.10的差别,其实对运维来说,差异主要在两块:一是内核与驱动补丁迭代,二是软件包的bugfix版本更新。6.3相比6.0/6.1,最大的变化是加入了ext4文件系统的稳定性修复,以及更好的硬件支持,比如对SSD的TRIM支持更完善。
另外6.3也是CentOS 6系列中比较“平衡”的一个版本:既继承了前期的稳定,又不像6.0那样存在较多硬件兼容性坑。如果你手头正好是6.3,做运维升级时可以考虑先小版本更新内核补丁,而不是直接跨大版本。
2. 安装部署与初始化配置实操指南
2.1 安装过程中的分区与引导注意事项
CentOS 6.3安装盘启动后,图形界面和文本界面二选一。老服务器内存小,我一般直接用文本模式。最关键的还是分区策略。
推荐分区方案:
- /boot区,200MB~500MB,ext4即可,用来放内核和initrd。
- swap区,物理内存1~2倍。4GB内存的机器给8GB swap,性能不差。
- “/”区,用LVM管理,方便以后扩展lvm卷。
为什么不推荐单独分/home?因为很多业务数据都在/var或/home下,分区规划得越细,后期磁盘满了越难处理。我踩过最大的坑就是当年给某台服务器分了独立的/data分区,结果磁盘没规划好,/var暴涨导致系统盘满,业务直接不可写,但/data还空着一大半,非常尴尬。用LVM统一管理“/”,配合lvextend扩展,是老系统最省心的方案。
2.2 安装后的基础网络配置
安装完第一时间要确认网络。CentOS 6.3默认网卡名是eth0,配置文件在/etc/sysconfig/network-scripts/ifcfg-eth0。
修改静态IP后,你们一定要记得两件事:一是修改/etc/resolv.conf里的DNS,二是重启网络服务测试。
# 修改ifcfg-eth0 DEVICE=eth0 BOOTPROTO=static ONBOOT=yes IPADDR=192.168.1.100 NETMASK=255.255.255.0 GATEWAY=192.168.1.1 # 重启网络服务 service network restart # 检查结果 ping -c 4 192.168.1.1这里有个细节:CentOS 6.3默认的NetworkManager服务对服务器的干扰很大,尤其是在远程操作时,稍不留神就把网络配置重置了。如果不打算用它,可以直接关掉:
service NetworkManager stop chkconfig NetworkManager off这个操作建议安装后第一个做,省得后面配置的静态IP被莫名奇妙地覆盖。
2.3 初始化阶段的优化与安全设置
老系统的初始化优化,我按重要程度排个序:
第一,关闭SELinux。6.3的SELinux默认是enforcing,但很多应用(如自编译Nginx、PHP-FPM)如果没有相应策略,会直接报权限问题。你可以临时关闭,也可以永久关闭。
setenforce 0 sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config生产环境如果是纯内网,我建议直接禁用;如果是公网环境,还是要评估风险,毕竟SELinux是纵深防御的一环,但坦白说CentOS 6.3的年代,大部分运维都会关掉它换便利性。
第二,改SSH配置。编辑/etc/ssh/sshd_config,至少做三件事:禁止root远程登录(PermitRootLogin no)、修改默认端口(Port 2222)、开启密钥登录。
Port 2222 PermitRootLogin no PasswordAuthentication yes PubkeyAuthentication yes改端口是基操,但千万别忘了在iptables里放行新端口,否则改完直接连不上。
第三,关闭不需要的服务。
chkconfig --list | grep 3:on # 只保留sshd、network、crond、iptables、rsyslog # 其余如postfix、cups等都可以关掉 chkconfig postfix off chkconfig cups off每少开一个服务,就少一个攻击面和系统资源占用,这个习惯在老旧机器上尤其重要。
3. 典型业务场景下的部署实战
3.1 用CentOS 6.3搭建LNMP环境
LNMP(Linux + Nginx + MySQL + PHP)是CentOS 6.3最经典的搭配。但有坑:6.3仓库里没有Nginx,PHP和MySQL的版本也偏老。
Nginx安装:官方提供了针对CentOS 6的yum源,直接用就行。
rpm -ivh http://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx.noarch.rpm yum install nginx -yMySQL安装:用系统自带的MySQL 5.5即可,生产环境小项目足够。装完记得跑一下mysql_secure_installation,把匿名账号和测试库清掉。
PHP安装:这是最麻烦的。系统自带PHP 5.3.3,很多新项目跑不了。需要安装EPEL和Webtatic源来获取更新版本的PHP。
rpm -Uvh http://download.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm rpm -Uvh https://mirror.webtatic.com/yum/el6/latest.rpm yum install php70w php70w-fpm php70w-mysql -y注意:Webtatic这个源在CentOS 6上最高支持的PHP版本是7.0/7.1,再往上就没了。如果你的业务需要PHP 7.2以上,就得编译安装,但那样GCC版本又是个问题。所以老平台上跑新业务,版本卡位很重要。
3.2 用Samba搭内网文件共享服务
很多企业内部文件共享用的是Samba。CentOS 6.3自带的Samba 3.x功能够用,配置也简单。核心配置在/etc/samba/smb.conf。
[global] workgroup = WORKGROUP server string = File Server security = user [share] path = /data/share valid users = user1,user2 read only = no create mask = 0664 directory mask = 0775建好目录、加好系统用户和Samba用户、重启smb服务,一套内网共享就搭起来了。需要注意防火墙必须放行137、138、139、445端口。
iptables -I INPUT -p tcp --dport 445 -j ACCEPT iptables -I INPUT -p udp --dport 137:138 -j ACCEPT iptables -I INPUT -p tcp --dport 139 -j ACCEPT service iptables save我这里有一回配置Samba后,Windows客户端死活连不上,排查半天是iptables的规则顺序问题——新规则没有插在最前面,被后面的REJECT规则拦截了。所以保存防火墙规则前,一定要用iptables -L -n确认顺序。
3.3 日志切割与定时备份
老系统的磁盘很金贵,日志必须管理好。centos 6.3自带logrotate,用系统默认配置即可,但有两个地方建议调一调。
一是Nginx日志。默认Nginx的access.log在/var/log/nginx/下,需要在/etc/logrotate.d/nginx里加一份配置:
/var/log/nginx/*.log { daily missingok rotate 30 compress delaycompress notifempty create 640 nginx adm sharedscripts postrotate [ -f /var/run/nginx.pid ] && kill -USR1 `cat /var/run/nginx.pid` endscript }二是定时备份。我习惯写一个简单的shell脚本放crontab里,每天凌晨压缩备份数据库和关键配置目录。用系统自带的cron,配置在/etc/crontab或crontab -e都可以。
0 2 * * * root /opt/backup/backup.sh >/dev/null 2>&1备份脚本里核心就是mysqldump加tar打包,然后把旧备份文件删除。老系统空间有限,备份文件保留7天就够了,别贪多。
4. 长期运维踩坑实录与排查技巧
4.1 Yum源失效后的抢救方案
这是CentOS 6老用户最痛的坑:官方源早在2020年就停止维护了,mirror.centos.org上相关目录已经挪到vault。这时候再用yum update或者装新包,多半会报404。
解决方案是把源替换成Vault归档源:
# 进入yum源目录 cd /etc/yum.repos.d/ # 备份原配置 mkdir /tmp/yum-repos-backup cp *.repo /tmp/yum-repos-backup/ # 修改baseurl,把mirror.centos.org/centos/6替换为vault.centos.org/6.3 sed -i 's/mirror.centos.org\/centos\/6/vault.centos.org\/6.3/g' CentOS-Base.repo sed -i 's/#baseurl/baseurl/g' CentOS-Base.repo sed -i 's/mirrorlist=/#mirrorlist=/g' CentOS-Base.repo # 清缓存并测试 yum clean all yum repolist注意URL路径里的“6.3”版本号,如果你的系统是6.5以上,Vault源里的目录路径写法会有些不太一样。稳妥的做法是先到https://vault.centos.org/看目录结构,再决定写哪个版本。我遇到过一台6.5的机器,直接抄网上6.3的URL,结果yum源依然报404,就是因为版本目录写死了。建议用6开头的目录,Vault对6.x小版本做了聚合处理,6.3也能适配大部分包。
4.2 老内核与现代软件/硬件的兼容性博弈
CentOS 6.3的内核是2.6.32-279,对NTFS格式、某些新RAID卡驱动、以及大批量SSD优化支持都不好。
在纯SSD的服务器上,这块老内核没有原生的NVMe驱动,需要额外打驱动模块或换成6.10并升级内核。如果你非得在6.3上跑NVMe,基本只能靠第三方编译的内核,比如kernel-ml或者kernel-lt,但这些都是ELRepo源提供的,需要先装ELRepo。
rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org rpm -Uvh http://www.elrepo.org/elrepo-release-6-6.el6.elrepo.noarch.rpm yum --enablerepo=elrepo-kernel install kernel-ml -y装完新内核后,在grub里设置默认启动项。但我要提醒你:老系统升级内核要极度谨慎,特别是跑数据库的机器。有些老应用依赖旧内核的模块行为,升级后极易出现文件锁异常或者网络队列参数失效。没有十足把握,内核升级能不做就不做。
4.3 故障排查速查表
老系统排错,我习惯先看日志再动手。CentOS 6.3的日志集中在/var/log/目录下,几个关键的:/var/log/messages(系统总体日志)、/var/log/secure(安全认证日志)、/var/log/dmesg(内核日志)。
下边是我多年用下来,整理出的高频问题排查表:
| 故障现象 | 排查思路 | 常用命令 |
|---|---|---|
| SSH连不上 | 先看端口是否监听,再查防火墙规则 | netstat -tlnp | grep ssh、iptables -L -n |
| 网站访问慢 | 查服务状态和系统负载 | top、free -m、df -h |
| yum无法使用 | 大概率是源失效或DNS故障 | curl -I http://vault.centos.org |
| 中文显示乱码 | 缺少中文字符集,安装fonts-chinese | yum install fonts-chinese -y |
| 时间不对导致https失败 | 同步时间 | ntpdate ntp.aliyun.com |
| 磁盘满但找不到大文件 | 有被删除但仍被进程占用的文件 | lsof | grep deleted |
尤其是最后一条,系统df显示100%,但du却找不到大文件,不用怀疑,就是有进程占用了已删除的日志文件。处理方式是找到对应进程并重启,空间立刻释放。我在一台跑了一年多的Jenkins节点上遇到过,java进程一直占据着已删除的日志文件句柄,最后重启Jenkins服务才解决。
4.4 系统安全补丁与入侵风险应对
CentOS 6.3的生命周期已经结束,不再提供安全补丁。但这不意味着系统只能裸奔。如果业务没迁移,至少要做这几件事:
- 彻底关闭不对外服务的端口,用iptables做白名单控制。
- SSH改用非对称密钥登录并禁用root直接登录。
- 安装并定期更新fail2ban,自动封禁暴力破解来源IP。
- 内网环境建议通过堡垒机跳板,不让业务机器直接暴露在公网。
我在一台CentOS 6.3老机器上装了fail2ban,一个月时间自动封了上千个SSH暴力破解IP。配置很简单,修改/etc/fail2ban/jail.local里的[ssh-iptables]段落即可。关键参数是bantime和maxretry,我一般设为86400秒和3次。老系统性能弱,fail2ban本身的内存占用也就20MB左右,基本无感。
5. 老系统生命周期终点与迁移准备
5.1 评估是否必须迁移
CentOS 6.3确实该退役了。但我见过太多“想升级,没人敢动”的场景。业务跑得好好的,升级完挂了谁负责?所以对系统是否迁移,我建议做一次理性评估:
- 机器是否暴露在公网?如果只跑内网业务,风险可控,可以再撑一撑。
- 业务是否依赖系统自带的旧库版本?比如PHP 5.3、MySQL 5.5,如果迁移成本极大,优先做软硬件隔离。
- 是否有双机热备?如果有,可以先迁移备用机,再切换主备。
5.2 容器化:老系统最稳妥的出路
对老业务最友好的迁移路线,我个人强烈推荐容器化迁移。把整个CentOS 6.3做成容器镜像,业务原封不动地跑在容器里,宿主用新系统。这样既绕开了老系统与新时代硬件驱动不兼容的痛点,又保持了应用运行环境的一致性。
具体的思路是:先写Dockerfile,基础镜像直接用centos:6,把应用依赖装好,再导入业务代码和数据。难点在于老系统的glibc版本较旧,某些新环境变量或内核特性容器里无法获取。但绝大多数业务只要在宿主机设置好sysctl参数,基本都能跑起来。
容器化之后,再逐步把业务依赖的新特性迁移出来,比如把数据库升级到MySQL 5.7/8.0,把PHP从5.3升到7.4,最终实现业务从老系统解放。
5.3 数据与配置的备份清单
在决定迁移前,先做好备份。我整理了一份老系统备份清单,按重要程度排序:
- 数据库全量备份(mysqldump或物理备份),注意备份一致性。
- 应用代码目录,以及Nginx/Apache、PHP、MySQL的配置文件。
- crontab计划任务列表,别漏掉业务定时脚本。
- iptables规则、网络配置、hosts文件等系统级配置。
- SSH密钥、证书文件、加密串等敏感资产。
备份做完后可以先试着在虚拟机里用CentOS 7或8还原一遍业务,验证一次迁移流程是否可行。没有验证过的备份,等于没有备份。
写在最后的一点体会
CentOS 6.3是一套承载了一代人技术记忆的系统。我至今还记得第一次在生产环境用它部署Nginx+PHP时那种小心翼翼、又成就感满满的心情。老系统迟早会被替代,但你在它身上踩过的坑、总结出的运维方法,放到新系统上依然有效。如果你现在正面对一台还在运行的CentOS 6.3,不要慌,先做好备份,再逐项梳理服务依赖,最后按自己的节奏把它迁移到更安全的新环境。老系统教会我们的,从来都是稳字当头、计划先行。
本文还有配套的精品资源,点击获取