2007-09
17

相信有很多人都想架设自己的DNS服务器。我们知道世界上最好用的DNS服务器软件就是BIND; 但是我辈使用Windows操作系统的人就无福享用这Unix下的顶级软件了。

或者可以用Windows Server自带的DNS服务器试试? 需要安装Server版的Windows不说,麻烦的配置和令人迷惑的图形界面就够受的了。

难道就没有一个解决方案了吗?

柳暗花明又一村,突然发现BIND居然有Windows版,这这这………… 赶快下载下来试一下,居然成功地配好了DNS。

阅读全文 »

2007-08
09

今天说说Apache的优化。为什么要优化?因为服务器资源不够用。 资源有很多方面,但根据木桶理论,只要有一种资源不够用, 整个服务器的性能就会受到影响(所谓瓶颈)。

服务器资源

那么服务器的资源包括哪些?对于网站来说主要是CPUTCP连接数这两者。 CPU表现在任务数上,在Linux下使用平均负载(loadavg)来衡量。 可通过以下命令来查看(参考这篇文章):

cat /proc/loadavg

对于单CPU的服务器,loadavg高于1,表明任务队列出现了等待,CPU忙不过来了。 超过2以上就会明显感到性能降低了。

TCP连接数可通过以下命令查看:

netstat -ant | grep :80 | wc -l 

如果要实时监控服务器资源,可参考OpenNMS项目。

注1:内存不算,低廉的价格使得网站服务器很少有因为内存不够而down掉的。
注2:CPU%是瞬时的CPU使用率,通常无法反映出整体负载。

阅读全文 »

2007-05
22

VMware相信大家都耳熟能详,不过估计大家用的都是价值200多刀的VMware Workstation版。 而VMware公司的另一个产品——VMware Server,不收取一分钱费用却能让你实现真正的虚拟服务器。

有关VMware Workstation版和VMware Server版的详细区别请参见 smalldust的这篇文章, 但是你需要知道的一点是,Server并不是为Workstation准备的服务器端 (这和通常意义上的Workstation和Server的概念不同), 两者是完全不同的两个产品。VMware Workstation能运行在2000、XP、Linux等各种操作系统上, 但缺点就是你无法远程控制虚拟机,因此你必须在你自己的电脑上使用它; 而VMware Server则只能运行在2000 Server、RedHat Linux Enterprise等服务器操作系统上, 但你可以远程控制虚拟机,因此你可以将安装在服务器上,虚拟出多台服务器, 以充分利用服务器资源。

我最近部署的一台服务器,单CPU志强3G,2G内存,两块75G SCSI硬盘,OS为RHEL4。 部署的目的是为了做软件测试,显然这样一台服务器仅用做软件测试太浪费了, 因此我通过VMware Server在其上虚拟了四个服务器,以便同时进行四种不同的测试任务。 请注意看下面这张图,这是VMware Server的监控程序,可以看到四台虚拟服务器 总共才消耗了23% CPU和286M内存,远未达到服务器的处理能力上限。 因此通过这个方法可以大大提高服务器利用率。

vmware-server-manager.png

通过VMware Console(下图),你可以远程控制服务器上的虚拟服务器, 就像在自己本机上使用VMware Workstation一样。

vmware-server-console.png

VMware Server可在vmware官方网站上免费下载。 注册用户后可以免费获取最多100个免费的许可证。



2006-09
23

下载并安装 httpd 2.2。

$ tar xjvf httpd-2.2.3.tar.bz2
$ cd httpd-2.2.3/
$ ./configure --enable-rewrite --enable-so
$ make
$ sudo make install

下载并安装 mysql-3.23

$ sudo tar xzvf mysql-3.23.58-pc-linux-i686.tar.gz -C /usr/local/mysql
$ sudo groupadd mysql
$ sudo useradd -d /usr/sbin -s /bin/false -g mysql mysql
$ sudo chown -R mysql.mysql /usr/local/mysql
$ cd  /usr/local/mysql
$ sudo ./scripts/mysql_install_db
$ sudo cp support-files/mysql.server /etc/init.d/mysql
$ /etc/init.d/mysqld start

下载并安装 php 5.1.6。

$ sudo apt-get install flex bison libxml2-dev
$ tar xjvf php-5.1.6.tar.bz2
$ cd php-5.1.6/
$ ./configure --with-apxs2=/usr/local/apache2/bin/apxs --with-gd
                  --with-gettext --with-mysql --with-zlib-dir=/usr/lib 
                  --with-mysql=/usr/local/mysql


2006-08
31

本文介绍了在Windows下安装Apache、PHP、mod_perl、mod_python、subversion的方法。
阅读全文 »


2006-04
25

Windows+Apache2下安装php5的方法:

1. 解压php到某个地方

2. 修改apache的httpd.conf,添加如下几行:

LoadModule php5_module "c:/php/php5apache2.dll"
AddType application/x-httpd-php .php
PHPIniDir "C:/php"

3. 将php目录下的php5ts.dll复制到%PATH%环境变量指定的地方,比如C:\Windows\system32下,或者与apache.exe放到同一目录下

4. 修改php目录下的php-dist.ini为php.ini

5. 编辑php.ini,修改extension_dir为“php所在的路径” + \ext



2006-04
24

Apache的默认配置是会显示服务器信息的,比如访问一个服务器上不存在的页面,Apache会返回“Not Found”的错误,这个错误页面的最下方写着“Apache/2.0.55...”等等关于服务器的信息。这无疑为入侵者提供了可用的信息。

使用下面的配置可以使其仅显示Apache的字样:

ServerTokens Prod

而使用下面的配置可以干脆不显示服务器信息:

ServerSignature Off


2006-04
06

Apache的许多外挂功能是通过模块实现的,比如php、subversion等,安装这些功能时就需要向Apache中添加模块。看似很简单,向 httpd.conf 中添加下面这一行(以php为例):

LoadModule php5_module "php-5.1.2/php5apache2.dll"

但是试图重新启动Apache时却往往不能成功。在事件查看器中可以看到,Apache无法找到指定的模块(php-5.1.2/php5apache2.dll)。可是明明这个文件好好地在那里,为什么?

原来是系统找不到该模块所需的 dll 文件,而造成启动失败,Apache在报告错误时简单地报告为模块找不到。

那么如何判断该模块需要哪些dll才能执行?一般来说,模块所需的dll都饱含在该模块的软件包中,例如上述 php5apache2.dll 所需的 php5ts.dll 就包含在php的发行包中,并与php5apache2.dll位于同一目录下。如果你安装了 Microsoft Visual C++ 6.0,其中附带的一个工具Dependency Walker可以精确地告诉你模块需要什么dll。用Dependency Walker打开php5apache2.dll,可以看到该模块需要以下的dll:php5ts.dll,libhttpd.dll,libapr.dll,libaprutil.dll,msvcrt.dll,kernel32.dll。其中 msvcrt.dll 和 kernel32.dll 是系统文件,libxxx.dll 是 apache 自带的 dll 文件。

确定了模块需要哪些dll之后,下一步就是让系统找到这些dll。Apache启动时,它会在Apache.exe所在目录(一般是C:\Program Files\Apache Group\Apache2\bin)和系统的 %PATH% 变量中寻找dll。所以最简单的方法就是将模块所需的 dll 文件复制到 Apache.exe 所在目录下,或者复制到 C:\Windows\system32 下。这样Apache就可以正常加载该模块了。

另外一个方法就是修改%PATH%环境变量,使之包含模块所需dll所在的目录。在上面的例子里,假设php安装在 C:\php 下,那么向 %PATH% 中添加 C:\php,Apache即可正常加载php模块了。但是,如果你的Apache是通过系统服务启动的话,那么修改完环境变量之后必须重新启动计算机才能正常启动Apache服务(参考:http://tech.idv2.com/2006/04/06/windows-env-var-vs-reboot/)。



2006-03
25

1. 安装Apache ( http://httpd.apache.org) )和 ActiveState Perl (http://www.activestate.com/ )。

2. 安装mod_perl。

ppm install http://theoryx5.uwinnipeg.ca/ppmpackages/mod_perl.ppd

安装完毕之后会提示输入Apache的路径,输入类似于 D:/Apache2/modules。

3. 配置mod_perl。修改httpd.conf,增加以下几行:

LoadFile "C:/Perl/bin/perl58.dll"
LoadModule perl_module modules/mod_perl.so

<Files *.cgi>
    SetHeader perl-script
    PerlHandler ModPerl::PerlRun
    Options +ExecCGI
</Files>

4. 重新启动Apache。



2004-12
04

众所周知Apache是目前最优秀的HTTP服务器。实际上它不仅能当作服务器使用,也能够被用来架设代理服务器。本文就如何使用Apache架设HTTP代理服务器进行说明。

本文将基于Win32版的Apache 2.0.47进行说明。以前的Apache 1.x版配置方法稍有不同,但这里不作说明。

阅读全文 »