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

前言
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)

(0)

相关推荐

  • 关于PHP语言构造器介绍

    PHP里有echo.print.die.require等几个特殊的关键字,虽然它们用起来像是函数,但实际上更类似于if.while这样控制语句,而不是一个函数.也就是说,当解释器遇到: 复制代码 代码如下: print 'Hello world'; 这样的一个表达式的时候,并不会把它转换成函数调用,而是直接映射到一系列预先定义好的操作.使用语言构成的时候可以加括号,也可以不加括号,但是使用函数的时候必须加括号. 你提到的"可变函数",英文是"variable function

  • PHP和Mysqlweb应用开发核心技术-第1部分 Php基础-2 php语言介绍

    主要主题是 .php字符串中的变量扩展系统 .php中可用的更多数据类型 .类型之间的转换 .输入和使用变量和常量 .如何在php中构建表达式以及构建表达式所需的操作符 .使用语言中可用的控制结构 .1 输入字符串的更多介绍 复制代码 代码如下: <?php $hour = 16; $kilometres = 4; $content = "cookie"; echo " 4pm in 24 hour time is {$hour}00 hours.<br/>

  • 对PHP语言认识上需要避免的10大误区

    PHP是一种非常流行的开源服务器端脚本语言,你在万维网看到的大多数网站都是使用php开发的.但是,你大概很奇怪的注意到有少部分的人发誓要离php远远的.但是令人更奇怪的是或者很震惊的说他们不用php并不是因为一些被证实的语言缺点.他们决定不用php,是因为误解.是的,你读到的那些是误解.让我们看看这些误解是: 1. PHP是一种面向对象语言,但面向对象并不彻底这完全不对.所有认为php不是彻底面向对象的程序员,尤其是Java程序员,都需要上一个PHP的基础培训:他们会发现PHP中大量面向对象的特

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

    前言Zeus是一个运行于Unix下的非常优秀的Web Server,而PHP则是Unix下一个非常优秀的后台脚本语言. 这两个产品都是为非常喜欢的产品.为什么要写这样的一个Howto呢?是因为有大量的网站脚本是使用PHP开发的, 而这些程序运行在Zeus下也是一个非常好的选择.写这份文档的目的在于能让大家的PHP系统良好的运行于Zeus服务器上. 很早的时候我写过一份整合Zeus和PHP的文章,它主要是讲如何将PHP以FastCGI的本地调用方式来运行于Zeus中的, 本份Howto主要是来讲如

  • Window server中安装Redis的超详细教程

    1.下载Window版的安装包,选择下载msi版本安装即可. 官网不支持下载window版本,只能去github上下载: Window版redis 按步骤安装完毕即可. 2.打开服务,会看到Redis服务已开启: 设置启动类型为自动. 这样每次机器重启,redis也将自动启动. 3.安装可视化界面:Another.Redis.Desktop.Manager 这是一款免费的redis操作界面,可简单的查看redis数据库.  3.设置云服务上的redis可进行远程连接: 为了后续的开发,应配置远程

  • 在Linux系统中安装Go语言的详细教程

    Go (也叫 "golang")是一款由Google最初开发的编程语言.它自诞生就有几个设计原则:简单性.安全性和速度.Go语言发行版拥有各种调试.测试.调优和代码审查工具.如今Go语言和它的工具链在大多数Linux发行版的基础仓库都可用,用默认的包管理器就可以安装. 在Ubuntu.Debian 或者 Linux Mint上安装Go语言 下面是在基于Debian的发行版上使用apt-get来安装Go语言和它的开发工具. $ sudo apt-get install golang 检查

  • 详解ASP.NET Core 中的多语言支持(Localization)

    首先在 Startup 的 ConfigureServices 中添加 AddLocalization 与 AddViewLocalization 以及配置 RequestLocalizationOptions (这里假设使用英文与中文): public void ConfigureServices(IServiceCollection services) { services.AddLocalization(options => options.ResourcesPath = "Reso

  • web server使用php生成web页面的三种方法总结

    查找mysql_pconnect时在mysql帮助文档上发现的,记在这里. web server使用php生成一个web页面的三式有以下三种: 一:把PHP作为CGI Wrapper.这种方式下,每个到达web server的请求都会导致一个php解析器进程被创建,当这个php页面执行结束时,这个php解析器进程终止. 二:在多进程的web server中,把php作为web server的一个模块.这是目前最流行的做法,但是当前也只有apahce用的这种方式.一个多进程的web server通

  • WEB页面多语言支持解决方案

    首先建立语言档,在项目中加入.resx文件例如:message.zh-cn.resx '简体中文message.zh-tw.resx '繁体中文message.en '英文..............=========================================然后利用Name --Value 键值对 填入你要在页面上显示的语言如:name value message.zh-cn.resx中:res_loginbname 登陆名 :message.zh-tw.resx中:re

  • 详解SQL Server 中 JSON_MODIFY 的使用

    SQL Server 中 JSON_MODIFY 的使用 Intro SQL Server 从 2016 开始支持了一些 JSON操作,最近的项目里也是好多地方字段直接存成了 JSON,需要了解一下怎么在SQL Server 中操作 JSON. JSON支持适用于 SQL Server 2016 及以上版本 和 Azure SQL Database. 最近在项目中很多地方字段都是存一个 JSON 字符串,尤其是针对一些有很多不确定的属性的数据来说,这样的信息我们一般都放在一个 Extra 之类的

  • 在 Ubuntu 15.04/CentOS 7 中安装 Lighttpd Web 服务器的方法

    Lighttpd 是一款开源 Web 服务器软件.Lighttpd 安全快速,符合行业标准,适配性强并且针对高配置环境进行了优化.相对于其它的 Web 服务器而言,Lighttpd 占用内存更少:因其对 CPU 占用小和对处理速度的优化而在效率和速度方面从众多 Web 服务器中脱颖而出.而 Lighttpd 诸如 FastCGI.CGI.认证.输出压缩.URL 重写等高级功能更是那些面临性能压力的服务器的福音. 以下便是我们在运行 Ubuntu 15.04 或 CentOS 7 Linux 发行

  • sql server 2008安装过程中服务器配置出错解决办法

    sql server 2008安装过程中服务器配置出错,求助!!!!!!! 解决方法: 当sql2008安装导向运行到这里时: 请选择:对所有SQL Server 服务使用相同的账号: 但这里不能给他设置自己定义的账号和密码(例如下面设置它的账号为sa,密码为654321)就会发生错误: 解决方法如下图所示: 1.  首先要点击"对所有SQL Server 服务使用相同的账号" 然后会弹出一对话框让我们输入账户和密码:我们点击账户后面的下拉列表从中学则任意一个账户,在这里密码就不用填写

  • Windows Server 2016中安装PHP Manager、ARR3.0或者URL Rewrite 2.0无法成功的解决办法

    Windows Server 2016中安装PHP Manager.ARR3.0或者URL Rewrite 2.0无法成功的解决办法 如图: 无法安装原因都是这几个工具无法识别10.0这个版本,可以修改注册表来先完成安装,然后再改回去 PHPManager的修改方法如下: 打开注册表工具(运行Regedt32),找到: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W3SVC\Parameters 看MajorVersion 是DWOR

随机推荐