发新话题
打印

[教学]Zeus+php+Zend Optimizer安装指南

[教学]Zeus+php+Zend Optimizer安装指南

zeus是一个著名的web服务软件,其效能远在apache1/2之上,是整台服务用户跑论坛的首选,对内存小于1G而流量非常大的用户,换用zeus会比apache多获得一倍的负载能力。
本文提供方法在redhat linux 7.3及以上各版本,PHP 4.3.0及以上版本,Zend Optimizer 2.1.0验证通过,所配置参数为适应每15分钟在线1000人以上的,使用Discuz! 2.0/3.0的中大型论坛所优化

进入一个目录 如
cd /usr/local/src

找一个zeus 4.2 r3 for linux的破解版本下载
wget http://download.discuz.net/zeus_linux.tgz

tar xvzf zeus_linux.tgz
cd Zeus.Web.Server.v4.2r3.Linux.x86/
tar xvzf Zeus_42r3_Linux-glibc2.1.tgz
cd Zeus_42r3_Linux-glibc2.1/

开始安装
./zinstall

按CTRL+C 打入accept

Where should the product be installed? [/usr/local/zeu]: 回车

Installation options:

1. Full install of both admin server & web server
2. Stand-alone install of admin server
3. Clustered install of web server
H. Help

Choose installation option [1]: 回车

Enter the key filename, or leave blank for unlicensed mode: /usr/local/src/Zeus.Web.Server.v4.2r3.Linux.x86/license.key (输入密匙位置)

Please choose a password for the admin server: ****** (输入管理员密码)
Re-enter: ****** (重新输入密码)

Would you like Zeus to start at boot time? Y/N [Y]: (回车)

以上是安装过程 很容易的就装好了 如果有apache在跑 先把他停掉 避免80端口冲突
/usr/local/apache/bin/apachectl stop

若安装中提示libdb.so.2不存在 先进入压缩包的libdb.so.2目录中
rpm -ivh db1-1.85-8.i386.rpm

安装php
cd /usr/local/src
从小日本网站下载php
wget http://cn2.php.net/get/php-4.3.4.tar.gz/from/jp2.php.net/mirror
tar xvzf php-4.3.4.tar.gz
cd php-4.3.4/
./configure --prefix=/usr/local/php --enable-fastcgi --enable-force-cgi-redirect --with-config-file-path=/etc --with-zlib --with-mysql --with-xml
make
make install
cp php.ini-dist /etc/php.ini

安装Zend Optimizer
cd /usr/local/src
wget http://download.discuz.net/ZendO ... glibc21-i386.tar.gz
tar xvzf ZendOptimizer-2%5B1%5D.1.0b-Linux_glibc21-i386.tar.gz
cd ZendOptimizer-2.1.0b-Linux_glibc21-i386/
./install.sh
一阵回车 问Confirm the location of your php.ini file的时候打入/etc
问Are you using Apache web server?的时候选No

设置Zeus
访问 http://your.com:9090 (你的域名地址或IP地址)
用户名 admin 密码:刚才设定的密码

进入Zeus管理控制台,点Create a Virtual Server 把相关的六个选项填好 不多说
提交后出现刚才加入的virtual server,点FastCGI

Enabling Support for FastCGI Programs 选 Enabled
Restricting FastCGI locations 选 Enable FastCGI programs to be located anywhere
Configuring Directories for FastCGI Local Responders 不用写他 因为我们用remote方式连接fastcgi

Configuring FastCGI Remote Responders 中填入以下配置
Directory name : /usr/local/php/bin/php
Location: Machine name: localhost
Port: 8002
Additional methods supported?:None

其他都不用管,点Apply changes

点左边Url Handling下面的Handlers
File Extension : php
Specify the path and filename of the handler, relative to the document root : /usr/local/php/bin/php
点Apply changes

点左边Url Handling下面的Directory Requests
Index Files中加入一个 index.php 和一分隔逗号
Directory Listing选Disabled
点Apply changes

再点上面的 This configuration has been modified. Click here for details or to make it take effect.
出来的页面点Commit

配置php-fastcgi
cd /usr/local/zeus/rc.d
建立一个S05php的文件 内容为


CODE: [Copy to clipboard]
#!/bin/sh

# Script to start and stop the persistent PHP runner for FastCGI.
# Please check paths before use.

