欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

在Zeus Web Server中安装PHP语言支持

程序员文章站 2023-01-10 22:30:46
前言zeus是一个运行于unix下的非常优秀的web server,而php则是unix下一个非常优秀的后台脚本语言。 这两个产品都是为非常喜欢的产品。为什么要写这样的一个...

前言
zeus是一个运行于unix下的非常优秀的web server,而php则是unix下一个非常优秀的后台脚本语言。 这两个产品都是为非常喜欢的产品。为什么要写这样的一个howto呢?是因为有大量的网站脚本是使用php开发的, 而这些程序运行在zeus下也是一个非常好的选择。写这份文档的目的在于能让大家的php系统良好的运行于zeus服务器上。
很早的时候我写过一份整合zeus和php的文章,它主要是讲如何将php以fastcgi的本地调用方式来运行于zeus中的, 本份howto主要是来讲如何让php运行于remote responders方式下。因为这样会比以local方式有更高的可扩展性和运行效率。

准备工作
首先你应该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可以使用通常的php编译选项,下面是我使用的一个配置:

./configure --prefix=/usr/local/php --enable-fastcgi --with-mysql=/usr/local
需要注意的是在php 4.3.0以上版本是使用的 --enable-fastcgi 选项,而php 4.3.0以前的版本应使用--with-fastcgi参数。
接着就是安装php到系统中:
make
make install
编译完成后,我们来测试一下安装的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
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支持 页得到更多的信息。

注:任何转载或摘抄请注明文章出处(中文freebsd用户组 http://www.cnfug.org)