Tag Archives: 规范化

怒了,mysql真是太过分了,竟然改开发接口

今天编译 Courier-authlib 0.62.2 版本,编译出来都是残废,不支持 MySQL 查询。后来看了 config.log,发现其需要的 mysql_connect 函数在 libmysqlclient 库中找不到。nm 了一下那个库,还真的是没有。 后来到 http://dev.mysql.com 翻文档,说这个函数改成 mysql_real_connect 了。MySQL 真是太过分了,就不知道留个接口给老的代码吗? 这件事也教育我们:没事不要自己编译,浪费时间和精力。

Posted in 默认分类 | Tagged , , | Leave a comment

敢于自荐的,不一定是毛遂

前几天chaobill问我关于Linux平台上提供技术服务的价格。我心里也没谱啊,于是在debian网站上找了个挂牌顾问,问了一下,对方回答说45$安装一个他自己开发的web界面管理软件,把系统主要服务都管起来就好了。我观察了几天,发现他们自己主要是卖虚拟主机服务的,对单独的技术服务似乎并不是很关心,于是今天打算自己先试试。apt安装之后,提示一句说dpkg的postinst脚本还不够,还得手工执行该软件本身提供的脚本。执行之后,我还是没在/var/www看到关于这个软件的完整内容。手工做符号链接、chown -R多次之后,总算运行起来了,但还是磕磕绊绊,经常提示没有权限执行mkdir之类的;软件的运行流程也不是很清晰,我觉得我还得再看看其不知在哪里放着的文档。 我原以为这个软件叫dtc,包也该叫dtc,后来发现dtc provided by dtc-postfix-courier;但是,安装指南说让安装dtc-toaster。也就是说,刚才apt安装的是错误的软件包。这个软件本身的质量,目前还没看出来;但是我觉得其打包工作做的还是很差的,虽然作者亲自操刀打包工作,但却给软件包取了容易引起误解的名字,亏作者在网站上还标榜自己是一个Debian爱好者呢。看来挂牌顾问也不都是高手啊!

Posted in 默认分类 | Tagged , | 2 Comments

刚才和Dieken讨论了关于二进制/源代码发行版方面的争论

本来在讨论企业环境下的全规范化管理,然后聊到开发环境的规范化管理,具体又谈了svn的webdav、file、svnserve的身份验证功能,然后聊到了关于各个需要身份验证的软件是否有可扩展的身份验证机制、是否需要自己写验证接口程序等,最终谈到二进制发行版和源代码发行版的问题。我们的态度是: 源代码发行版对于个人使用来说具有最高的灵活性,但对于规范化管理是极为不利的,如果将这样的发行版用于企业环境,对sysadmin的要求会有进一步的提高。 聊天记录摘录如下: dieken 说: 以前版上多次争论过源码发行版和二进制发行版 我觉得从可维护性上,源码发行版很不利的,只有大家统一用一个二进制版本,出了问题才好查 所以能用标配的坚决不自己造轮子 七月 说: 关键是在实施过程中如果有过多的可控制余地,则这个可控制的配置选项本身也将成为构建的目标的一部分 但是往往大家并不把它这么看 dieken 说: 没大明白你这句话 怎么把选项本身作为构建目标的一部分? 把编译选项放入包信息里? 七月 说: gentoo的USE参数好像可以指定带某些库、不带某些库吧?类似于./configure的–with和–without这类东西的 dieken 说: 怎么作为构建目标的一部分? 七月 说: 事实上这些参数也是目标的组成部分 它的控制粒度是configure参数,但打包的时候并没有在包名上标明这些参数。从而造成信息的丢失 dieken 说: 哦,明白你的意思了,你是说出了问题时必须能容易精确的得到当初的构建参数吧 这样能容易的复制出出问题的环境,进行调试 cmmi 有一个级别是“可重复”,我对这一点印象特别深刻 七月 说: 是的。但问题是人们往往不把这些东西当做目标的一部分。如果你亲自下载源代码编译,可能印象还会更深刻一点;gentoo全自动化编译却忽视了这个 dieken 说: 这一点 gcc … Continue reading

Posted in 默认分类 | Tagged , , | 3 Comments

请随手删除无用的文件和设置

今天我们部门把一个数据库迁移到另外一台服务器了,但我仍发现原数据库有很多写入操作,干扰mysql master-slave工作,找了很多遍,还是没找到问题所在。后来直接把旧的库删除了,问题马上就暴露出来了。 回想到前年在aka公司,公司的服务器上有十几个ipip隧道,也不知道指向哪里的;服务器上还有几十个服务的配置文件,也不知道还有用没有。单单为了搞清楚那台服务器是干什么的,就花了我两三天的时间。看来这行业手脚不干净的人还是挺多的。 最后喊一句口号:请随手删除无用的文件和设置,践行规范化系统管理。

Posted in 默认分类 | Tagged , , | 2 Comments

不规范的山寨安装流程会带来无穷无尽的麻烦

