Zeus Web Server相关知识(fastCGI方式运行PHP)

时间:2008-08-08 05:03:24   来源:  作者:  点击:次  出处:技术无忧
关键字:fastcgi zeus php

 
前言
Zeus是一个运行于Unix下的非常优秀的Web Server,而PHP则是Unix下一个非常优秀的后台脚本语言。 这两个产品都是为非常喜欢的产品。为什么要写这样的一个Howto呢?是因为有大量的网站脚本是使用PHP开发的, 而这些程序运行在Zeus下也是一个非常好的选择。写这份文档的目的在于能让大家的PHP系统良好的运行于Zeus服务器上。

很早的时候我写过一份整合Zeus和PHP的文章,它主要是讲如何将PHP以FastCGI的本地调用方式来运行于Zeus中的, 本份Howto主要是来讲如何让PHP运行于Remote Responders方式下。因为这样会比以local方式有更高的可扩展性和运行效率。

2004/3/12 更新了PHP-CGI的ports安装方式,不再使用手工编译的方式来安装PHP,同时将配置的一个小缺漏补上了。

准备工作
首先你应该Zeus安装完成,也不会过多的讲如何安装和配置Zeus服务器本身,因为它的安装和配置实在是太简单了。

如果有可能,最好将ports使用cvsup来升级一下。

对于PHP依赖的相关软件如果能提前装,则从ports中安装好。如MySQL、GD等。

安装fastcgi
注意,如果你安装的PHP的版本会低于4.3.0哪么你才需要这步。新的PHP版本已经内置了fastcgi的库。安装fastcgi的方法非常的简单:

root@~$cd /usr/ports/www/fcgi/
root@/usr/ports/www/fcgi$make;make install;make clean
                        编译完成后我们可以在/usr/local/lib目录中看到有libfcgi.a文件,同时在/usr/local/include目录中会有fastcgi的所有头文件。

编译PHP
编译PHP我们需要编译包含有FastCGI的PHP,而FreeBSD的ports中正为我们提供了php的cgi版本:

cd /usr/ports/www/php4-cgi
make WITH_FASTCGI=yes install
make clean
                        在第二步时会出现你需要php加入的功能模块清单,这时为你的PHP选择好需要的模块清单,之后的事情已经有一群优秀的系统管理员帮你做好了。 编译完成后,我们来测试一下安装的php是能正确运行:

root@~$cd /usr/local/php/bin/
root@/usr/local/php/bin$./php
                        这时将进入php代码输入状态,输入

<? phpinfo(); ?>
                        按ctrl-d运行后会见到php返回的信息则为正确。

配置FastCGI/PHP
配置FastCGI
进入Zeus管理控制台,打开需要配置的VHost配置。进入API Support中的FastCGI设置。在其中设置:

Enabling Support for FastCGI Programs : Enable
在Configuring FastCGI Remote Responders中设置:

Directory name : /usr/local/php/bin/php
Location: Machine name: localhost 8002
Additional methods supported?:None
如果你的PHP应用不在本机,即使PHP没有安装在本机上,哪么也要设置Docroot path参数,它可以不存在于相应的目录下。

都设置完成后,点击Apply按钮。

配置PHP解析指向
进入URL Handling中的Handlers设置。在Adding a Handler中设置以下参数:

File Extension : php
Specify the path and filename of the handler, relative to the document root : /usr/local/php/bin/php
HTTP 404 errors are handled by : The handler
注意,这里的Specify the path and filename of the handler, relative to the document root应和你上一步设置的Directory name值相同。

都设置完成后,点击Apply按钮。

所有的设置完成后使用vhost的commit功能将更改提交并应用。这样Zeus就设置好了Fastcgi和PHP的相关参数。

配置FastCGI/PHP启动
在Zeus的rc.d目录中新建一个S05php的文件,内容为:

#!/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=100
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=65534 --group=65534 --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=65534 --group=65534 --pidfile=$SEMFILE 8002 $FPHPBIN
       ;;
  *)
    echo "usage: $0 {start|stop|restart}"
    ;;

esac
exit 1
                        在这个脚本中有以下内容需要视系统情况而修改:

FPHPBIN=/usr/local/php/bin/php 应设置为php的路径
SEMFILE=/tmp/php.pid 生成php.pid的路径,该目录必须可写
PHP_FCGI_CHILDREN=100 php进程数目
PHP_FCGI_MAX_REQUESTS=1000 每个php的进程在退出前能够响应的请求数,用于释放资源 上面两个根据硬件配置和网站访问量设置,默认值是8,500。 一般来说 PHP_FCGI_CHILDREN > 访问并发最大值+10

PHP_FCGI_MAX_REQUESTS 如果设置过小,访问量大的网站会因为php进程重起频繁增加负荷。

#echo 1024 65000 > /proc/sys/net/ipv4/ip_local_port_range 只用于linux
--user=65534 --group=65534 为php进程运行的用户和组,一般设置为nobody用户和组FreeBSD是65534/65534,Linux是99/99
最后,将S05php文件设置为可执行文件,并将FastCGI/PHP运行起来:

chmod 755 S05php
./S05php start
                        一但启动后就会在ps -ax列表中显示出PHP_FCGI_CHILDREN+1个php进程。

到你的vhost对应的Docroot目录中建一个info.php文件,内容为:

<?
phpinfo();
?>

使用浏览器访问vhost中的info.php文件,应该就可以看到PHP的info页面了。
应上面的回帖:
作为web服务器的计算机要做到需要的软件才装,不需要的就不装,要装最稳定的,不追求最新的!
作为一个web服务器管理员必须要具备下面五个服务的安装,优化,备份等技能
(1)。web server,除了这里说的zeus web server,还有大家最熟悉的有linux下的apache(当然apache有windows版本),windows 下的
iis,还有jsp的tomcat,weblogic(sun公司),websphere(ibm公司的)等等,这里包括php,jdk,ruby等的配置
(2)database server,数据库很多,小的access不需要安装,配置一下就可以了,php一般用mysql,也有oracle和postgresql,微软.net用sql server 2003和sql server 2005
当然厉害的公司用自己的数据库,如google,就用自己编写的文件数据库,(顺便说一下taobao也是用文件数据库)具体我也不是很清楚
(3)ftp server这个一般情况下windows下用serv—U,linux/freebsd用pure-ftpd,vsftpd,我一直用pure-ftpd,很安全!~
(4)dns!~~~~这个就知道bind怎么用,目前freebsd-6.2-release下的bind版本好像是bind-9.3.4,不知道就慢慢研究吧,挺复杂的
(5)stream server--流媒体服务器,竞争的公司主要有三个:Microsoft、RealNetworks、Apple,而相应的产品就是:Windows Media、Real Media、QuickTime。安装简单的,理解就比较难了!大家慢慢研究吧

只有精通上面五点,才能向web 服务器管理员迈进
zeus web server 目前来说是最优秀的web server,目前国内高在线的论坛大多用这个
可以支持单台服务器1万以上的在线人数!目前只有商业版,可以试用一个月,一台2u的双cpu的机子装一个好像是4500美元
[b]当然个人用破解版[/b]
目前没有windows版本的zeus,只有linux/freebsd版本
推荐使用4.3 rc3以上版本,后台功能非常强大,装一个就知道了

ps:zeus的安装非常简单,php、jdk、jsp等都是装好以后后台加载

相关文章

文章评论

共有 0 位网友发表了评论 此处只显示部分留言 点击查看完整评论页面

特别推荐