Updates from 六月, 2009 Toggle Comment Threads | 键盘快捷键

  • bixuan 10:38 on 2009 年 06 月 12 日 链接地址 | 回复
    Tags: , , , spawn-fcgi, spawn-php.sh   

    spawn-fcgi

    1.概况

    spawn-fcgi官方:http://redmine.lighttpd.net/projects/spawn-fcgi/wiki,可以从这里下载到最新稳定版本。
    lighttpd官方:http://www.lighttpd.net/
    其实spawn-fcgi是lighttpd的一个分支项目,是一个cgi进程的管理器,效率不错。

    2.安装

    1. 下载:
      wget -c http://www.lighttpd.net/download/spawn-fcgi-1.6.2.tar.bz2
      wget -c http://www.lighttpd.net/download/lighttpd-1.4.22.tar.bz2 #(spawn-php.sh这个文件需要从这里提取,具体在:lighttpd-1.4.22/doc/下)
    2. spawn-fcgi安装:
      tar jxvfp spawn-fcgi-1.6.2.tar.bz2
      cd spawn-fcgi-1.6.2
      ./configure
      make
      make install

    3.配置

    这里主要整理spawn-fcgi相关配置!
    安装好后,可以通过:spawn-fcgi -h
    Usage: spawn-fcgi [options] [-- <fcgiapp> [fcgi app arguments]]
    spawn-fcgi v1.6.2 (ipv6) – spawns FastCGI processes
    Options:
    -f <path>      filename of the fcgi-application (ignored if <fcgiapp> is given)
    -d <directory> chdir to directory before spawning
    -a <address>   bind to IPv4/IPv6 address (defaults to 0.0.0.0)
    -p <port>      bind to TCP-port
    -s <path>      bind to Unix domain socket
    -M <mode>      change Unix domain socket mode
    -C <children>  (PHP only) numbers of childs to spawn (default: not setting
    the PHP_FCGI_CHILDREN environment variable – PHP defaults to 0)
    -F <children>  number of children to fork (default 1)
    -P <path>      name of PID-file for spawned process (ignored in no-fork mode)
    -n             no fork (for daemontools)
    -v             show version
    -?, -h         show this help
    (root only)
    -c <directory> chroot to directory
    -S             create socket before chroot() (default is to create the socket in the chroot)
    -u <user>      change to user-id
    -g <group>     change to group-id (default: primary group of user if -u is given)
    -U <user>      change Unix domain socket owner to user-id
    -G <group>     change Unix domain socket group to group-id
    看到详细的参数说明,不过这里为了方便,还是喜欢通过这个spawn-php.sh来管理php-cgi比较方便^_^
    有个地方需要注意:spawn-php.sh这个文件有个bug,见下面红色字体部分:
    # cat spawn-php.sh
    #!/bin/bash
    ## ABSOLUTE path to the spawn-fcgi binary
    SPAWNFCGI=”/usr/local/bin/spawn-fcgi
    ## ABSOLUTE path to the PHP binary
    FCGIPROGRAM=”/app/app/php5-fastcgi/bin/php-cgi
    ## TCP port to which to bind on localhost
    FCGIPORT=”9002″
    ## 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=”192.168.11.159
    pripath=”/app/wwwroot/www.ourlinux.net”
    # allowed environment variables, separated by spaces
    ALLOWED_ENV=”pripath PATH USER”
    ## if this script is run as root, switch to the following user
    USERID=nobody
    GROUPID=nobody
    ################## no config below this line
    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 -a $FCGI_WEB_SERVER_ADDRS -p $FCGIPORT -f $FCGIPROGRAM -u $USERID -g $GROUPID -C $PHP_FCGI_CHILDREN”
    else
    EX=”$SPAWNFCGI -a $FCGI_WEB_SERVER_ADDRS -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
    以上红色部分是要自己补上去,不然默认监听在0.0.0.0,绿色字体部分是要根据具体情况做相应的修改!蓝色字体部分是根据自己的需求加的参数,意思是:php的代码放在pripath这个变量所在的目录下,这个是为了跨机器执行php-cgi,这样可以通过proxy来调用,可以提升cpu利用率(将php-cgi进程跑在cpu消耗低的机器上)

    4.后记

    如果结合lvs,nginx(lighttpd等L7的负载均衡软件)、memcahced等,这样就可以很方便的实现高可用、高性能的分布式系统:)
     
  • bixuan 17:07 on 2009 年 06 月 10 日 链接地址 | 回复
    Tags: Consistent, Hashing,   

    Nginx模块一致性hash的patch 

    威总威武:

    Consistent Hashing 如下所示:首先求出所有备选服务器(节点)的哈希值,并将其
    配置到0~232的圆(continuum)上。然后用同样的方法求出存储数据的键的哈希值,并
    映射到圆上。然后从数据映射到的位置开始顺时针查找,将数据保存到找到的第一个服务器
    上。如果超过232仍然找不到服务器,就会保存到第一台服务器上.

    详细文档这里下载: nginx_hasnginx_upstream_hash 增加一致性hash

     
  • bixuan 16:32 on 2009 年 06 月 10 日 链接地址 | 回复  

    51com招聘 

    下面是2则51com招聘的需求,有兴趣的朋友抓住机会啊:)

    招聘岗位:IM服务器开发工程师

    工作地点:上海市

    招聘人数:1人

    工作年限:2年以上

    外语要求:良好

    学历要求:本科及以上

    工作职责:

    负责IM后台服务器端开发。

    特殊要求(技能/工作风格):

    1、 精通TCP/IP协议编程,熟悉linux、C/C++编程;

    2、 熟悉Mysql数据库开发;

    3、 了解大容量、高性能的分布式服务器系统开发原理;

    4、 良好的沟通和团队协作能力;

    5、 热爱程序开发,喜欢研究追踪最新技术;

    有IM后台开发经验者优先。

    招聘岗位:PHP开发工程师(游戏事业部)

    工作地点:上海市

    招聘人数:1人

    工作年限:1年以上

    外语要求:一般

    学历要求:大专及以上

    性    别:男

    工作职责:

    游戏官网开发以及游戏活动开发。

    特殊要求(技能/工作风格):

    1、 熟悉linux系统;

    2、 精通Php+Mysql+Apache开发;

    3、 熟悉设计模式;

    4、 熟悉Linux下c/c++编程人员优先;

    5、 有游戏网站开发、游戏活动开发经验者优先。

    有兴趣的朋友可以联系我[bixuan at gmail dot com]!

     
c
写新的
j
下一篇文章/下一个回复
k
前一篇文章/以前的回复
r
回复
e
编辑
o
显示/隐藏 回复
t
回到顶部
l
go to login
h
show/hide help
esc
取消