信息化 频道

印度CIO口述⑧:小接线盒引来大危机

    【IT168 专稿】关于 Oracle9i 的安装过程要过些时间再写。很多人已经写过类似的安装笔录、安装指南,但是网上现成的资料多数都有一些谬误,以后有空我再跟大家交流。这里要研究的是如何让 Redhat AS3_U6 支持 Oracle9i 的中文显示,同时也讨论远程安装,篇幅比较大所以独立写成一篇。

方案概述:

    1) 直接在 Linux 本机登录,zys 和 tlc 都非常美观,看着很舒服。我看过不少文章是介绍用 Simsun 和 Tahoma 增加系统字体解决中文问题,感觉太复杂了点,加字体改配置其实很简单的。

    2) 通过 Xmanager Enterprise 连接,字体由 Font Server 提供。在 Xconfig 的 Font 增加 Font Server 192.168.100.60。其中 zys 字体非常美观,tlc比较粗糙,可能换别的工具会好看点。

    3) 通过 Vnc Viewer 连接,zys 和 tlc 都找不到字体。原因是我不知道怎么配 置 Vnc 使它可以连 Font Server,或许某些高手以及软件开发商可以搞定这个问题,目前只能用第四种办法解决。

    4) 以上三种连接方式中,如果先设置 JAVA_FONTS 环境再安装,同样可以显示 中文。可惜字体又小又模糊,可能伤害视力,而且系统报告有些字体找不到。 

     昨天我研究了很久,没办法彻底解决。 过程分析:

    1) 所谓 zys 字体,就是-misc-ZYSong18030-,所谓 tlc 字体,就是-tlc-song-。 其中 zys 是 Redhat AS3_U6 自带的,tlc 需要到网上下载 Turbo Linux 的 字体然后安装,搜索一下就找到了。常见的是 1.4-13 和 1.5-1 这两个版本, 推荐用 1.4-13 的,结构比较简单。

http://ftp.jaist.ac.jp/pub/Linux/TurboLinux/TurboLinux/ia32/Server/7/install/turbo/RPMS/ ttf-zh-song-1.4-13.noarch.rpm ttf-zh-additional-1.4-13.noarch.rpm http://ftp.jaist.ac.jp/pub/Linux/TurboLinux/TurboLinux/ia32/Server/8/install/turbo/RPMS/ ttf-zh-additional-1.5-1.noarch.rpm ttf-zh-song-1.5-1.noarch.rpm
    使用 tlc 的话,就不需要改 Oracle 的 font.properties.zh 了。下载回来传到 Linux 主机,然后 su - 变成 root,安装命令是
rpm -ihv xxx.rpm rpm -qa | grep ttf-zh cd /home/oracle/setup/ rpm -ihv ttf-zh-song-1.4-13.noarch.rpm rpm -ihv ttf-zh-additional-1.4-13.noarch.rpm rpm -ql ttf-zh-song | grep ttf ls -la /usr/X11R6/lib/X11/fonts/ttf-zh
    使用 zys 的话,首先要找 Oracle 的 font.properties.zh 文件,然后修改。
[oracle@rebeca oracle]$ cd setup ; pwd /home/oracle/setup [oracle@rebeca setup]$ find -name font*zh ./Disk1/stage/Components/oracle.swd.jre/1.3.1.0.0/1/DataFiles/Expanded/jre/linux/lib/font.properties.zh [oracle@rebeca lib]$ cd ./Disk1/stage/Components/oracle.swd.jre/1.3.1.0.0/1/DataFiles/Expanded/jre/linux/lib/ [oracle@rebeca lib]$ cp -pf font.properties.zh font.properties.zh.tlc [oracle@rebeca lib]$ cat font.properties.zh.tlc | sed 's/-tlc-song-/-misc-ZYSong18030-/g' > font.properties.zh.zys [oracle@rebeca lib]$ cp -pf font.properties.zh.zys font.properties.zh [oracle@rebeca lib]$ ls *zh* font.properties.zh font.properties.zh.tlc font.properties.zh.zys [oracle@rebeca lib]$ cat font.properties.zh.tlc | grep -e "-tlc-song-" [oracle@rebeca lib]$ cat font.properties.zh.zys | grep -e "-tlc-song-" [oracle@rebeca lib]$ cat font.properties.zh.zys | grep -e "-misc-ZYSong18030-"
    装好了 tlc 字库并且改好了 zys 的配置文件,你就可以随时切换中文字体了。其实在 Linux 本机安装的时候,两种字体都非常美观,不相上下。有一点必须说明,通常服务器放在非常冷的机房里,专业服务器(无头机)多数不带显示器,人们喜欢一边用桌面电脑看资料一边操作,所以本机安装其实并不是那么完美。     2) 要实现对远程主机的访问,通常我们都会使用 X 窗口软件或者远程访问软件。 比较有名的是 Exceed,但是太大而且很贵,Xwin Pro 比较小,但功能简单。

    Xmanager Enterprise 是一个优秀的 X 窗口服务器。Linux 服务器作为一个X 客户端把资料发给 Xmanager,由它负责解释并且作图。所以,这就带来一个问题,Linux 本机登录时已经安装的字体,但是 X 窗口服务器可能不认识。

    解决方案是在 X 窗口服务器上安装对应的字体(厂家提供,不好找),或者是在 Linux 服务器(也就是 X 客户端)建立一个 Font Server。这样当 X 服务 器碰到解释不了的字体,就会到 Font Server 去查询并下载,然后显示出来。

    用 root 登陆,RH菜单--->系统设置--->登录屏幕--->XDMCP,选"启用XDMCP"。你可以用 Broadcast 方式去搜索 XDMCP,也可以用 Passive 接受主机数据。

    考虑到 Redhat AS3_U6 作为服务器,通常都启动了防火墙,那么我们首先要把一些端口打开。xdmcp 是 UDP 177,x11 是 TCP 6000,xfs 是 TCP 7100。

    Vnc 一般是用 TCP 5900,但在 Linux 里从 5901 开始,每加一个端口递增。

service iptables stop service iptables status less /etc/rc.d/init.d/iptables <----- IPTABLES=iptables IPTABLES_DATA=/etc/sysconfig/$IPTABLES IPTABLES_CONFIG=/etc/sysconfig/${IPTABLES}-config -----> vi /etc/sysconfig/iptables <----- # Firewall configuration written by redhat-config-securitylevel # Manual customization of this file is not recommended. *filter :INPUT ACCEPT [0:0] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [0:0] :RH-Firewall-1-INPUT - [0:0] -A INPUT -j RH-Firewall-1-INPUT -A FORWARD -j RH-Firewall-1-INPUT -A RH-Firewall-1-INPUT -i lo -j ACCEPT -A RH-Firewall-1-INPUT -p icmp --icmp-type any -j ACCEPT -A RH-Firewall-1-INPUT -p 50 -j ACCEPT -A RH-Firewall-1-INPUT -p 51 -j ACCEPT -A RH-Firewall-1-INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 7778 -j ACCEPT -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 7777 -j ACCEPT -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 7100 -j ACCEPT -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 6000 -j ACCEPT -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 5902 -j ACCEPT -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 5901 -j ACCEPT -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 5900 -j ACCEPT -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 4443 -j ACCEPT -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 1521 -j ACCEPT -A RH-Firewall-1-INPUT -m state --state NEW -m udp -p udp --dport 177 -j ACCEPT -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 25 -j ACCEPT -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 23 -j ACCEPT -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT -A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited COMMIT -----> vi /etc/services {用vi的"/数字"找到端口号附近的区域,填加下列信息} <----- oratns 1521/tcp # Oracle listener ...... vnc+0 5900/tcp # VNC Server Port + 0 vnc+1 5901/tcp # VNC Server Port + 1 vnc+2 5902/tcp # VNC Server Port + 2 ...... oraSSL 4443/tcp # Oracle Apache 1.3.22 ...... oraweb 7777/tcp # Oracle Apache 1.3.22 orassl 7778/tcp # Oracle Apache 1.3.22 -----> service iptables start service iptables status <----- Chain RH-Firewall-1-INPUT (2 references) target prot opt source destination ACCEPT all -- anywhere anywhere ACCEPT icmp -- anywhere anywhere icmp any ACCEPT ipv6-crypt-- anywhere anywhere ACCEPT ipv6-auth-- anywhere anywhere ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:orassl ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:oraweb ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:xfs ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:x11 ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:vnc+2 ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:vnc+1 ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:vnc+0 ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:oraSSL ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:oratns ACCEPT udp -- anywhere anywhere state NEW udp dpt:xdmcp ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:http ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:smtp ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:telnet ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:ssh ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:ftp REJECT all -- anywhere anywhere reject-with icmp-host-prohibited -----> cat /etc/rc.d/init.d/xfs | grep -e config -e daemon <----- # chkconfig: 2345 90 10 # config: /etc/X11/fs/config daemon xfs -droppriv -daemon -----> vi /etc/rc.d/init.d/xfs {备注:一些资料说Unix默认是 -1,最好强制指定为 7100 断绝隐患} <----- daemon xfs -droppriv -daemon -port 7100 -----> vi /etc/X11/fs/config {备注:默认是关闭 TCP,要用时在 no-listen 前面加注解号,重启} <----- # don't listen to TCP ports by default for security reasons # no-listen = tcp -----> netstat -na | grep :7100 lsof -P | grep -e *:7100 xfsinfo -server 192.168.100.60:7100 <----- name of server: 192.168.100.60:7100 version number: 2 vendor string: The XFree86 Project (experimental version) vendor release number: 6600 maximum request size: 8192 longwords (32768 bytes) number of catalogues: 1 all Number of alternate servers: 0 number of extensions: 0 -----> vi /etc/X11/XF86Config <----- RgbPath "/usr/X11R6/lib/X11/rgb" FontPath "/usr/share/fonts/zh_CN/TrueType" FontPath "/usr/X11R6/lib/X11/fonts/ttf-zh" FontPath "/usr/X11R6/lib/X11/fonts/75dpi" FontPath "/usr/X11R6/lib/X11/fonts/misc" FontPath "/usr/X11R6/lib/X11/fonts/CID" FontPath "/usr/X11R6/lib/X11/fonts/Speedo" FontPath "/usr/X11R6/lib/X11/fonts/100dpi" FontPath "unix/:7100" FontPath "tcp/192.168.100.60:7100" ----->
    如果上面的文字过于简略导致不便理解,请参考下面这篇文章,作者:laptop。

    http://www.linuxforum.net/doc/xdmcp.html

