| 首页 | 新闻 | 网页 | 设计 | 色彩 | 原创 | 视觉 | 素材 | 动漫 | 酷站 | 策划 | 文案 | 访谈 | 运营 | 编程 | 数据库 | 服务器 | 下载 | 图库 | 
您的位置: 幽幽天空 > 网页 > 服务器 > FreeBSD教程 > 文章正文 用户登录
Feedsky首推话题广
Geesee广告计划详
5GBFreephp空间
RealTracker提供免
Sharea免费3G媒体
Flash Remoting -
flashremoting实践
使用report build
Flash8 Remoting 
使用 Flash Remot

FreeBSD Zeus安装PHP Howto           

FreeBSD Zeus安装PHP Howto

作者:佚名 来源:不详 更新:2006-8-25 21:05:35 错误报告 我要投稿

前言

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页面了。

  • 附注

    感谢CCF的坛主hunreal写出的S05php脚本,它真的非常好用!

    如果还有什么想了解的可以到 Zeus PHP支持 页得到更多的信息。

    文章录入:skyuu    责任编辑:skyuu 
  • 上一篇文章: 没有了

  • 下一篇文章:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
    发表评论:
    姓名:  评 分: 1分 2分 3分 4分 5分
     
  • 严禁发表危害国家安全、政治、黄色淫秽等内容的评论。
  • 用户需对自己在使用幽幽天空服务过程中的行为承担法律责任。
  • 本站管理员有权保留或删除评论内容。
  • 评论内容只代表机友个人观点,与本网站立场无关。