
简介这份文档面向需要在虚拟机中搭建Linux开发或测试环境的技术人员系统梳理了CentOS 6.5-x86_64的安装与常用组件部署流程。内容涵盖基础操作系统安装、静态网络配置、VMware虚拟工具安装、用户创建以及SSH、FTP、telnet、SVN、JDK、buildc、RF和Oracle数据库等关键组件的安装与配置并针对root访问限制、防火墙、DNS反向解析等常见问题给出了具体处理思路。资源包内共1个docx文件约32KB以图文步骤形式记录操作要点便于对照执行与排错。目前已有384人学习下载适合刚接触Linux部署、需要快速搭建完整开发测试环境的运维与测试人员参考也可作为Oracle自动化测试环境搭建的实操笔记。1. 虚拟机里装 CentOS 6.5 这件事为什么 2024 年还有人干上周帮一个做自动化测试的朋友收拾一台虚拟机他要在上面跑一套十几年前的老工具链宿主是 VMware客户机点名要 CentOS 6.5 x86_64。他折腾了两天卡在网卡起不来、FTP 登不上、Oracle 装到一半报内核参数不达标。我接手后按一份老笔记重走了一遍两个小时收工。这份笔记就是今天要拆的东西——一份把 CentOS 6.5 从裸机装到 Oracle 数据库能连通的完整部署记录覆盖网络静态配置、VMware Tools、SSH/FTP/Telnet、SVN、JDK、buildc、RF 环境、Oracle 10g 安装与补丁。它解决的不是怎么装个 Linux这种泛问题而是一套依赖 Oracle 10g 的老测试环境怎么在虚拟机里一次性搭到能用。适合两类人一是手里有老项目、老工具链必须复现的运维和测试工程师二是想搞明白早期 RHEL/CentOS 体系下网络、服务、数据库是怎么一层层配起来的学习者。硬盘给 30G 不是随手写的Oracle 装完加自动化测试跑起来会吃掉 20G 左右这个数字后面还会反复出现。2. 装系统与网络配置静态 IP 怎么设才不翻车2.1 安装阶段就要定下来的三件事系统装的是 Red Hat 5.6 x86_64 这一支CentOS 6.5 同源配置方式一致安装序列号 550dd56b51499bd5。安装过程中有三件事必须在装的时候就定好不然后面全是返工。第一语言选中文。这不是为了好看是因为后面 Oracle 的字符集、SVN 的中文路径都跟 locale 强相关一开始就统一到中文环境能省掉一堆乱码排查。第二禁用防火墙。老测试环境里 FTP、Telnet、Oracle 监听端口一大堆逐个开端口不如直接关掉。文档里给了临时和永久两种关法我一般装的时候就永久关省得重启后又冒出来。第三硬盘 30G。这个数字是算过的Oracle 10g 装完大概占 4~5G加上自动化测试跑起来产生的数据文件、日志、临时表空间20G 左右会被吃掉留 30G 是给系统本身和后续补丁留余量。给 20G 的人跑到一半磁盘满那才是真的血泪经验。安装完成后第一件事是把终端快捷方式放到桌面方便后面所有操作。这个动作很小但老环境里没有它每次都要去菜单里翻效率差很多。2.2 静态 IP 配置ifcfg-eth0 逐行拆解网络是整套环境的地基配错了后面 SSH、FTP、Oracle 监听全部连不上。核心文件是/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 # 网卡物理地址虚拟机里建议写死 ONBOOTyes # 开机自动加载不写这行重启后网卡不启动 IPADDR10.10.126.235 # IP 地址也可用 10.10.126.244 NETMASK255.255.255.0 # 子网掩码 GATEWAY10.10.126.1 # 默认网关 TYPEEthernet # 连接类型 USERCTLyes # 允许非 root 用户控制该接口 IPV6INITno # 关闭 IPv6 初始化 PEERDNSyes # 允许 DHCP 覆盖 resolv.conf静态下影响不大逐行说几个容易踩的点。BOOTPROTO写static和写none效果一样都是静态但写dhcp就是动态别混。HWADDR在虚拟机里建议写死因为克隆虚拟机时网卡 MAC 会变不写死容易出现配置没动但网卡起不来的玄学问题。ONBOOTyes是最容易被漏的一行漏了它service network restart当下能通一重启就断很多人卡在这。DNS 配置在另一个文件/etc/resolv.conf# /etc/resolv.conf nameserver 202.107.117.11 nameserver 210.83.210.155两个 nameserver 是主备关系第一个不通会走第二个。配完执行重启service network restart如果重启报错先看ifconfig有没有拿到 IP再看ping 网关通不通最后看ping 外网。三层排查法能定位 90% 的网络问题。2.3 NAT 模式下的配置差异虚拟机网络模式不同配置也不一样。NAT 模式下网关和 IP 段是 VMware 虚拟出来的配置长这样# NAT 模式 ifcfg-eth0 DEVICEeth0 BOOTPROTOnone HWADDR00:0c:29:2e:e8:f8 ONBOOTyes IPADDR192.168.50.132 NETMASK255.255.255.0 GATEWAY192.168.50.1 TYPEEthernet USERCTLyes IPV6INITnoNAT 模式的好处是虚拟机不用占宿主所在网段的真实 IP适合笔记本换网络环境时用。桥接模式则要求虚拟机 IP 和宿主同网段换网络就得改配置。选哪个看场景固定办公环境用桥接移动办公用 NAT。提示改完网络配置一定要service network restart并ping验证不要配完就直接往下走后面所有服务都依赖网络。3. 虚拟工具、用户与基础服务SSH/FTP/Telnet 三件套3.1 VMware Tools 安装为什么要手动编译虚拟机装完第一件事是装 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逻辑说明先从虚拟光驱挂载点把 tar 包拷到临时目录解压两次gzip 解压再 tar 解包进目录跑安装脚本。./vmware-install.pl会一路问路径全回车用默认值即可。装完必须重启不重启共享文件夹不生效。参数上唯一要注意的是VMwareTools-9.6.1-1378637.tar.gz这个版本号它对应的是当时 VMware 的版本新版 VMware 的 Tools 包名不一样但流程完全一致。如果/media/VMware Tools/路径不存在说明虚拟光驱没挂载在 VMware 菜单里手动挂一下。3.2 创建 mpiag 和 oracle 用户Oracle 不允许用 root 装必须建专用用户。文档里建了两个mpiag 和 oracle。useradd mpiag passwd mpiag useradd oracle passwd oracleuseradd只建用户不设密码必须跟passwd设密码否则用户无法登录。mpiag 是自动化测试用的业务用户oracle 是数据库专用用户两个分开是为了权限隔离——后面 Oracle 的 setuid 问题、组权限问题都跟这个隔离有关。3.3 SSH 配置root 访问与提速SSH 默认已装已开但默认禁止 root 直接登录。要放开 root改 SELinuxvi /etc/sysconfig/selinux # 将 SELINUXenforcing 改为 SELINUXdisabledSELinux 是强制访问控制老环境里它经常和 FTP、Oracle 打架直接 disabled 最省事。改完立即生效。SSH 登录慢是另一个高频问题原因是服务端在做 DNS 反向解析。关掉它vi /etc/ssh/sshd_config # 尾部添加 UseDNS noUseDNS no让 SSH 不再反查客户端域名登录速度从十几秒降到一秒内。这个参数在老环境里几乎是必调项。3.4 FTP 服务端vsftpd 安装与 root 放行FTP 用的是 vsftpd-2.0.5-16.el5_5.1.x86_64.rpm安装后启动并设开机自启service vsftpd start chkconfig vsftpd on默认 21 端口没开要改 iptablesvi /etc/sysconfig/iptables # 增加一行 -A INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT让 root 能登录 FTP 要改三个文件这是最容易漏的地方# 1. /etc/vsftpd/ftpusers 中 root 前加 # # 2. /etc/vsftpd/user_list 中 root 前加 # # 3. /etc/vsftpd/vsftpd.conf 中 userlist_enableYES 改为 NO service vsftpd restart三个文件缺一不可。ftpusers是黑名单user_list是白名单/黑名单取决于userlist_denyvsftpd.conf里的userlist_enable控制是否启用这个列表。只改前两个不改第三个root 照样登不上。如果 FTP 能登录但看不到文件列表、不能创建文件八成还是 SELinux 没关干净检查/etc/selinux/config里SELINUXdisabled并重启。如果每次 FTP 验证密码特别慢是 DNS 解析在拖把/etc/resolv.conf里的 nameserver 注释掉再重启 vsftpd。防火墙的临时和永久关闭方式也记一下/etc/init.d/iptables status # 查看状态 /etc/init.d/iptables stop # 本次关闭 /etc/init.d/iptables restart # 重启 chkconfig --level 35 iptables off # 永久关闭注意中间是两个短横3.5 Telnet 服务端root 访问的两种改法Telnet 用的是 telnet-server-0.17-39.el5.x86_64.rpm装完改/etc/xinetd.d/telnet里disable为no然后service xinetd restart。让 root 能 Telnet 登录文档给了两种方法。方法一是去掉/etc/pam.d/login里的auth required /lib/security/pam_securetty.so但文档明确说此方法重启没好用。方法二是编辑/etc/securetty加上 pts/0 到 pts/3# /etc/securetty 追加 pts/0 pts/1 pts/2 pts/3方法二不需要重启即可生效这是实测有效的那个。Telnet 明文传输不安全但内网老环境里常用来做快速调试知道怎么开就行。注意Telnet 和 FTP 都是明文协议只在隔离的内网测试环境用不要暴露到公网。4. SVN、JDK 与 buildc开发工具链的安装顺序4.1 SVN 中文路径问题一个环境变量解决SVN 客户端默认已装但有个中文路径的坑。当仓库里有中文路径时会报svn: Cant convert string from UTF-8 to native encoding原因是 SVN 内部用 UTF-8而系统 locale 不是 UTF-8 兼容的。解决办法是在.bashrc里加一行export LC_ALLzh_CN.GBKLC_ALL优先级最高会覆盖其他 locale 设置。设成 GBK 后 SVN 的中文路径就能正常转换。这个坑不解决后面从 SVN 拉 buildc 和 rf_setup 时就会卡住。4.2 JDK 安装bin 包安装与软链接JDK 用的是 jdk-6u37-linux-x64.bin装到/usr/javamkdir /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.bin包是自解压格式直接执行就会解压出jdk1.6.0_37目录。装完删掉安装包省空间。然后建软链接让系统能找到 java 命令cd /usr/bin ln -s -f /usr/java/jdk1.6.0_37/jre/bin/java ln -s -f /usr/java/jdk1.6.0_37/bin/javacln -s -f的-f是强制覆盖已有链接避免重复执行时报文件已存在。也可以不建链接直接重启但建链接更可控。环境变量配置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/libJAVA_HOME是很多工具包括 Jenkins找 JDK 的依据CLASSPATH里的./表示当前目录这是老 Java 项目的惯例。这些变量写进.bashrc才能持久化。4.3 buildc 框架从 SVN 拉取到安装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/buildcsvn export和svn checkout的区别export 拉出来的是干净副本不带.svn目录适合部署。python setup.py install是 Python 包的标准安装方式会装到 site-packages。最后chmod 777 /usr/bin/buildc是给所有用户执行权限因为后面 mpiag 用户也要用。4.4 RF 环境可选安装项RFRobot Framework环境文档标注不安装但流程记一下cd /home/temp svn export http://10.10.125.156/svn0/mpiag/users/wangtzh/rf_setup cd rf_setup python rf_setup.py install需要 root 用户执行。这套流程和 buildc 一样都是 SVN 拉取加 Python 安装。标不安装说明当前项目用不到但保留步骤是为了环境完整性。提示SVN 拉取前先确认LC_ALLzh_CN.GBK已生效否则中文路径会报编码错误。5. Oracle 10g 安装内核参数、环境变量与四个典型报错5.1 安装包解压与用户环境变量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.cpio.gz要先 gzip 解压成.cpio再用 cpio 解包。-idv是解包、保留目录结构、显示过程。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 ORACLE_TERMxterm; export ORACLE_TERM # 库路径 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 CLASSPATH$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib CLASSPATH$CLASSPATH:$ORACLE_HOME/network/jlib export CLASSPATH # 语言设置 export NLS_LANGAMERICAN_AMERICA.UTF8 export LC_ALLCORACLE_BASE是根目录ORACLE_HOME是具体版本目录ORACLE_SID是实例名。NLS_LANG设成AMERICAN_AMERICA.UTF8是为了图形化安装界面不乱码LC_ALLC是让安装程序用 C locale 避免字符集冲突。这两个变量和前面 SVN 的LC_ALLzh_CN.GBK是矛盾的所以它们在不同用户的.bashrc里互不干扰。5.2 内核参数调整不调就报警告Oracle 安装前必须调内核参数否则安装检查会报一堆警告。编辑/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参数含义shmmni是共享内存段最大数量sem是信号量四个值分别是 SEMMSL、SEMMNS、SEMOPM、SEMMNIfile-max是系统级文件句柄上限ip_local_port_range是本地端口范围后面四个是网络读写缓冲区大小。改完用/sbin/sysctl -p激活。还要设 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.so这三处配合才能让 limits.conf 生效。只改 limits.conf 不改 pam限制不会应用。5.3 四个典型报错的处理报错一Checking operating system version Failed现象是安装检查报 must be redhat-3, SuSE-9, redhat-4... 失败。原因是 Oracle 10g 不认识 RHEL 5.6 这个版本号。两种改法一是改/etc/redhat-release内容把 5.6 改成 4二是改install/oraparam.ini在[Certified Versions]的Linux后面追加redhat-5。方法二更干净不动系统文件。报错二libXp.so.6 cannot open shared object file缺 32 位兼容库装libXp-1.0.0-8.1.el5.i386.rpm即可。64 位系统跑 Oracle 图形安装程序时需要 32 位库支持。报错三Xlib No protocol specified现象是检查 DISPLAY 时 Xlib 报错。解决root 用户下执行xhost 然后回到 oracle 用户重新跑./runInstaller。xhost 是放开 X 服务器访问控制让 oracle 用户能连上 root 的 X 会话。报错四字符集选择数据库字符集选Simplified Chinese ZHS16GBK。文档特别提到以前用ZGS32 GB18030但导入 sqlplus 语句有乱码所以改用 ZHS16GBK。数据库密码设为 a12345A。5.4 启动数据库与监听验证装完后启动流程四步lsnrctl start # 启动监听 sqlplus /nolog # 进入 sqlplus SQL conn /as sysdba # sysdba 角色登录 SQL startup # 启动数据库验证监听是否通sqlplus /nolog conn A28/A28mpiag28 conn A27/A27mpiag27 select table_name from user_tables;mpiag28是监听配置里的连接串指向10.10.126.188:1521的 orcl 实例。能查到表说明监听、实例、用户权限全通。5.5 权限相关的三个坑坑一mpiag 用户不能用 sqlplus原因是/home/oracle目录权限不够chmod -R 777 /home/oracle解决。这是最粗暴但有效的办法。坑二ORA-27121 unable to determine size of shared memory segment现象是ORA-01034加ORA-27121Linux Error 13 Permission denied。原因是 oracle 可执行程序没有正确的 setuid 位。解决su - oracle cd $ORACLE_HOME/bin chmod 6751 oracle6751里的 6 是 setuidsetgid让 oracle 程序以 oracle 用户和 oinstall 组身份运行。验证ls -l看到-rwsr-s--x就对了。坑三mpiag 用户不能 conn / as sysdba需要把 mpiag 加入 oracle 组su - root usermod -a -G oracle mpiag如果要更细的权限控制可以建 dba 组groupadd -g 151 dba usermod -a -G dba oracle usermod -a -G dba mpiag usermod -a -G oracle mpiag然后 oracle 用户下建 ops$ 用户su - oracle sqlplus / as sysdba create user ops$mpiag identified by mpiag;ops$前缀是 Oracle 的 OS 认证用户命名约定让 mpiag 通过操作系统认证直接连数据库。6. 补丁安装与验证OUI-11108 和字符集收尾6.1 补丁安装流程Oracle 补丁包是 p8202632_10205_Linux-x86-64.zip。装补丁前先关数据库然后unzip p8202632_10205_Linux-x86-64.zip cd Disk1 ./runInstaller安装完成后在 SQLPLUS 里执行升级脚本sqlplus / as sysdba SQL startup upgrade SQL /home/oracle/product/10.2.0/db_1/rdbms/admin/catupgrd.sqlstartup upgrade是升级模式启动catupgrd.sql是数据字典升级脚本。这两步顺序不能反先升级模式启动再跑脚本跑完正常重启。6.2 OUI-11108 报错处理补丁安装时可能报OUI-11108: Packages information not specified。原因是/etc/redhat-release里的版本号不被识别把它改成 4 即可。这和前面装主程序时的版本检查是同一个根因——Oracle 10g 的版本白名单里没有 RHEL 5。6.3 字符集验证与一个习惯装完补丁后验证字符集。文档里韩铁峰给的配置是export LANGzh export NLS_LANGAMERICAN_AMERICA.ZHS16GBK export NLS_CHARACTERSETZHS16CGB231280 export NLS_NCHAR_CHARACTERSETZHS16CGB231280 export LC_ALLzh_CN.GBK这里有个细节NLS_LANG设成AMERICAN_AMERICA.ZHS16GBK而前面安装时设的是AMERICAN_AMERICA.UTF8。这两个不一致会导致导入导出时字符集转换出问题。我的做法是装完后统一确认一遍NLS_LANG和数据库实际字符集是否匹配用这条命令查SELECT * FROM nls_database_parameters WHERE parameter LIKE %CHARACTERSET%;查出来的NLS_CHARACTERSET如果是ZHS16GBK那NLS_LANG就设AMERICAN_AMERICA.ZHS16GBK如果是UTF8就设AMERICAN_AMERICA.UTF8。两边必须一致否则中文数据进去就是乱码而且这种乱码在导入时才暴露排查起来很费劲。从那以后我每次装完 Oracle不管多急都强制走一遍字符集核对先查数据库参数再对NLS_LANG最后插一条中文测试数据读出来看。这三步花不了五分钟但能省掉后面几小时的乱码排查。希望帮到你。本文还有配套的精品资源点击获取