分类: Oracle
2008-04-14 16:50:00
作者:Casimir Saternos 来自:
介绍通过脚本和配置文件从头开始构建 Linux 服务器所涉及的工具和过程。
|
在系统管理中广泛采用的最佳实践之一是尽可能实现常规任务的自动化。Oracle 数据库 10g 包含很多增强和新特性,它们使常规的部署和配置操作自动化。例如:
Oracle 文档中详细介绍了很多其他自动化特性;有关更多信息,请参见 。
此外,使用 Oracle 10g 可以更快速地执行数据库安装且比先前版本所需系统资源更少。除此之外,DBA 还可以利用 Oracle 和 Red Hat Enterprise Linux 中提供的工具,它们允许使用配置文件和脚本(而不是典型交互式安装所需的单调的 GUI 导航过程)。服务器安装非常适于实现自动化,其原因如下:
Red Hat 和 Oracle 都提供了支持自动化安装和配置其产品的解决方案。在本文中,我将简要介绍一些通过此过程从头开始构建 Linux 服务器所涉及的工具和过程。我特别要介绍一种在测试服务器上安装 Oracle 数据库 10g 和 Red Hat Enterprise Linux (RHEL) 操作系统的方法。
RHEL 概述
“kickstart”是 Red Hat 自动安装操作系统的方法。它不是在典型交互式安装期间回答所提出的问题,而是将相关问题的回答存储在一个“kickstart”文件中。然后可以将该文件放在引导软盘、引导 CD-ROM 或网络上。对于我们这个示例而言,您将创建一个配置文件并将其保存到引导软盘(MS-DOS 格式)上。
kickstart 配置文件是一个文本文件,因而可以使用文本编辑器创建和修改该文件。(可以从 Red Hat Linux 文档 CD 的 RH-DOCS 目录中获得 sample.ks 文件。)如果您决定针对您的安装编辑 sample.ks 文件,切记必须保持文件中各节的顺序,而每个节中的各项通常可以任意排列。如果遗漏了必要的选项,安装程序会提示用户输入 — 完全自动化的解决方案不希望发生这样的事。(要详细了解这种情况的处理,请参见 Red Hat 文档中的详细信息)。
还可以通过运行一个称为 Kickstart Configurator 的工具来创建 kickstart 配置文件:
当运行 Kickstart Configurator 时,您需要回答与标准交互式安装过程中问道的相同问题。
Kickstart Configurator 还允许创建安装前和安装后运行的脚本,在运行 kickstart 的过程中可以调用这些脚本。(如果手动编辑 kickstart 文件,则这些命令会显示在文件结尾处的 %pre 或 %post 节中。)脚本编制的安装前任务的一个例子是基于给定服务器上的磁盘数量进行磁盘分区;安装后任务可能包括创建用户、配置挂载点或者将计划任务添加到 crontab。
要开始进行安装,创建 kickstart 文件(命名为 ks.cfg)并将其保存在引导软盘的根目录中。接着,将磁盘放入软盘驱动器中,并将 Linux 软件 CD 放在 CD 驱动器中。在引导提示符处,运行命令 linux ks=floppy。如果没有正确输入此命令,将进行 Red Hat GUI 的常规安装。如果您使用 CD 进行安装,则会定期提示您提供您在 kickstart 文件中指定的安装选项所需要的 CD。
以下是利用 Kickstart Configurator 为测试服务器创建的简单 kickstart 文件的示例:
#Generated by Kickstart Configurator #System language lang en_US #Language modules to install langsupport --default=en_US #System keyboard keyboard us #System mouse mouse generic3ps/2 #Sytem timezone timezone America/New_York #Root password rootpw --iscrypted $1$WSGKfbye$QOEidXByh2fVQPOycas8h/ #Reboot after installation reboot #Install Red Hat Linux instead of upgrade install #Use CDROM installation media cdrom #System bootloader configuration bootloader --location=mbr #Clear the Master Boot Record zerombr yes #Partition clearing information clearpart --all --initlabel #Disk partitioning information part /boot --fstype ext3 --size 99 part swap --recommended part / --fstype ext3 --size 1 --grow #System authorization infomation auth --useshadow --enablemd5 #Network information network --bootproto=static --ip=128.165.101.107 --netmask=255.255.251.0在初始安装之后启动服务器时,将提示您完成一些初始的基本配置步骤。将会提供关于以下各方面的选项
--gateway=128.165.109.130 --nameserver=128.165.106.3 --device=eth0 #Firewall configuration firewall --disabled #XWindows configuration information xconfig --depth=32 --resolution=1024x768 --defaultdesktop=GNOME --startxonboot #Run the Setup Agent on first boot firstboot --enable #Package install information %packages --resolvedeps @ X Window System @ GNOME Desktop Environment @ KDE Desktop Environment @ Editors @ Engineering and Scientific @ Graphical Internet @ Text-based Internet @ Office/Productivity @ Sound and Video @ Graphics @ Games and Entertainment @ Authoring and Publishing @ Server Configuration Tools @ Web Server @ Mail Server @ Windows File Server @ FTP Server @ Development Tools @ Kernel Development @ X Software Development @ GNOME Software Development @ KDE Software Development @ Administration Tools @ System Tools @ Printing Support
配置脚本
您可以通过 shell 脚本对很多附加的初始服务器设置进行自动化。以下是一些示例,可以帮助您学习创建那些与特定安装和网络环境相关的脚本。它们并没有完全涵盖所有内容,也不是普遍适用的,但是代表了通常需要在操作系统安装后执行的任务。
可以将这些内容包含在一个与 kickstart 配置不同的单独脚本中,但其描述的大部分(如果不是全部)功能可以包含在 Kickstart 文件的“Post-Installation Script”一节中。
为 Oracle 数据库 10g 安装添加 Oracle 用户和组。对于典型的 Oracle 10g 安装,需要添加两个组和一个 Oracle 用户。
groupadd -g 499 oinstall; groupadd -g 502 dba; useradd -u 499 -p oracle -g oinstall -G dba oracle;为数据库安装配置内核参数。在理想情况下,您可以编写一个检查现有内核参数设置的脚本。如果将某个内核参数的设置高于 Oracle 建议的安装值,则该值保持改变。如果参数值低于建议的最小值,则您应该调整该值,使其符合要求的阈值。
以下示例仅设置了需要在测试服务器上更改的一些值:
echo "# " >> /etc/sysctl.conf echo "# Required for Oracle 10g " >> /etc/sysctl.conf echo "# " >> /etc/sysctl.conf echo "kernel.shmall = 2097152" >> /etc/sysctl.conf echo "kernel.shmmax = 2147483648" >> /etc/sysctl.conf echo "kernel.shmmni = 4096" >> /etc/sysctl.conf echo "kernel.sem = 250 32000 100 128" >> /etc/sysctl.conf echo "fs.file-max = 65536" >> /etc/sysctl.conf echo "net.ipv4.ip_local_port_range = 1024 65000" >> /etc/sysctl.conf /sbin/sysctl -p有关内核参数配置的更多信息,请参见 Oracle 数据库 10g 安装文档。
为数据库安装设置环境变量。当用户登录时,将执行用户主目录(通常是 /home/<用户名>)中的 .bash_profile,并设置 ORACLE_BASE、ORACLE_HOME 和 PATH 等环境变量。
echo "ORACLE_BASE=/oracle/home" >> /home/oracle/.bash_profile echo "ORACLE_HOME=/oracle/home/OraHome_1" >> /home/oracle/.bash_profile echo "export ORACLE_HOME ORACLE_BASE" >> /home/oracle/.bash_profile echo "PATH=$PATH:$ORACLE_HOME/bin" >> /home/oracle/.bash_profile echo "export PATH"用户的 .bash_profile 中还有很多其他可以设置的变量。例如,您可能还希望根据您的安装和用户的责任来设置 JAVA_HOME 或其他变量。
其他安装前任务。您可以将其他很多验证/配置步骤添加到脚本中来执行以下操作:
此脚本将添加条目、编辑现有条目并重新启动网络服务。
# # Edit /etc/hosts # echo "128.165.101.107 test-server.my-domain.us test-server" >> /etc/hosts; # # Edit /etc/sysconfig/network # echo "NETMASK = 255.255.251.0 " >> /etc/sysconfig/network; # # Example using Perl # perl i -p -e 's/localhost/test-server/g' /etc/sysconfig/network; perl I -p -e 's/localdomain/my-domain.us/g' /etc/sysconfig/network; # # Example using sed # sed -e 's/localdomain/my-domain.us/g' /etc/sysconfig/network >/tmp/$$ && mv /tmp/$$ /etc/sysconfig/network; sed -e 's/localhost/test-server/g' /etc/sysconfig/network >/tmp/$$ && mv /tmp/$$ /etc/sysconfig/network; # # Edit /etc/resolv.conf # echo "search my-domain.us" > /etc/resolv.conf; echo "nameserver 10.64.106.1" >> /etc/resolv.conf; echo "nameserver 10.64.6.1" >> /etc/resolv.conf; # # Following the editing of the configuration files, # restart Network services # /etc/init.d/network restart建立挂载点。现在建立从新服务器 (test-server) 到我们网络中某个远程服务器(名为 remote-server)的挂载点。该任务涉及编辑 /etc/fstab 文件和挂载新的挂载点。
mkdir /mp_other_server; echo "remote-server:test-server / mp_other_server nfs rsize=8192,wsize=8192,timeo=:4,intr" >> /etc/fstab; mount -a;
添加网络打印机。在系统中利用 GUI 设置安装打印机之后,用户导出配置(以 XML 格式),然后将配置导入同一服务器或另外的服务器中。(有关详细信息,请参见 。)要从配置好的服务器中导出配置,可运行以下命令:
/usr/sbin/Red Hat-config-printer-tui --Xexport > settings.xml可以选择导入并覆盖现有的打印机设置,或者利用新条目更新现有设置。
/usr/sbin/Red Hat-config-printer-tui --Ximport < settings.xml /usr/sbin/Red Hat-config-printer-tui --Ximport --merge < settings.xml在进行了任一类型的导入之后,都需要重新启动打印机服务:
/sbin/service cups restart创建“每日消息”。如果您希望用户在初次登录到服务器时显示一条消息,则必须编辑 /etc/motd 文件,将要显示的消息包含在其中。
echo "################################################### " > /etc/motd echo "" >> /etc/motd echo " Welcome to 'hostname' " >> /etc/motd echo " 'date' " >> /etc/motd echo "" >> /etc/motd echo "################################################### " >> /etc/motd echo "" >> /etc/motd其他配置任务。以上列出的任务虽有代表性,但绝不是全面的;您可以考虑其他软件(如 Web 服务器、Web 浏览器和邮件服务器)的安装自动化和配置策略。例如,可以完成某些任务来解决安全性问题:
Oracle 关于软件安装和配置甚至数据库本身的自动化解决方案涉及到一个响应文件 的使用。该文件的用途与 Red Hat 的 kickstart 文件相似。用户不是对交互式对话所提出的问题进行交互式回答,而是将回答存储在一个文本文件中,随后 Oracle Universal Installer (OUI) 在运行安装程序时使用该文件。这样的安装称为“静默安装”。OUI 用于安装各种应用程序,因此响应文件不限于安装数据库。
可以通过在记录模式中运行软件或通过手动编辑示例响应文件来创建响应文件。以下是一个基本演示:
./runInstaller -record -destinationFile /tmp/recorded.rsp
./runInstaller -silent -responseFile /tmp/recorded.rsp在运行脚本时将会报告安装的进度。