浏览 9062 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2008-07-27
引用 robbin在这里(http://www.iteye.com/topic/43228?page=1)讲到ror的配置,使用的也是lighttpd+fastcgi,但他没有讲到多机的负载均衡. http://robbin.iteye.com/blog/168989,这里讲到一些,但也只是ror的,和php的还不一样。 首先:一台机器作为应用服务器(suse),一台作为web服务器(gentoo)。在suse上配置fastcgi+ php,然后在gentoo上配置lighttpd。 各个应用程序的编译安装就不说了,假定用户已经在两台机器上安装好了应用程序:web服务器上需要安装Lighttpd,应用程序服务器上需要安装lighttpd和php。为什么也需要安装lighttpd,是因为我们要是用他的spawn-fcgi程序(lighttpd web服务器用不到)。 这里详细说一下如何配置使gentoo上服务器使用suse上的fastcgi应用。 首先配置suse,也就是应用服务器: 将Lighttpd安装文件中的doc目录下的spawn-fcgi.sh拷贝到/etc/init.d/目录中,修改某些路径: SPAWNFCGI="/usr/sbin/spawn-fcgi" #//修改成自己机器中spawn-fcgi的路径 FCGIPROGRAM="/usr/local/php/bin/php-cgi" #//修改成本地php-cgi程序的路径 FCGI_WEB_SERVER_ADDRS="127.0.0.1,172.30.9.2" #//修改成web服务器的ip地址 USERID=wwwrun GROUPID=www #//,修改成本地启动fastcgi的用户名和组 其他部分不需要修改即可执行,但是这个脚本只提供了启动的功能,不像使用/etc/init.d中的其他服务一样方便(提供start,stop,restart等参数),于是进行修改,最后结果: #!/bin/bash ## ABSOLUTE path to the spawn-fcgi binary SPAWNFCGI="/usr/sbin/spawn-fcgi" ## ABSOLUTE path to the PHP binary FCGIPROGRAM="/usr/local/php/bin/php-cgi" ## TCP port to which to bind on localhost FCGIPORT="1026" ## number of PHP children to spawn PHP_FCGI_CHILDREN=10 ## maximum number of requests a single PHP process can serve before it is restarted PHP_FCGI_MAX_REQUESTS=1000 ## IP addresses from which PHP should access server connections FCGI_WEB_SERVER_ADDRS="127.0.0.1,172.30.9.2" # allowed environment variables, separated by spaces ALLOWED_ENV="ORACLE_HOME PATH USER" ## if this script is run as root, switch to the following user USERID=wwwrun GROUPID=www ################## no config below this line case "$1" in start) if test x$PHP_FCGI_CHILDREN = x; then PHP_FCGI_CHILDREN=5 fi export PHP_FCGI_MAX_REQUESTS export FCGI_WEB_SERVER_ADDRS ALLOWED_ENV="$ALLOWED_ENV PHP_FCGI_MAX_REQUESTS FCGI_WEB_SERVER_ADDRS" if test x$UID = x0; then EX="$SPAWNFCGI -p $FCGIPORT -f $FCGIPROGRAM -u $USERID -g $GROUPID -C $PHP_FCGI_CHILDREN" else EX="$SPAWNFCGI -p $FCGIPORT -f $FCGIPROGRAM -C $PHP_FCGI_CHILDREN" fi # copy the allowed environment variables E= for i in $ALLOWED_ENV; do E="$E $i=${!i}" done # clean the environment and set up a new one env - $E $EX echo "spawning success" ;; stop) killall -9 "php-cgi" echo "spawn stoped" ;; restart) $0 stop $0 start echo "spawn restarted" ;; *) echo "Useage: " $0 " (start|stop|restart|help)" ;; esac exit 0 配置成功,/etc/init.d/spawn-fcgi.sh start启动 然后开始配置web服务器,编辑lighttpd的配置文件夹中的conf.d/mod_fastcgi.conf文件 添加如下: fastcgi.server = (".php" => ("suse" => ( "host" => "172.30.206.81", "port" => 1026, "docroot" => "/srv/www/htdocs/fcgi" ))); 这里的docroot是应用服务器上php文件存放的路径。 注意:一定不要忘了在lighttpd配置目录中的modules.conf中将mod_fastcgi.conf前面的注释去掉,否则fastcgi不可用 然后启动lighttpd 这个时候在你应用服务器的/srv/www/htdocs/fcgi中写一个helloword的php程序(比如叫hello.php),然后在另一台机器上进行测试,访问web服务器:http://web服务器地址/hello.php,应用服务器中hello.php的结果会显示出来。 有一点疑惑是,不知道在应用服务器上的php-cgi从哪里加载配置文件,于是我: 在应用服务器上写一个phpinfo的php程序,显示php的信息,在“Configuration File (php.ini) Path”这一列看到他的值为:/usr/local/php/lib,而Loaded Configuration File 的值为(none),可知他没有找到php配置文件,用的是系统默认的。于是从/etc/中将php的配置文件拷贝到这里来,进行一些必要的配置,比如将cgi.fix_pathinfo 设为 1,还有修改必要的路径等。 然后重启spawn-fcgi,再次访问phpinfo.php,这回就可以看到配置文件已经加载了。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2008-07-27
但是:spawn-fcgi没有记录日志,如何查看他的访问记录呢?
|
|
返回顶楼 | |
发表时间:2008-07-28
访问日志看lighttpd的access.log。
|
|
返回顶楼 | |
发表时间:2008-07-28
robbin 写道 访问日志看lighttpd的access.log。 我想看的是spawn-fcgi的日志,也就是应用服务器上的访问日志,而这台服务器上lighttpd是没有开的,只开了spawn-fcgi,因此lighttpd的access.log中没有记录 |
|
返回顶楼 | |
发表时间:2008-07-28
xombat 写道 robbin 写道 访问日志看lighttpd的access.log。
我想看的是spawn-fcgi的日志,也就是应用服务器上的访问日志,而这台服务器上lighttpd是没有开的,只开了spawn-fcgi,因此lighttpd的access.log中没有记录 看web server的lighttpd的access.log,然后自己写个shell脚本过滤掉静态资源的URL请求日志,就是应用服务器的访问日志了。 |
|
返回顶楼 | |
发表时间:2008-12-25
我没有搭成PHP的 lighttpd环境 , 倒是弄成了 PYTHON的 lighttpd + python turbogears + mysql的环境
呵呵 |
|
返回顶楼 | |