0. 动机

如果你是一个没什么事情的人,估计这篇文章对你来说一点作用都没,甚至觉得有点无病呻吟。
如果你是个忽然间陷入忙碌的工作中的人,你可能还没意识到工作和生活可以有一套方法去管理。恭喜你,这篇文章目标就是写给你的。当然这里的方案都是我在使用的方案,很多时候也许对你来说,还存在着更好的方案。(举个例子,我用联通,也许你用移动,那么恭喜你你可以用飞信。飞信是开放API的你知道吗?这种优势,写个程序,也许可以让你的烤面包机给你发SMS呢。)
如果你和我一样是一个被事情缠住根本无法脱身而不得不做,而且和我一样是一个崇尚高效鄙夷浪费时间的人,看过这篇文章之后,一定会产生共鸣吧。我希望你能够在下面留言,告诉我你的方法,我们共同进步。

1. 圣经

s2754540 《时间管理——给系统管理员》,Thomas A. Limoncelli
这本书是圣经。
记得第一次读这本书纯属比较懒的一种动机。2008发生了很多事情,在这一年里,我在2月、3月、4月、5月、6月、7月、8月、9月都回家一次。在回家的火车里,读一本书俨然是routine。记得以前拿着Java编程思想啃,也学习过打印出书的某一章读完这样破坏环境的事情。其实拿起这本书的时候我的角色是一个新系统管理员想学点东西,放下这本书的时候是一个激动的我寻找到了知音一晚上没睡着觉满脑子想架一套个人信息管理系统。
可惜豆瓣没有六颗星。

2. 信息中心——E-mail

别告诉我看到这个题目你很惊讶。我也知道很多人一个月都不一定打开一次Email。记得我入职MSRA Intern的第一天,被HR MM(97分!!)领着去见我的Mentor,海东见到我第一件事情是领我到计算机旁边,然后让我先建好工作环境,说,这是Outlook,用你的域帐户登陆。Outlook是你的最重要的工作工具,重于Visual Studio。其实那个时候我已经很重视了Email的作用。

身份:
我知道你是个忙人,你一定有很多种身份吧~你也许喜欢注册很多很NB的邮箱,但是注册了就忘记了。其实,Gmail可以管理这样的多重身份,最终效果就是你只需要在一个Gmail里检查邮件就可以,不需要一次性登录到所有的邮箱。那样真的很麻烦,估计这也是某些人远离Email的原因之一。

[singlepic=18227,600,413]

解决多重身份问题,使用Gmail的Accounts概念。原理其实很简单,大家都知道Email发件人其实是可以伪造的吧。Gmail其实是在你授权之下伪造发件人地址,使用你指定的发件人。

Continue reading

本人曾经号称Linux+Apache+MySQL+PHP环境的搭建是闭着眼睛也能做的事情。历史上也的确曾经无数次闭着眼睛半小时就能搞定从下载到编译到最终配置成生产环境的服务器整个过程。然而昨天遇到的一切,却实实在在让我睁开眼睛集中精力总计用了8个小时才部署起一套Linux+Apache+MySQL+PHP+Ruby on Rails。
回忆总是痛苦的,不过为了大家不再痛苦重蹈覆辙,我还是愿意重走长征路,分析一下我犯过的错误吧。

1. Are we ready for x64?

我们实验室的德国学弟向来使用Linux。当年他到我们这里来的时候,作为网管的我需要给他安装一套英文版操作系统。我手上有Windows Server Computing Cluster Edition,正好是英文版,而且是正版,可惜是64位系统。在我询问他的过程中,他问我觉得64位版本的Windows怎么样。我回答”Only more troubles.”,他笑,告诉我看来Windows并没有准备好,还是Linux的64位支持比较好吧。其实我还是持某种怀疑态度。
我觉得,作为生产环境的网络管理员,使用64位版本操作系统总是要三思的事情。因为有太多太多兼容性问题需要考虑。在这方面,好像其实Windows做的反而更好一些,因为.NET编译的exe程序拿到64位版本Windows上不需要重新编译直接就可以原生64位地运行。64位Windows中还包含一个32位虚拟机,可以近乎完美地模拟32位环境,提供向下支持。
Linux就不是这么幸运了。很多库都没有考虑过这些问题,这也是导致这次部署麻烦多多的根源。

2. 64位Fedora 9和32位Fedora 10