窝窝终于要扩展到论坛服务器上了。窝窝服务器上的几个目录也用NFS导出到论坛服务器上。但是UID不同步导致的问题越来越严重,经常有上传文件时无法写入目录的问题发生。 各服务器的www服务器都以www用户身份运行。这个用户名就够山寨的了。不过考虑到历史原因,暂且不改。最令人发指的是UID竟然不一样,有些服务器上是500,有些服务器上是501(500是squid用户),一看就是自己编译apache时手工创建的用户,且各服务器上的软件安装顺序不一样,自然创建用户的顺序也就不一样,造成UID不同步;比较诡异的是竟然有48号www用户。难道是apache用户改名而成的? 唉,夜里又得折腾一次,把UID都改成一样的,然后对海量文件执行chown。麻烦!

Posted in 默认分类 | Tagged , | 2 Comments

忘记看mount –bind导致数据库丢失一例

Ubuntu 8.04 Server 原来MySQL的datadir是/var/lib/mysql/目录。因为/var分区比较小,我在一个LVM卷里创建了和库同名的两个目录,并用mount –bind把它绑在原来的数据目录的库目录上: mount –bind LVM/mysql/db1 /var/lib/mysql/db1 mount –bind LVM/mysql/db2 /var/lib/mysql/db2 某一天,/var/lib/mysql/下保存的InnoDB日志占满了/var分区的所有空间。无奈,我只好把数据库目录整个挪到LVM去。因为设置mount –bind的时间太久,我都忘记这个事了。于是我先删除了LVM/mysql目录(因为这个目录看起来比较旧)然后把/var/lib/mysql目录挪过来。于是,丢失了所有的数据……

Posted in 默认分类 | Tagged , , | Leave a comment

感受AppArmor

ubuntu 8.04 server 今天 /var/ 分区装满了,于是把 /var/lib/mysql/ 目录给挪到别处,结果重启动 MySQL 失败。日志显示 mysqld 会尝试创建一个 hostname.lower-test 文件,以确定对 datadir 目录有写权限 我 su 到 mysql 用户,进目录,发现可以创建文件 于是想到可能是安全框架的问题。找了一下 /etc/apparmor.d/usr.sbin.mysqld 文件里写着/usr/sbin/mysqld可以访问的目录和权限。把新的目录加进去,就正常了

Posted in 默认分类 | Tagged , , | Leave a comment

再论Redhat的不规范性——网络配置文件部分

今天bigfatcat问我 /etc/sysconfig/network-scripts/ifcfg-eth0 /etc/sysconfig/networking/profiles/default/ifcfg-eth0 /etc/sysconfig/networking/devices/ifcfg-eth0 这三个文件,到底哪个是网络参数的配置文件。这可把我问住了。于是看了一下 /etc/init.d/network 脚本,发现是第一个。那另外两个是干什么的呢? 过了一会,还是bigfatcat,发消息说他们同事在ifcfg-lo:3文件里写下了如此参数: DEVICE=lo:2 IPADDR=58.68.203.4 文件名,和该文件内的参数,都指示同一个意思,结果就造成了语义上的混乱。这个是不符合Unix哲学的正交规则的 由此看来,Redhat实在是太不规范了。希望大家以后不要用它。

Posted in 默认分类 | Tagged , , | 2 Comments

Linux磁盘容量问题,兼再谈规范化系统管理

bigfatcat(自称:一个伪装SYSOP的猫)今天问我“请问怎么看linux下硬盘分区的空闲空间?怀疑满了”。于是我教了他df和du命令。 没想到他发现是日志占满磁盘之后,竟然直接 rm /var/log/httpd/*access* 删除了日志文件。我提醒他说,正在打开的日志不会被删除,还会继续增长,将来会再次占满磁盘,而du根本发现不了那个文件。他却置若罔闻,说“反正你肯定知道我掉进哪一个坑里了”…… 由此问题,我再来谈一下规范化系统管理。 绝大部分Linux发行版,都有各自的风格,都会把所属的软件按照自己的风格定制,同时会安装各种周边辅助设施,包括日志切断和轮换。而自己编译的软件,则往往考虑不到这方面的问题,软件的安装文档也往往不强调这个问题。初级系统管理员在发现故障之后,会想办法排除之,却很少有考虑防止再次出现问题的。所以,日志装满磁盘的问题就一再出现。 我提倡,尽量使用系统自带的软件,因为他们不但经过产品化的质量审查,且带有各种周边辅助设施,更易于使用。另外,系统自带软件的编译安装参数比较固定,更便于交接工作而不需要在交接时特别强调配置文件、启动停止命令的位置,因为它们就在其该在的位置;在升级时也会更方便。 最后说一句:如果你对本文有反对意见,说明你还too young, too simple, sometimes naive,还不适合当系统管理员

Posted in 默认分类 | Tagged , | 7 Comments

规范化系统管理势在必行

今天郁闷了,遇到一群相同用途的机器,软件配置、文件位置竟然都不统一 我群发了一下配置文件,然后重启动服务。结果挂了一半 而且这已经不是第一次发生类似的事故了 规范化的系统管理真是势在必行啊!

Posted in 默认分类 | Tagged , | Leave a comment