分类 技术 Technology 下的文章

2008 年 7 月 8 日,距离奥运会 30 天倒计时。今天同样是一个激动人心的日子、一个值得纪念的日子。由 70 同学领衔的原 Magike 项目组对外宣布新项目 Typecho 的成立。

从 exBlog 到 Magike,再到 Typecho,风雨同舟、荣辱与共,我们一路走来

Typecho 是否会成为中国版的 WP?今天是否会成为国内开源博客项目的里程碑?让我们拭目以待。

项目组内的 70 同学sluke 同学水水同学都相继撰文表达了他们对 Typecho 出世、祖国河山一片和谐的喜悦心情。

关于从 Magike 更名为 Typecho 的缘由,请参见这里

开源传万世,您我共参与。我们热忱期待您参与项目的任何工作,代码、文档等等……

关于如何贡献代码、参与项目,请参阅 http://www.typecho.org/contribute

Typecho 项目主页:www.typecho.org,开发日志主页:www.typecho.net

开源之路任重而道远,愿 Typecho 一路走好。

AMP 环境在当前互联网的 Web 应用中被越来越多地采用。Web 程序员除了编写脚本代码之外,多多少少也会对 AMP 环境了解一些。随着时间的推移,有些人的兴趣点可能从原先的脚本代码转向服务器应用环境,从而走向系统架构工程、运维工作方向的不归路。

我也承认我自己就是这样喜新厌旧的坏人。

很多时候,仅仅会搭建 AMP 环境,对于一个初级 Linux 系统管理员来说,都是远远不够的。操作系统五花八门,各种环境纷繁复杂,各种应用需求花样百出。这些都迫使着 OMers(系统管理员或是网络管理员)不停地在一个固定大小的框框内实现各种各样的部署。

前段时间我就遇到了这么一个事情。

就一般应用而言,AMP 环境往往搭建在同一台服务器上。但随着实体业务的扩展、系统负载的增加,我们会考虑将数据库应用独立到另一台单独的服务器上。这就牵扯出来一个问题,MySQL 是装还是不装?

如果不装 MySQL,想必 PHP 脚本没有系统库文件的支持,无法与数据库取得通讯。如果装,就不会出现上述情况;而且也没有什么大碍,大不了不启动 MySQL 嘛。但总觉得这样不够完美,不够有洁癖,不够有 BT 的作风。

在我来来回回 copy 一些库文件无果,折腾了 N 久几乎快妥协放弃的时候,有了下面一段配置代码:

#!/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 --without-server
原来,--without-server 就行了。

其实,这不是一个复杂或者深奥的问题。./configure --help 也一样能找到答案。只是很少有人会去关注她,于是她注定成为了羊群中披着羊皮的狼,抑或是狼群中披着狼皮的羊。

一直很少接触 IIS,觉得那是个繁冗的玩意,无法与 Apache 的简便快捷相比。前几天在折腾一台服务器,Windows 操作系统。由于种种特殊的、奇怪的、必要的原因,它所提供的 Web 服务必须使用 IIS 支持。

添加 IIS 所需要的组件后,转到 IIS 管理器,修改默认监听 IP,修改默认站点属性,绑定主机头,指向到文件所在目录,修改站点默认首页,去除默认应用程序池的支持,设置站点权限。一口气完成后,重启 IIS,转到浏览器一看,Service Unavailable,400 错误。

看了微软的技术文章,上面提供的解决方案如同狗屁。多次 Google 后,找到这篇文章。原来我和那位朋友一样,犯了一个非常低级的错误。

回到 IIS 管理器,启动应用程序池,一切都好了。自我批评一下,谨此纪念我的哈尔滨之行。

由于一直在生产环境中使用 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
未完待续。

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

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

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

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

- 阅读剩余部分 -