今天用的机器是一台IBM x3200服务器。本来上面装好Fedora 9的64位版本。因为很久没登陆上去,我并不知道这是一台跑着64位版本的系统。
于是上来安装Apache,似乎一切顺利。下载最新版MySQL,版本5.1的二进制版本并安装,也没有遇到什么问题。
然后安装PHP,配置make使用以下命令:
[code=’c#’]
‘./configure’
‘–with-mysql=/usr/local/mysql’
‘–with-apxs2=/usr/local/apache/bin/apxs’
‘–with-zlib’
‘–with-bz2’
‘–with-gd’
‘–with-png-dir=/usr/lib’
‘–with-zip-dir=/usr/lib’
‘–enable-track-vars’
‘–enable-exif’
‘–enable-mbstring’
[/code]
然后出现错误:
[code=’c#’]
checking for MSSQL support via FreeTDS… no
checking for MySQL support… yes
checking for specified location of the MySQL UNIX socket…
no
checking for MySQL UNIX socket location… no
checking for mysql_close in -lmysqlclient… no
checking for mysql_error in -lmysqlclient… no
configure: error: mysql configure failed. Please check
config.log for more information.
[/code]

3. 错怪MySQL 5.1

接下来我犯下了第一个错误:让新闻影响了经验。我受到影响的新闻是:MySQL创始人力劝用户暂缓部署MySQL 5.1,鉴于我不下10次地用这个配置命令装过LAMP环境,我第一个矛头指向了MySQL 5.1。
然后我在Google中发现,这个问题被当作Bug在MySQL的项目管理和PHP的项目管理系统中多次出现:

我看到几种所谓解决方案:

  • 主张将“–with-mysql=/user/local/mysql”改成“–with-mysql-dir=/user/local/mysql”
  • 主张将Makefile里面的-L/usr/lib/mysql改为-L/usr/lib64/mysql

我犯的第二个错误是过于自信,其实现在看起来有很多地方提升我,这个问题是由64位的Linux导致的,但是盲目的我当时选择了视而不见。

4. Ruby on Rails

为了避免将来更多的麻烦,我选择了最复杂的方式:换64位Fedora到32位Fedora 10。接下来的过程很顺利。
全部安装好之后我决定把原来实验室的Redmine也搬进来,于是需要集成Passenger到Apache中。
使用yum和gem安装Ruby on Rails的过程只需要用愉悦来形容,很顺利。
在gem装好Passenger之后,执行:
[code=’c#’]
passenger-install-apache2-module
[/code]
的时候出现一个小细节,Passenger安装脚本发现Apache在/etc/sbin/httpd下,其实我安装在/usr/local/apache下。这时候需要用几个环境变量来纠正一下。
[code=’c#’]
export APU_CONFIG=/usr/local/apache/bin/apu-1-config
export APR_CONFIG=/usr/local/apache/bin/apr-1-config
[/code]

[singlepic=18212,640,610]

Redmine.NET是我最近一段时间的心血。在之前我曾经写过几篇Redmine的博文,Redmine我也一直在用。现在既然DreamHost支持Ruby,何不建一个Redmine给自己管理项目呢?
一开始是这么想的,但是发现Redmine.NET域名尚未注册我立刻心动了。那段时间Godaddy被GFW掉,我冒着一定的风险用PVN连上Godaddy注册到了这个域名。真的是很难得。
做到现在也快一个月了吧,现在把自己个人SVN里面的东西全都搬进去了,感觉超方便。尤其是事情多的时候,在Issues里面自己给自己提一下,总归不会忘记的。
我给Redmine.NET的定位是“免费的项目管理平台”,目标是像SourceForge一样给开源项目提供家。不过就我自己的力量肯定是不行的,暂且先做我的项目管理系统吧。

有时候,更新Redmine之后,打开页面,会发现CSS不起作用,整个站点属于“CSS Naked”状态。
遇到过好几次这样的情况,重启Redmine也不起作用。
顺便说一下,要重启Redmine,只需要在redmine/tmp下建立一个名为“restart.txt”的空文件,然后访问任意页面即可。重启Redmine一般会reload文件夹,适用于添加了新的theme等情况。
其实,直接访问CSS的地址会发现CSS实际上是404找不到状态,原因很简单,Apache Rewrite。解决方案也很简单,删除redmine根目录下.htaccess文件,让它重新生成即可。

RedMine是个太强大的东西了…
在我的SA实践中,采用了Microsoft Active Directory来管理计算机和用户信息。
RedMine一开始采用的是自行认证,有时候想不起应该用哪个密码来登录RedMine。
今天在RedMine后台发现可以使用LDAP登录方式,立刻改过来~
小小的挫折之后,世界变得简单了。

在管理员的管理->配置->认证里,右下角LDAP认证,新建认证模式,输入配置如下:

[code=’css’]
Name = hpcc.tongji.edu.cn
Host = hpcc.tongji.edu.cn
Port = 389
LDAPS = no
Account = HPCC\lizheng
Password = Base DN = CN=Users,DC=hpcc,DC=tongji,DC=edu,DC=cn
On-the-fly user creation = yes

Attributes
Login = sAMAccountName
Firstname = givenName
Lastname = sN
Email = mail
[/code]

如图:

[singlepic=15539]

特别注意:

  • Attributes属性段的东西,尤其是登录名,必须一模一样,包括大小写。建议勾选On-the-fly user creation(即时用户生成)。
  • 域账号和密码虽然没写必须,但是也是需要的。
  • Base DN与Host(主机)有关,后面的DC一定是一级一级写到LTD。

前段时间用的RedMine,Ruby on Rails写的,通过命令行ruby命令启动,不太方便。因为当系统自动更新重启之后,所有用户就成了注销状态,用户态下执行的命令行进程自然也就没了。
RedMine现在在我们组俨然成了最重要的工具,开机不能自动启动可不行。

Ruby提供一个安装Ruby程序为服务的包:mongrel_service。安装其实很简单,只要命令行下运行gem:

[code=’css’]gem install mongrel_service[/code]

过程中安装一些必须的其他包。

然后将RedMine使用mongrel_service安装成Windows服务:

[code=’css’]mongrel_rails service::install -N RedMine -c D:\WebRoot -p 80 –e production[/code]

这里,我指定服务名为RedMine,我的RedMine在D:\WebRoot,你的要修改,注意指向truck的根目录。监听80端口。

然后修改启动方式为自动启动,并添加MySQL服务为其依赖服务(如果你的MySQL服务器不是本机就不用麻烦了):

[code=’css’]sc config RedMine start=auto depend=MySQL[/code]

注意,执行sc config系列指令,服务必须是未启动的才行,否则会出错。

将来如果想去掉这个服务,只要执行:

[code=’css’]mongrel_rails service::remove -N RedMine[/code]