简介这份文档面向需要在虚拟机中搭建Linux开发或测试环境的技术人员聚焦CentOS 6.5-x86_64系统的完整部署流程。内容从基础操作系统安装讲起涵盖静态IP网络配置、VMware虚拟工具安装、mpiag与oracle用户创建以及SSH、FTP、telnet等常用服务的开启与权限调整并进一步延伸到SVN、JDK、buildc框架、RF环境与Oracle数据库的安装要点对root访问限制、防火墙与SELinux处理、DNS反向解析等常见坑点均有说明。资源包内仅1个docx文档约32KB以图文步骤形式组织便于按章节对照操作。目前已有384人学习下载适合刚接触Linux部署的运维或测试人员作为环境搭建参考也可供有经验的工程师快速查阅组件安装与配置细节。1. 虚拟机里装 CentOS 6.5 这件事为什么现在还有人干前阵子帮一个做自动化测试的朋友收拾一台虚拟机他要在上面跑一套老掉牙的 Oracle 10g 加自动化框架宿主系统是 Windows虚拟机里装的是 CentOS 6.5 x86_64。他折腾了两天卡在 FTP 登录和 Oracle 安装检查上差点把镜像删了重来。我接手后花了不到一小时把网络、SELinux、内核参数和用户组理顺数据库顺利跑起来。这件事让我意识到虽然 CentOS 6.5 早已停止维护但在某些特定场景下——比如复现旧版 Oracle 数据库环境、维护遗留的自动化测试框架、或者跑一些只兼容老内核的编译工具链——它依然是绕不开的选择。这份资源就是一份完整的虚拟机安装与组件部署笔记从系统安装、网络配置、虚拟工具、用户创建一路覆盖到 SSH、FTP、Telnet、SVN、JDK、buildc 框架最后落到 Oracle 数据库的安装与排错。如果你手头正好有类似的遗留系统要搭或者想理解老版本 Linux 下这些基础服务的配置逻辑这篇内容能帮你省下不少查文档的时间。2. 系统安装与网络配置从序列号到静态 IP 的完整链路2.1 安装介质选择与磁盘规划这份笔记里安装的是 Red Hat 5.6 x64序列号 550dd56b51499bd5但标题写的是 CentOS 6.5 x86_64。这里有个实际背景CentOS 6.5 和 RHEL 5.6 在安装流程和配置文件路径上高度相似很多做 Oracle 部署的工程师会混用这两者的操作步骤。你拿到虚拟机镜像后第一件事是确认磁盘容量。笔记里明确写了硬盘 30G原因是 Oracle 数据库安装后自动化测试跑起来会用掉 20G 左右。这个数字不是拍脑袋来的——Oracle 10g 的安装文件解压后大约 2.5G数据库软件安装占用约 4G再加上一个测试用的实例数据文件、归档日志和临时表空间20G 是保守估计。如果你还要装补丁包建议再留 5G 余量。安装过程中语言选中文防火墙直接禁用。禁用防火墙这一步在测试环境里很常见因为 Oracle 的监听端口、FTP 的 21 端口、SSH 的 22 端口如果逐个去开规则调试成本太高。但要注意禁用防火墙不等于关闭 SELinux这两者是独立的。笔记里后面反复出现 SELINUXdisabled 的修改说明作者也踩过 SELinux 的坑。2.2 静态 IP 配置与 DNS 解析网络配置是后续所有服务能通的基础。笔记里给了两套方案一套是静态 IP 直连一套是 NAT 链接方式。先看静态 IP 的配置文件/etc/sysconfig/network-scripts/ifcfg-eth0# 网络配置文件 /etc/sysconfig/network-scripts/ifcfg-eth0 DEVICEeth0 # 接口名称必须与网卡实际名称一致 BOOTPROTOstatic # 静态配置DHCP 则写 dhcpnone 表示不指定协议 BROADCAST10.10.126.255 # 广播地址此行可省略 HWADDRB2:23:38:50:3E:6B # 网卡 MAC 地址虚拟机克隆后必须修改 ONBOOTyes # 开机自动加载网卡 IPADDR10.10.126.235 # IP 地址也可用 10.10.126.244 NETMASK255.255.255.0 # 子网掩码 GATEWAY10.10.126.1 # 默认网关 TYPEEthernet # 网络类型 USERCTLyes # 允许普通用户控制网卡 IPV6INITno # 禁用 IPv6减少干扰 PEERDNSyes # 允许 DHCP 覆盖 resolv.conf静态 IP 下可设 no这里有几个参数值得展开。HWADDR在虚拟机克隆场景下必须改否则新虚拟机会因为 MAC 地址冲突而网络不通。PEERDNSyes在静态 IP 下其实有争议——如果设成 yesDHCP 客户端可能会覆盖你手动写的 DNS设成 no 则完全由/etc/resolv.conf决定。笔记里没写这一项我一般会显式设成 no避免玄学问题。DNS 配置文件在/etc/resolv.conf# DNS 服务器配置文件 nameserver 202.107.117.11 nameserver 210.83.210.155改完后重启网络服务service network restart如果重启后ping外网不通先检查ifconfig看 IP 是否生效再看route -n确认默认网关有没有加上。NAT 方式的配置逻辑类似只是 IPADDR 换成 192.168.50.132GATEWAY 换成 192.168.50.1BOOTPROTO 改成 none。NAT 模式下虚拟机通过宿主机的网络出口访问外网适合宿主机本身没有独立公网 IP 的场景。注意修改ifcfg-eth0后如果service network restart报错常见原因是 HWADDR 和实际网卡不匹配用ip link show确认一下。3. 虚拟工具、用户与基础服务SSH、FTP、Telnet 的配置细节3.1 VMware Tools 安装与用户创建虚拟机装完后第一件事是装虚拟工具。笔记里针对 VMware 的操作很具体# 挂载 VMware Tools 光盘后执行 mkdir /home/temp cp /media/VMware\ Tools/VMwareTools-9.6.1-1378637.tar.gz /home/temp cd /home/temp gzip -d VMwareTools-9.6.1-1378637.tar.gz tar -xvf VMwareTools-9.6.1-1378637.tar cd vmware-tools-distrib/ ./vmware-install.pl这个脚本会交互式地问一堆路径一路回车用默认值即可。装完重启虚拟机的显示分辨率、剪贴板共享、文件拖拽功能才会正常。不装的话虚拟机用起来会明显卡顿尤其是图形界面下。用户创建部分笔记里建了 mpiag 和 oracle 两个用户useradd mpiag passwd mpiag useradd oracle passwd oracle这里有个隐藏的坑oracle 用户后续要用来装数据库它的家目录权限、所属组、shell 限制都需要额外配置。笔记后面在 Oracle 配置章节里补了ulimit和limits.conf的修改但创建用户时如果没规划好组关系后面改起来很麻烦。我一般会在创建用户后立刻把 oracle 加入 oinstall 和 dba 组避免安装时权限检查报错。3.2 SSH 访问优化与 root 登录SSH 默认已安装但 root 用户默认不可访问。笔记里通过修改/etc/sysconfig/selinux把 SELINUXenforcing 改成 disabled 来放行。这个操作需要重启生效。另一个优化是关闭 SSH 的 DNS 反向解析# 在 /etc/ssh/sshd_config 尾部添加 UseDNS no这个参数的作用是当客户端连接时SSH 服务端不去反向查询客户端的 DNS 名称。在内网环境里DNS 反向解析往往超时导致 SSH 登录要等十几秒甚至更久。加上这一行后登录速度会明显提升。改完重启 sshdservice sshd restart3.3 FTP 服务端安装与 root 访问配置FTP 用的是 vsftpd安装包是 vsftpd-2.0.5-16.el5_5.1.x86_64.rpm。安装后启动并设置开机自启service vsftpd start chkconfig vsftpd on默认情况下 root 用户不能登录 FTP需要改三个文件# 1. 编辑 /etc/vsftpd/ftpusers在 root 前面加 # # 2. 编辑 /etc/vsftpd/user_list在 root 前面加 # # 3. 编辑 /etc/vsftpd/vsftpd.conf把 userlist_enableYES 改为 NO service vsftpd restart这里有个血泪经验如果 FTP 能登录但看不到文件列表或者不能创建文件大概率是 SELinux 在拦。笔记里也提到了这一点解决办法还是把/etc/selinux/config里的 SELINUX 改成 disabled 然后重启。另外如果每次 FTP 验证密码都很慢检查/etc/resolv.conf把不需要的 nameserver 注释掉然后重启 vsftpd。防火墙方面FTP 的 21 端口默认没开需要在/etc/sysconfig/iptables里加规则-A INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT如果不想改 iptables也可以临时关闭防火墙/etc/init.d/iptables status # 查看状态 /etc/init.d/iptables stop # 本次关闭 chkconfig --level 35 iptables off # 永久关闭重启生效3.4 Telnet 服务端配置Telnet 因为明文传输安全性差生产环境基本不用。但笔记里还是记录了配置方法因为某些老旧的自动化测试框架只支持 Telnet。安装 telnet-server 后编辑/etc/xinetd.d/telnet把 disable 字段改成 no然后重启 xinetdservice xinetd restart让 root 用户能 Telnet 登录笔记里给了两种方法。方法一是去掉/etc/pam.d/login里的auth required /lib/security/pam_securetty.so但作者标注“此方法重启没好用”。方法二是编辑/etc/securetty加上 pts/0 到 pts/3不需要重启即可生效。我一般直接用方法二改完立刻就能用 root 登录。4. 开发环境搭建SVN、JDK、buildc 与 Oracle 数据库4.1 SVN 中文路径问题与 JDK 安装SVN 客户端默认已安装但笔记里特别强调了一个环境变量# 在 .bashrc 中加入 export LC_ALLzh_CN.GBK不加这一行的话SVN 操作带中文路径的文件时会报错svn: Cant convert string from UTF-8 to native encoding。这个问题的根源是 SVN 内部用 UTF-8 存储路径而终端环境的 locale 设置不匹配。设成 GBK 后中文路径就能正常识别。JDK 安装的是 jdk-6u37-linux-x64.bin装到/usr/java目录mkdir /usr/java cp /home/temp/jdk-6u37-linux-x64.bin /usr/java cd /usr/java ./jdk-6u37-linux-x64.bin rm -f jdk-6u37-linux-x64.bin装完后建立软链接让系统能找到 java 和 javaccd /usr/bin ln -s -f /usr/java/jdk1.6.0_37/jre/bin/java ln -s -f /usr/java/jdk1.6.0_37/bin/javac环境变量配置在.bashrc或.bash_profile里export JAVA_HOME/usr/java/jdk1.6.0_37/ export JRE_HOME/usr/java/jdk1.6.0_37/jre export PATH$PATH:/usr/java/jdk1.6.0_37/bin export CLASSPATH$CLASSPATH:./:/usr/java/jdk1.6.0_37/lib:/usr/java/jdk1.6.0_37/jre/libJenkins 如果跑在 Linux 环境且没装 JDK也需要这套配置。注意 JDK 6 的路径是 jdk1.6.0_37不同小版本号可能不同用ls /usr/java/确认一下。4.2 buildc 框架与 rf 环境buildc 框架通过 SVN 导出后安装cd /home/temp svn export http://10.10.125.156/svn0/mpiag/users/wangtzh/kernel_buildc-0.3.2 cd kernel_buildc-0.3.2 python setup.py install cd .. chmod 777 /usr/bin/buildcrf 环境的安装方式类似但笔记里标注了“不安装”说明这个组件在当前场景下不是必须的。如果你需要装步骤是svn export http://10.10.125.156/svn0/mpiag/users/wangtzh/rf_setup cd rf_setup python rf_setup.py install这两个框架都依赖 PythonCentOS 6.5 默认带的是 Python 2.6够用。如果python setup.py install报缺少 setuptools先装python-setuptools包。4.3 Oracle 数据库安装前的系统配置Oracle 安装是整份笔记里最重的部分。安装包是 10201_database_linux_x86_64.cpio.gz解压gzip -d 10201_database_linux_x86_64.cpio.gz cpio -idv 10201_database_linux_x86_64.cpio解压后得到 database 目录里面是安装程序。但在运行./runInstaller之前需要先配置 oracle 用户的环境变量。笔记里给出了完整的.bashrc修改内容核心是这几项# Oracle 环境变量 ORACLE_BASE/home/oracle; export ORACLE_BASE ORACLE_HOME$ORACLE_BASE/product/10.2.0/db_1; export ORACLE_HOME ORACLE_SIDorcl; export ORACLE_SID LD_LIBRARY_PATH$LD_LIBRARY_PATH:$ORACLE_HOME/lib:$ORACLE_HOME/rdbms/lib; export LD_LIBRARY_PATH PATH$PATH:$ORACLE_HOME/bin; export PATH CLASSPATH$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib; export CLASSPATH export NLS_LANGAMERICAN_AMERICA.UTF8 export LC_ALLCNLS_LANG和LC_ALL的设置直接影响数据库安装界面的语言和字符集。笔记里特别说明LANG和LANGUAGE变量用于保证文字非乱码而NLS_LANGAMERICAN_AMERICA.UTF8配合LC_ALLC是为了让图形化安装界面正常显示。如果设成中文安装界面可能乱码。内核参数调整在/etc/sysctl.conf尾部增加# For Oracle kernel.shmmni 4096 kernel.sem 250 32000 100 128 fs.file-max 65536 net.ipv4.ip_local_port_range 1024 65000 net.core.rmem_default 262144 net.core.rmem_max 262144 net.core.wmem_default 262144 net.core.wmem_max 262144改完用/sbin/sysctl -p激活。不调这些参数的话Oracle 安装检查会报一堆警告虽然不一定阻止安装但后续数据库运行可能不稳定。Shell 限制在/etc/security/limits.conf里加# For Oracle oracle soft nproc 2047 oracle hard nproc 16384 oracle soft nofile 1024 oracle hard nofile 65536并在/etc/pam.d/login里确认有这一行session required /lib/security/pam_limits.so4.4 Oracle 安装过程中的典型报错与处理笔记里记录了五个典型情况我挑三个最常遇到的展开。第一个是操作系统版本检查失败Checking operating system version: must be redhat-3, SuSE-9, redhat-4... Failed。解决办法有两种改/etc/redhat-release把版本号改成 4或者改oraparam.ini在[Certified Versions]的 Linux 行末尾加上 redhat-5。我一般用第一种改完记得改回来不然其他软件可能误判系统版本。第二个是libXp.so.6: cannot open shared object file。这是缺少 libXp 库装libXp-1.0.0-8.1.el5.i386.rpm即可。注意是 i386 版本不是 x86_64。第三个是ORA-27121: unable to determine size of shared memory segment。原因是 oracle 可执行文件没有设置正确的 setuid。解决su - oracle cd $ORACLE_HOME/bin chmod 6751 oracle改完后ls -l应该看到-rwsr-s--x的权限位。这个坑很隐蔽因为报错信息指向共享内存实际是权限问题。数据库字符集选择Simplified Chinese ZHS16GBK笔记里提到以前用 ZGS32 GB18030 但导入 sqlplus 语句有乱码。密码设成 a12345A符合 Oracle 10g 的密码复杂度要求。5. 避坑与排查那些文档里没写清楚的细节5.1 坑一FTP 登录慢或无法列出文件现象FTP 能连上但输入密码后要等很久才进去或者进去后ls看不到文件也不能上传。原因两个独立问题叠加。登录慢是因为/etc/resolv.conf里的 DNS 服务器在反向解析时超时无法列出文件是因为 SELinux 拦截了 vsftpd 的目录读取操作。解决把/etc/resolv.conf里不需要的 nameserver 注释掉重启 vsftpd同时把/etc/selinux/config的 SELINUX 改成 disabled重启系统。如果不想重启可以临时用setenforce 0把 SELinux 切到宽容模式。5.2 坑二Oracle 安装时 DISPLAY 设置报错现象运行./runInstaller时提示Xlib: connection to :0.0 refused by server或No protocol specified。原因root 用户没有授权 oracle 用户访问 X11 显示。解决在 root 用户下执行xhost 然后su - oracle再运行安装程序。如果还是不行检查DISPLAY环境变量是否设置正确通常是:0.0或localhost:0.0。5.3 坑三mpiag 用户无法使用 sqlplus 或 conn / as sysdba现象mpiag 用户执行 sqlplus 报权限错误或者conn / as sysdba提示权限不足。原因mpiag 用户不在 oracle 的 dba 组里且/home/oracle目录权限太严。解决用 root 执行usermod -a -G oracle mpiag和usermod -a -G dba mpiag然后chmod -R 777 /home/oracle。如果还不行在 oracle 用户下执行create user ops$mpiag identified by mpiag;创建对应的数据库用户。5.4 坑四数据库补丁安装时 OUI-11108 报错现象运行补丁安装程序时提示OUI-11108: Packages information not specified。原因/etc/redhat-release文件里的版本号不被补丁程序识别。解决把/etc/redhat-release的内容改成Red Hat Enterprise Linux Server release 4 (Tikanga)装完补丁后再改回原样。这个操作和前面绕过操作系统版本检查是同一个思路。5.5 坑五SVN 中文路径报编码错误现象svn export或svn update时遇到中文文件名报Cant convert string from UTF-8 to native encoding。原因终端 locale 不是 UTF-8而 SVN 内部用 UTF-8 处理路径。解决在.bashrc里加export LC_ALLzh_CN.GBK然后source .bashrc。如果系统没有生成 GBK locale用locale -a查看可用 locale必要时用localedef生成。6. 验证与收尾怎么确认这套环境真的能跑环境搭完后别急着交付。我一般会按下面的顺序走一遍验证确保每个环节都通。第一步网络连通性。ping网关和 DNS 服务器确认静态 IP 生效。然后nslookup一个域名确认 DNS 解析正常。第二步SSH 和 FTP。从宿主机用 SSH 连虚拟机的 root 用户确认能登录且速度正常。用 FTP 客户端连 21 端口确认能列出文件、能上传下载。如果 FTP 用的是被动模式还要确认 iptables 里相关端口有没有放行。第三步JDK 和 SVN。java -version确认输出 1.6.0_37svn --version确认能正常执行。找一个带中文路径的 SVN 仓库做一次 export验证编码问题是否解决。第四步Oracle 数据库。用 oracle 用户执行lsnrctl start sqlplus /nolog SQL conn /as sysdba SQL startup SQL select status from v$instance;如果v$instance返回 OPEN说明数据库正常启动。再用 mpiag 用户测试连接sqlplus A28/A28mpiag28 SQL select table_name from user_tables;能查到表就说明监听配置和用户权限都没问题。第五步buildc 框架。buildc --version或直接跑一个简单的构建任务确认框架能正常调用。这套验证流程走下来大概需要十五到二十分钟。我习惯把每一步的输出截图或记到文本里后面如果出问题能快速定位是哪个环节退化。提示Oracle 数据库启动后如果lsnrctl start报监听器已存在先lsnrctl stop再启动。另外数据库密码设成 a12345A 这种带大小写和数字的组合是为了满足 Oracle 10g 的默认密码策略别图省事设成纯数字。从那以后我每次搭完这种老环境都会强制走一遍完整的验证流程尤其是 FTP 和 Oracle 监听这两块它们出问题的概率最高而且报错信息往往指向不明确。希望这份整理能帮到你少走一些我当年走过的弯路。本文还有配套的精品资源点击获取
阅读完成 · 觉得有帮助?