Posted on 2011-05-20 09:24
寒武纪 阅读(7773)
评论(2) 编辑 收藏 所属分类:
心得
上周服务器的一个PHP软件不能访问,查看原因是CentOS的PCRE模块未用utf-8编码引起的,由是搜索了一些资料照着变更,没有效果。
当时和另一个朋友L共同尝试删除后重装,由于对Linux系统不熟悉,只会使用常规的命令进行一些皮毛的操作,就直接用yum remove进行删除,系统当时还提示是否remove掉相关联的700多个组件或模块。当时也没有多想就直接回车!结果------悲剧了,屏幕狂刷,我意识到pcre是基础模块,所有关联它的或是它关联都删除掉,系统将遭遇一个灾难式的破坏。等刷完屏幕的字符,最终发现:所有的bin目录下的命令全部不见了!!!天哪,连ls命令都没有,唯独剩下一个cd命令。幸运的是,当时运行在服务器的几个应用还能访问,比如说phpmyadmin。
而后想了想,尝试了各种方式去恢复,都没有办法,那么,唯一的办法就是尽量备份原有的数据和文件,重装系统进行环境的重新搭建。还好有其它方式,可以先把里面重要的文件都提取了出来。然后在幸存的phpmyadmin上赶紧进行mysql相关数据库的备份。(注:因为是个人的服务器,所以并没有像公司一样做好运营和备份计划)
第二天决定重装系统了,管理员用了3个小时才搭建起CentOS5.5和SSH远程服务端。轮到我和L需要用SSH进行远程的环境搭建。接下来的三天晚上,真是折腾又折腾。计划安装的几个主要软件是:Mysql、PHP、Apache、JDK、Tomcat、Ruby on Rails、Redmine、PHPMyAdmin等。
第一个晚上,灾难之前装在上面的上述各种软件版本都有点低,所以想干脆直接上最新的,而CentOS5.5的yum库是取不到这些最新的软件的。所以朋友 L 大量地采用了make install和rpm方式来安装,而CentOS本身集成的就只有Apache的版本满足。装了MySQL5.5+phpMyAdmin3.4,运行起来了却发现和MySQL5.5和redmine1.1.1有冲突,主要是RoR环境的Mysql驱动有问题,在网上能找到的都是从
http://www.tmtm.org/en/ruby/mysql/ 下载的0.2.6版本,这个版本我只试在MySQL5.0情况下正常连接。现在换成5.5,就无法运行了,为此我还特地把Ruby环境从1.8.6提高到1.8.7,同样装了redmine官网要求的各种Ruby工具和Rails组件,折腾无果!最后,我还把异常信息拿出来,给ruby-mysql的日本作者发了一个email,第二天作者回复我,原来ruby-mysql已经挂到GitHub去了,而且现在已经是3.0alpha状态了,但是他不确定能否工作在ruby1.8.6下。 最后感觉还是不行,切换回MySQL5.0,同样高版本的ruby-mysql驱动也无法连接低版本的MySQL。第一天以失败告终!
第二天晚上继续折腾,再不停地重新安装,这时才想起一个问题:应该退回到系统宕机前的所有软件版本状态,这样原先备份的数据才能正常恢复,不会带来额外的版本冲突麻烦。于是折腾到接近晚上12:00时发觉方向错了,无奈,和 L 打了个招呼,计划明天让管理员再重装一次系统,现在目前的系统又被我们搞乱了!
第三天。就着原来的思路,重装恢复到以前的版本,又用yum的原来方式装回原来的版本,这次进行顺利。用了二个小时,就把常用的软件恢复了,同时恢复了数据库。最后只剩下一个问题,redmine的密钥恢复后,仍然无法连接原来的用户密码,我想可能得去查阅redmine的用户管理模块,看看它究竟是怎么生成密码和检验登录的,有趣的事是发现网友找到另一个方法,就是直接在redmine下建ruby脚本,调用ActiveReord的User.save(),存一个自己的新密码,不晓得可不可行,找个时间做个实验看看。
回头一想。其实规划、整理、理清服务器的管理工作,比精通Linux系统、各种软解决技术更为重要!
刚进场的时候戏就落幕