基于XDMCP的远程X

    重起 Linux 后,以上修改就生效了。在 WinXp 里可以用广播方式和被动方式 去访问主机。运行 Xmanager - Broadcast,在 Broadcast Chooser 对话框里会显示所找到的 XDMCP 主机,rebeca[192.168.100.60][Linux 2.4.21-37.EL],选中你的服务器并点 connect。如果没有连接成功,请检查是否本机具备两个或以上 IP,这时弹出一个 IP Selector,请选择跟主机同一个网段的 IP。连接成功后,RH菜单--->系统工具--->终端,点右键,选"将该启动器加入面板"。

    没有配置 Xconfig,直接在 Xmanager 里安装 Oracle,执行 ./runInstaller出现报错信息,并显示大量的“口口”,说明 Linux 的字体在 Xman 里无效。Font specified in font.properties not found [-tlc-song-medium-r-normal--*-%d-*-*-c-*-gbk-0]

    所以必须 Xconfig,把 XDMCP sample 设置成 Default,然后找 Font 栏目, Add Font Server,填写 Linux 主机 IP,例如 192.168.100.60,端口 7100。添加成功后,显示 tcp/192.168.100.60:7100。这时候再安装就有中文。

    运行 Xmanager - Passive,用 SecureCRT 登录 Linux 主机 192.168.100.60。xhost +192.168.100.70

    结果:192.168.100.70 being added to access control list,于是这个IP可以作为 X 窗口的主机了。权限变动后 Xmanager 会自动关闭,请重新运行。

    export DISPLAY=192.168.100.70:0.0

    执行 ./runInstaller 就发现安装界面跑到你的屏幕了,Xconfig 同上所述。     3) 首先用 SecureCRT 开一个新窗口登录 Linux 主机 192.168.100.60,帐号一般用 oracle。第一次运行 Vnc 会问你密码,关闭用 vncserver -kill xxx。

[oracle@rebeca oracle]$ vncserver New 'rebeca:1 (oracle)' desktop is rebeca:1 Starting applications specified in /home/oracle/.vnc/xstartup Log file is /home/oracle/.vnc/rebeca:1.log
    这时候运行 Vnc Viewer,Server 填写 192.168.100.60:5901,按 OK,输入密码,再按 OK。在 Vnc 里开一个终端,就可以进行安装了。可惜的是,我没有找到 Vnc Server 的相关资料,导致 Font Server 信息不可用,也就是说直接安装 Oracle9i 会导致“口口”的乱码。目前一般用方法四安装,否则我们必须 export LANG=C,只能用英文界面。

    4) 在安装窗口输入:export JAVA_FONTS=/usr/share/fonts/zh_CN/TrueType然后再 cd setup/Disk1 ; ./runInstaller 就可以了。真是简单得无于伦比,但是也有些不足之处,系统报警说找不到某些字体,不用管它们,继续安装。
安装界面出现之后,可以顺利显示中文,但是字体比较小,不知道如何改进。

安装抓图:

    1) Ora9i_Both_con.jpg,在 Linux 主机直接安装。


    2) Ora9i_Xman_net.jpg,读取 Font Server 数据。


    Ora9i_Xman_tlc.jpg,说明 tlc 字体比较粗糙。


    Ora9i_Xman_zys.jpg,说明 zys 字体始终完美。


    3) Ora9i_Vnc4_bad.jpg,Vnc 不认 Font Server。


    4) Ora9i_Vnc4_jre.jpg,Vnc 用JAVA_FONTS安装。


    本文已经原作者wwashington授权,感谢wwashington对IT168鼎力支持。

    原文链接:http://bbs.boletips.com/blbbs/viewthread.php?tid=175&extra=page%3D2
0
相关文章