# FastCGI PHP binary
FPHPBIN=/usr/local/php/bin/php

# Location to place semaphore
SEMFILE=/tmp/php.pid
PHP_FCGI_CHILDREN=200
PHP_FCGI_MAX_REQUESTS=1000
export PHP_FCGI_CHILDREN
export PHP_FCGI_MAX_REQUESTS

# This is Linux - use /proc to increase the local (ephemeral) port range
#echo 1024 65000 > /proc/sys/net/ipv4/ip_local_port_range

if [ -z "$ZEUSHOME" ]
then
cd `dirname $0`/..
ZEUSHOME=`pwd`
export ZEUSHOME
fi

case "$1" in
'start')

if [ -e $SEMFILE ]
then
echo FastCGI PHP error: already running.Restart FastCGI PHP now
kill `cat $SEMFILE`
sleep 5
fi

if [ ! -x $FPHPBIN ]
then
echo FastCGI PHP error: please check that $FPHPBIN is executable and exists.
exit 1
fi

echo Starting FastCGI PHP.
$ZEUSHOME/web/bin/fcgirunner --user=99 --group=99 --pidfile=$SEMFILE 8002 $FPHPBIN
;;

'stop')
if [ -e $SEMFILE ]
then
echo Stopping FastCGI PHP.
kill `cat $SEMFILE`
rm $SEMFILE
exit 0
fi
;;
'restart')
if [ -e $SEMFILE ]
then
echo Stopping FastCGI PHP.
kill `cat $SEMFILE`
sleep 5
fi
echo Starting FastCGI PHP.
$ZEUSHOME/web/bin/fcgirunner --user=99 --group=99 --pidfile=$SEMFILE 8002 $FPHPBIN
;;
*)
echo "usage: $0 {start|stop|restart}"
;;

esac
exit 1



注意--user=65534 --group=65534 为php进程运行的用户和组,一般设置为nobody用户和组FreeBSD是65534/65534,Linux是99/99

如不会建文件 可看下面范例
vi S05php
(打一个小写的i)
(把上面的内容复制到剪贴板 然后按SHIFT+INSERT粘贴过去)
(按ESC)
(输入 :wq 然后回车)

改写属性使其可执行
chmod 755 S05php

回到Zeus的9090端口管理界面 把刚才设置的虚拟主机Start

启动Zeus的命令为 /usr/local/zeus/start-zeus
停止Zeus的命令为 /usr/local/zeus/stop-zeus
重启Zeus的命令为 /usr/local/zeus/restart-zeus

编辑/etc/rc.local
加入一行
/usr/local/zeus/start-zeus
使得Zeus在开机时自动运行

如果现在无法访问web,多半是因为没有把apache停掉造成的,注意要将启动时候的apache自启动给去掉否则zeus无法绑定到80端口进而无法访问 如没有上述问题 安装后仍然无法访问 可能为web服务器没有正确安装 例如第一次安装后中断退出第二次又以升级方式安装 等等 这样的情况建议先把zeus停掉 然后将其目录rm -fr删除 重新安装一次即可正常个人以为这是zeus安装脚本设计的不合理所致

结束:zeus实在是太强大了,无以言表,在不需任何外挂模块的情况下实现多线程的高效服务 IP并发限制 来路限制 带宽限制等如此多丰富而实用的功能,确实是unix世界中极为强悍和高效的web服务器软件

TOP

[教学]服务器性能大比拼

服务器性能大比拼

作者: Larry Seltzer (TechUpdate)
Thursday, August 1 2002 3:25 PM


系统性能一直都是个复杂的话题,而牵涉到互联网了之后,情况就变得更加复杂。

当我第一次读Zeus关于它工作在HP的新的Itanium 2 Web servers上的网络服务器(Zeus Web Server)的技术文件时,我的第一感觉是CPU的运算能力只是网络服务器性能中的一个很小的影响因素。大多数的网络服务器在性能上都受到I/O能力的制约,也就是说,无论CPU数据处理速度有多快,数据都要排队等待在互联网上进行输入或者输出。

