免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 746 | 回复: 0
打印 上一主题 下一主题

第一篇—最近项目中的几个问题记录 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-07-02 17:10 |只看该作者 |倒序浏览

    工作两年多了,职位变更了几次,不过始终没有离开Linux/Unix,Unix就接触过AIX,用的不多,Linux却是一直在摸,由于非科班出身没有进行过系统的学习,都是干到哪学到哪,一知半解的现在很多基础都不知道,很想系统的总结和学习一下。
    从前些天的一个项目开始吧,应用实施,redflag5.0+Tomcat5,总的来说有四个问题吧
1.网站乱码,修改字符集
2.时间错误,同步系统时间
3.分区不可写,重新挂载
4.验证码图片显示有误,增加awt引用
    分别说吧
    1.乱码,之前经常碰到的问题,数据库尤其严重,不过此次问题不大,记得好像是网站上非数据库读出来的文字全是???,开发环境没问题,肯定跟生产环境的环境变量有关,locale了一下,果然集成商在作系统时用的是英文,于是在启动应用服务器的脚本前加入
export LANG=ZH_CN.GB18030;export LC_ALL=zh_CN.GB18030
重新启动OK了。更好的方法:直接把系统修改为中文的,当时是在图形界面操作的,提示是否同步i18n
关于i18n:google了一下,发现实际上是修改的/etc/sysconfig/i18n文件,出于好奇首先查了下命名,原来i18n的意思是internationalization,国际化,这个单词的长度是20,然后取其首尾字母,中间省略的字母刚好18个。i18n修改后的结果为
LANG="zh_CN.GB18030"
LANGUAGE="zh_CN.GB18030:zh_CN.GB2312:zh_CN" SUPPORTED="zh_CN.GB18030:zh_CN:zh:en_US.UTF-8:en_US:en"
SYSFONT="lat0-sun16"
关于locale:以前都是修改两个,从来没想过LANG和LC_ALL的关系,就知道LC_ALL是所有LC_*的集合,看了
http://ayk.blogbus.com/logs/3421609.html
的文章,明白了原来LANG是一个默认值,即在LC_*和LC_ALL没有设定的情况下将使用LANG所设定的值,看来只修改LC_ALL就可以了。
    2.时间错误,系统在重新启动后发现时间比实际时间晚了8个小时,应该是集成商在装完系统后发现时间不对直接在系统上改的,可重启后就错了,因为误差整8个小时,首先想到是时区的问题,检查了一下/etc/sysconfig/clock发现没问题,ZONE="Asia/Shanghai",上网查了下相关的东西,认识到了可能是UTC(Universal Time Coordinated,世界协调时间)的问题,于是查看系统硬件时间,没错,UTC,false,晕,本该正确的啊,继续google,发现了hwclock,执行hwclock --hctosys,报错select() to /dev/rtc to wait for clock tick timed out,加上--directisa参数,没问题了,于是把它写在了/etc/profile中,以前的习惯,对系统认识不清啊,发现没用,加入到/etc/rc.d/rc.locale中解决关于UTC:Linux支持UTC时间,在/etc/sysconfig/clock这个文件中,设定了系统是否使用UTC,这个是针对计算机自己的时间,硬件时间hardclock所说的,硬件时间也就是存在BIOS里那个时间,关机也不会丢失。计算机启动时,就要读取硬件时间。如果硬件时间设定为格林威治(GMT)时间,那么系统的UTC就要设定为yes/true,就会根据硬件时间来计算出来本地的UTC时间;反之,如果硬件时间设定为本地时间,那么系统的UTC就要设定为no/false才会合本地时间相同关于hwclock:该命令是查看及同步硬件时间的,具体参数使用--help即可查看,其实系统在引导启动时应该执行过该命令,在/etc/rc.d/rc.sysinit文件中搜索hwclock即可,这部分代码比较简单
CLOCKDEF="" CLOCKFLAGS="$CLOCKFLAGS --hctosys"
case "$UTC" in
  yes|true) CLOCKFLAGS="$CLOCKFLAGS --utc"
            CLOCKDEF="$CLOCKDEF (utc)" ;;
  no|false) CLOCKFLAGS="$CLOCKFLAGS --localtime"
            CLOCKDEF="$CLOCKDEF (localtime)" ;;
esac
case "$ARC" in
  yes|true) CLOCKFLAGS="$CLOCKFLAGS --arc"
            CLOCKDEF="$CLOCKDEF (arc)" ;;
esac
case "$SRM" in
  yes|true) CLOCKFLAGS="$CLOCKFLAGS --srm"
  CLOCKDEF="$CLOCKDEF (srm)" ;;
esac
/sbin/hwclock $CLOCKFLAGS
只是某些机器的BIOS处理方式和Linux的rtc内核模块之间出现了问题,所以会出现这部分代码实际并未执行成功,即上面所看到的select() to /dev/rtc to wait for clock tick timed out错误,换用其它内核rtc模块在我的实验机上没通过,就不写了,总之加上--directisa参数一般就可以了,不过从结果来看,默认是使用UTC的
    3.其实是上面这个问题中间穿插的一段,在我发现/etc/rc.d/rc.sysinit这个文件中的内容后,手工把directisa参数加了上去,然后保存,重启测试,系统居然起不来了,具体错误记不得了,大概意思就是提示/etc/rc.d/rc.sysinit 文件中的第多少多少行有错,拿系统盘rescue进入却找不到那块磁盘(具体问题比较复杂,不说了),再试一次,发现在报完错误后等些时间居然进到了命令行下,只不过系统是以read only的方式挂载的,没法修改rc.sysinit,上网搜索不果,给红旗技术支持打电话,被告知
mount -o remount rw /
重新挂载一下即可。前两天买了本书《linux系统管理技术手册》,发现第二章就有这个命令,惭愧ing,所以决定还是先基础一下。。
    4,这个问题就比较简单了,寻找及安装文件包整的太多了,安装完awt的包(好像是libXp-1.0.0-8.i386.rpm,RH4和5好像装的还不一样)后
vi catalina.sh,在启动参数中增加-Djava.awt.headless=true,当时不确定在哪加,就干脆整个替换的 :%s/-Djava.endorsed.dirs/-Djava.awt.headless=true -Djava.endorsed.dirs/g


本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u2/72669/showart_1071474.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP