由于一直在生产环境中使用 FreeBSD 操作系统,平时经常会在虚拟机上装 N 多个系统用于测试。有些测试需要从干净的环境开始,所以经常建重复的虚拟机,让人无聊无比。如何快速搭建测试所需环境,成为了这种无聊事情中唯一有乐趣的事情。

一般来说,AMP 环境是众多测试项目环境的基础。譬如邮件系统、远程监控管理等众多应用都会用到 ApacheMySQL 等组件。因此,快速搭建 AMP 环境是那些有乐趣的事情中的重点。我们崇尚 BT 精神,追求搭建 AMP 环境的速度。公司里也有个文档,每次搭建一个就掐秒表,搭完了记录一下,看谁能保持最快纪录。

我初学 FreeBSD,对这样的竞赛不敢留有想法。要知道某些列车并不是我们这些泛泛之辈可以赶上的。为了让自己的动作也快一些,再快一些,我也做了这样一个笔记。

首先是一些时刻准备着的包:

www# ls
APC-3.0.13.tgz                                  jpeg-6b.diff.gz
Authen-SASL-2.10.tar.gz                         jpegsr6.zip
GD-2.35.tar.gz                                  jpegsrc.v6b.tar.gz
libgcrypt-1.2.4.tar.gz                          Storable-2.16.tar.gz
libiconv-1.11.tar.gz                            Unix-Syslog-0.100.tar.gz
libpng-1.2.12.tar.bz2                           ZendOptimizer-3.2.6-freebsd6.0-i386.tar.gz
libxml2-2.6.26.tar.bz2                          m4-1.4.9.tar.gz
autoconf-2.60.tar.bz2                           maildrop-2.0.4.tar.bz2
automake-1.9.6.tar.bz2                          make-3.81.tar.bz2
mhash-0.9.7.tar.bz2                             mm-1.4.2.tar.bz2
cyrus-sasl-2.1.22.tar.gz                        mysql-5.0.37.tar.gz
mysql_configure.sh                              pcre-6.7.tar.bz2
freetds-stable.tgz                              pcre-7.0.tar.bz2
freetype-2.1.9.tar.bz2                          perl-5.8.8.tar.bz2
freetype-2.3.2.tar.gz                           php-5.2.3.tar.bz2
freeze-2.5.tar.gz                               php_configure.sh
gd-2.0.34.tar.bz2                               gettext-0.16.tar.gz
pure-ftpd-1.0.21.tar.gz                         gmp-4.2.1.tar.bz2
wget-1.9.tar.gz                                 gzip-1.3.5.tar.bz2
zlib-1.2.3.tar.bz2                              httpd_configure.sh
其中 php_configure.sh 是 PHP 编译脚本,mysql_configure.sh 是 MySQL 编译脚本,httpd_configure.sh 是 Apache 编译脚本,其内容如下:

www# more php_configure.sh
#!/bin/sh
./configure --prefix=/usr/local/php --disable-cgi --sysconfdir=/etc --with-apxs2=/usr/local/apache/bin/apxs --enable-discard-path --
with-config-file-path=/etc/apache --enable-hash --with-openssl --with-mhash --enable-bcmath --with-bz2 --enable-calendar --enable-ct
ype --enable-dbase --enable-ftp --with-iconv --enable-exif --with-gd --enable-gd-native-ttf --with-zlib=/usr --with-ttf --with-freet
ype-dir=/usr --with-png --with-gmp --enable-mbstring --enable-mbregex --with-pcre-regex=/usr --with-mysql=/usr/local/mysql --with-my
sql-sock=/tmp/mysql.sock --enable-pdo --with-pdo-mysql=/usr/local/mysql --with-mssql=/usr/local/freetds --with-gettext=shared,/usr -
-with-expat-dir=/usr --with-xml --enable-wddx --with-mm=/usr --enable-sockets --disable-debug --disable-ipv6 --enable-memory-limit -
-enable-inline-optimization --enable-zend-multibyte --with-tsrm-pthreads --with-jpeg-dir=/usr --enable-zip

# LoadModule php5_module libexec/libphp5.so
# AddModule mod_php5.c               
# AddType application/x-httpd-php .php .phtml
www# more mysql_configure.sh
#!/bin/sh
# mysql configure
./configure --prefix=/usr/local/mysql --enable-assembler \
            --disable-largefile --with-charset=gbk \
            --with-pthread --with-zlib-dir=/usr \
            --without-debug --with-openssl=/usr --without-docs \
            --without-man
www# more httpd_configure.sh
./configure --prefix=/usr/local/apache --sysconfdir=/etc/apache --enable-modules=all --enable-mods-shared=all --enable-cache --enabl
e-mime-magic --enable-mem-cache --enable-ssl --enable-cgi --enable-rewrite --enable-isapi --enable-so
下面的过程已经比较精简了,就不再注释:

www# tar -xzvf wget-1.9.tar.gz
www# cd wget-1.9
www# ./configure
www# make
www# make install

www# file /usr/local/bin/wget
/usr/local/bin/wget: ELF 32-bit LSB executable, Intel 80386, version 1 (FreeBSD), dynamically linked (uses shared libs), not stripped

www# /usr/local/bin/wget http://apache.mirror.phpchina.com/httpd/httpd-2.2.8.tar.gz
www# tar -xzvf httpd-2.2.8.tar.gz

www# /usr/local/bin/wget http://192.168.0.200/mysql-5.0.45.tar.gz
www# tar -xzvf mysql-5.0.45.tar.gz

www# /usr/local/bin/wget http://cn.php.net/get/php-5.2.5.tar.gz/from/this/mirror
www# tar xzvf php-5.2.5.tar.gz

www# cd ..
www# tar -xzvf zlib-1.2.3.tar.bz2
www# cd zlib-1.2.3
www# ./configure -s
www# make
www# make install

www# cd ../mysql-5.0.45
www# sh ../mysql_configure.sh
www# make
www# make install

www# cd ../httpd-2.2.8
www# sh ../httpd_configure.sh
www# make
www# make install

www# cd ..
www# tar -xzvf freetds-stable.tgz
www# cd freetds-0.64/
www# ./configure --prefix=/usr/local/freetds
www# make
www# make install

www# cd ..
www# tar -xzvf libiconv-1.11.tar.gz
www# cd libiconv-1.11
www# ./configure
www# make
www# make install

www# cd ..

www# file /usr/local/apache/bin/apxs
/usr/local/apache/bin/apxs: a /replace/with/path/to/perl/inte script text executable

www# tar -xzvf pcre-6.7.tar.bz2
www# cd pcre-6.7
www# ./configure
www# make
www# make install

www# cd ..
www# tar -xzvf perl-5.8.8.tar.bz2
www# cd perl-5.8.8
www# rm -f config.sh Policy.sh
www# sh Configure -de
www# make
www# make test
www# make install

www# file /usr/bin/perl
/usr/bin/perl: ELF 32-bit LSB executable, Intel 80386, version 1 (FreeBSD), dynamically linked (uses shared libs), not stripped

www# vi /usr/local/apache/bin/apxs

#!/replace/with/path/to/perl/interpreter -w 换成

#!/usr/bin/perl -w www# cd ..
www# tar -xzvf libxml2-2.6.26.tar.bz2
www# cd libxml2-2.6.26
www# ./configure
www# make
www# make install

www# cd ..
www# tar -xzvf gzip-1.3.5.tar.bz2
www# cd gzip-1.3.5
www# ./configure
www# make
www# make install

www# cd ..
www# tar xzvf jpegsrc.v6b.tar.gz
www# gzip -d jpeg-6b.diff.gz
www# cd jpeg-6b
www# ./configure --prefix=/usr/local --enable-shared
www# make
www# make install

www# cd ..
www# tar -xzvf libpng-1.2.12.tar.bz2
www# cd libpng-1.2.12
www# ./configure
www# make
www# make check
www# make install

www# cd ..
www# tar -xzvf make-3.81.tar.bz2
www# cd make-3.81
www# ./configure
www# make
www# make check
www# make install

www# tar -xzvf freetype-2.1.9.tar.gz
www# cd freetype-2.1.9
www# /usr/local/bin/make
www# /usr/local/bin/make (没错,的确是两遍)
www# /usr/local/bin/make install

www# cd ..
www# tar -xzvf gettext-0.16.tar.gz
www# cd gettext-0.16
www# ./configure
www# make
www# make install

www# cd ..
www# tar -xzvf gmp-4.2.1.tar.bz2
www# cd gmp-4.2.1
www# ./configure
www# make
www# make check
www# make install

www# cd ..
www# tar -xzvf mhash-0.9.7.tar.bz2
www# cd mhash-0.9.7
www# ./configure
www# make
www# make install

www# cd ..
www# tar -xzvf mm-1.4.2.tar.bz2
www# cd mm-1.4.2
www# ./configure
www# make
www# make test
www# make install

www# cd ../php-5.2.5
www# sh ../php_configure.sh
www# make
www# make test
www# make install
未完待续。

前几天在 CB 看到一则消息。说自从 Foxmail 推出邮箱服务 Foxmail.com 后,一直没有开放注册方式。4 月 18 日起,可以通过邀请注册 Foxmail 了。与此同时,除了邀请注册外,Foxmail 还开放了 Foxmail 客户端申请(其实这个早就有了)和手机短信注册。这些注册方式可以参阅这里

有评论指出,Foxmail 此举乃是当年 GmailWindows Live 用滥的方法。腾 X 公司一直习惯于模仿其他公司的操作方式,对于 QQ 新版本、新上线内测的网游等全都采用邀请注册加会员特权方式。陈腔滥调,让人不禁反胃。

我用几百年前通过 Foxmail 客户端注册的帐号登录了一下,在登录后的首页看到这样一段文字:

- 阅读剩余部分 -

微软的产品总是非常的神奇,能让你在不经意间发现一些意料之外的事情。我一直觉得使用微软的产品有两个好处,除了它的通用性,另一点就是可以丰富我们的想象力。可见这个公司存在的必然性,除了平时给我们带来一些跨行业的新闻(即娱乐行业新闻),还有助于我们的自身建设。

今天就为了“将 expression 转换为数据类型 int 时发生算术溢出错误”这个问题折腾了一会。

下午的时候,发现我所维护的一个系统中数据存在异常,我直接联想到 SQL 代理可能又挂掉了。连上企业管理器发现它好好的活着,只是几个调度中的某几个存在异常,上次状态是失败:

查看了作业历史记录,看到日志如下:

- 阅读剩余部分 -

四月初的某一天,阿里旺旺突然向我弹了一个小窗。说阿里巴巴将在 4 月 11 日发布战略级新产品,诚邀阿里会员体验,名额仅限 6188 个。那几天 lucky 刚好给我看过还没对外公布的淘宝商城,我以为这个战略级新产品大概与淘宝商城有关。于是满不在乎地点击了“报名参加”,然后就几乎把这事情给忘记了。

前几天身体非常不好,发冷发热的。7 日下午 14 时左右,阿里巴巴往我手机上发了一条讯息。可怜的我那时还在睡觉,醒来之后看到讯息,发现它是长这样的:

这讯息终于勾起了我的回忆。我向 FT 证实这个消息,他说对此不知情。我猜想也有可能是公司内部保密制度所约束吧。

11 日那天,我又收到阿里的邮件。告诉我阿里战略级新产品已经隆重登场,让我去“免费体验、畅快到底”:

- 阅读剩余部分 -

由于垃圾评论的困扰,前几天我开启了评论审核,给诸位带去种种不便,我谨向各位表示歉意。在 70 同学的帮助下,我已将博客程序升级到 1.2.0 release,并使用了 70 同学开发的反垃圾评论插件。目前博客正在该插件的强大保护下运作,阅读时间不到 15 秒而进行的评论将被置为待审核状态,来路不正确、外部构造表单的将拒绝入库。

路人甲:自从我用了 70 牌反垃圾评论插件,垃圾评论不见了;没了垃圾,页面就干净,看啥啥顺眼。您瞧准了,70 牌反垃圾评论插件。

路人乙:70 牌反垃圾评论插件效果非常好,我们全家都用它。

路人丙:我用 70 牌反垃圾评论插件已经五十多年了,非常信任它。逢年过节,用来送礼也倍儿有面子。亲戚朋友都喜欢。

wiLdGoose:截止发稿,我已经看不见垃圾评论啦。心情好,请玩深圳市地税局荣誉出品《纳税富翁》。虽说曾经爆出一个漏洞,但我依然支持它。《纳税富翁》是我们党国和人民的骄傲,我们引以为荣。以下是我的截图,请深圳市地税局不吝赐教。