但是CPU也是非常重要的,至少对于SSL服务器是这样,这从Zeus的测试中可以看出来。 CPU处理一个SSL页的工作量要比一个普通未加密的静态页大得多。Itanium 2的基础设计非常适合整合SSL 中RSA加密/解密的数学代码,Itanium测试中使用的网络服务器使用了手工优化加密代码。这个测试是用来显示对CPU处理能力的影响的。 这个测试显示出Zeus和Itanium 2在和其他系统对比,在性能上有巨大优势。在测试中,使用的是经HP优化的Itanium,版本为Apache 2.0;Zeus运行在红帽子7.2(CPU为奔腾III 1.3GHz)上,Solaris 8运行在Sun Fire 280R(CPU为UltraSparc III 900MHz)上。它们是否象Zeus和HP所宣称的那样是同等平台呢?很难说,但是不同是非常明显的:HP rx2600仅用一个Itanium CPU每秒能完成751个SSL操作,而Sun 280R每秒仅完成了60次。所以如果你已经有了一个SSL站点(尤其是一个电子商务网站),使用这样的CPU来运行Zeus将会大大加快你的运行速度。(当然,Zeus只针对Unix,这些测试也没有包括微软的IIS--所以我们知道,一个IIS的版本的Itanium运行在Itanium上时,将会超过Zeus)有一天我们会看到这点。

上述的数据是由一个非常简单的HP开发的评测工具SSLPerf生成的。这个评测工具是开放源代码的,但是这个评测工具远远不是它所公布出来的源代码那么简单。它的测试程序里对与这个工具进行了更好的定义。(顺便提一句,这个工具中,客户在找回文件的操作时,使用到了一个开放源代码的程序--CURL工具)

但是我认为这个测试工具最有趣之处还不在于SSL,而是在操作系统程序设计方面。由于Zeus是只针对Unix的,人们经常把它和Apache,这个具有绝对垄断地位的Unix网络服务器相比。而Zeus却总是能技高一筹。

Apache的设计

Apache的设计,直到最近为止,对于获得高性能并没有什么帮助。Apache 1.x模式--在Apache 2.0仍然是默认模式--给每一个新的客户连接提供一个新的过程。这些过程规划起来非常清晰和容易,但是它需要耗占比较多的资源(CPU必须管理的数据)。

Apache 2.0增加一一种新的多线程模式,但是采用了一种比较简单的方式。它为每一个连接提供一个现成而不是一个过程。(如果想详细了解不同的Apache配置对性能的影响,请点击这里 )

Zeus采用了一种不同的方式,这种方式使得在同样的操作系统、同样的硬件条件下,能够获得与HP手工优化的Apache不同的性能。每个版本中SSL的部分--程序的关键路径--都是同样的。但当SSL被从图片中提出出来时,Zeus提供的吞吐量比在同样系统的Apache 2.0多出超过一倍。

这个区别在于Zeus采用了他们称之为“非模块化I/O多路复用器”,它包括一个机器和一个小的线程池,它的作用是在尽可能少地占用CPU资源的情况下,尽可能快地进行处理数据。

具有讽刺意味的是,“非模块化I/O多路复用器”基本上和“I/O完成端口(I/O completion ports)”是一样的,而“I/O完成端口”已经在Windows NT 和Windows 2000 Server上使用了差不多5年了。它们是微软互联网信息服务器的基础,也是为什么IIS经常成为性能测试中的杀手的原因。从我在Apache的网站上看到的情况来说,Apache 2.0在Windows上的处理模式没有采用“I/O完成端口”,但是我对此却不那么肯定。

Zeus/IIS模式能够胜过笨重的大型网络服务器的原因之一是在这个世界里有太多慢的客户和慢的连接。对于拨号上网的用户,一个对服务器的HTTP请求可能会非常缓慢,可能平均需要10秒钟。如果每一个请求都生成一个过程甚至一个线程,这种分配方式就使连接的速度变得很慢,服务器将很快在这么大的通信量下达到负荷的峰值。非模块化I/O多路复用器在服务器上减少了每个连接产生的通信量。这点在你看评测结果的时候一定要记住。他们在测试中是按照现实中的条件搭建的环境吗?他们的测试中是否包含了速度很慢的连接和低端的客户,还是只在局域网内用速度很快的客户机进行测试?

这些真的那么重要吗?重申一遍:如果网络服务器受到I/O能力的制约,那么上述的性能差别在真实世界里就会非常小。你自己的系统管理员可能已经意识到他们服务器的问题。但是如果你因为你的网络客户关心性能,那么你需要了解的不仅仅是Apache。

TOP

发新话题