Nginx + FastCgi/ php5-fpm + nginx_http_push_module安装

来源:互联网 发布:源码资本地址 编辑:程序博客网 时间:2024/06/05 03:11

Nginx + FastCgi/ php5-fpm + nginx_http_push_module安装

 

一.   Nginx和nginx_http_push_module模块安装及部署:

1.      

到http://nginx.org/en/download.html 下载nginx-0.8.53.tar.gz

到 http://pushmodule.slact.net/#download 下载 nginx_http_push_module模块

到 http://www.pcre.org/下载pcre(正则表达式) 函数库源代码

2.       上传到”/home/你的用户名”目录中,并解压缩:

tar -zxvf nginx-0.8.53.tar.gz.

tar -zxvf nginx_http_push_module-0.692.tar.gz

tar –zxvf pcre-8.10.tar.gz

3.若你的linux中没有安装C编辑器gcc和C++编辑器g++,则用以下命令安装:

sudo apt-get install gcc

sudo apt-get install g++

若已安装,则跳过该步骤.

4.需要安装2个C函数库:

  4.1 pcre(正则表达式) ,编译安装:

./configure

make

sudo make install

  4.2 SSL: apt-get install libssl-dev

5.解压后,进入/home/你的用户名/nginx-0.8.53目录

6.安装Nginx:

./configure  --add-module=../nginx_http_push_module-0.692 --with-cc-opt='-O2'

7. 编译Nginx:

   make

8.编译安装:

  sudo make install

二.   安装php和mysql:

sudo apt-get install php5-cli php5-cgi mysql-server php5-mysql

三.   FastCgi/php5-fpm(二选一):

1.  安装FastCgi :
sudo apt-get install spawn-fcgi

启动:

spawn-fcgi -a 127.0.0.1 -p 9000 -C 10 -u www-data -f /usr/bin/php-cgi

2.       安装php5-fpm:

1)       下载:

sudo apt-get install php5-fpm

2)       修改/etc/php5/fpm/pool.d/www.conf中的pm.max_children=50 和request_terminate_timeout = 1200

3)       启动php-fpm:

/etc/init.d/php5-fpm start

 

四.   修改nginx_http_push模块的配置和测试:

1.       修改nginx.conf:

1.1   worker_processes  10;

1.2   event部分加入  use epoll;

1.3   http部分加入: 

fastcgi_connect_timeout 1200;

fastcgi_send_timeout 1200;

fastcgi_read_timeout 1200;

fastcgi_buffer_size 128k;

fastcgi_buffers 8 128k;

fastcgi_busy_buffers_size 128k;

fastcgi_temp_file_write_size 128k;

 

push_max_reserved_memory 10M;

并修改 keepalive_timeout  615;

 

1.4  server部分加入:

location /Microsoft-Server-ActiveSync {

             root html;

                if ($args ~ Cmd=Ping){

                        rewrite /Microsoft-Server-ActiveSync /activity last;

                }

                rewrite /Microsoft-Server-ActiveSync /z-push/index.php last;

        }

location /publish {

          set $push_channel_id $arg_user; #/?id=239aff3 or somesuch

          push_publisher;

          push_store_messages on; # enable message queueing

          push_message_timeout 2h; # expire buffered messages after 2 hours

          push_max_message_buffer_length 10; # store 10 messages

          #push_min_message_recipients 0; # minimum recipients before purge

        }

        # public long-polling endpoint

        location /activity {

          push_subscriber;

          # how multiple listener requests to the same channel id are handled

          # - last: only the most recent listener request is kept, 409 for others.

          # - first: only the oldest listener request is kept, 409 for others.

          # - broadcast: any number of listener requests may be long-polling.

          push_subscriber_concurrency broadcast;

          set $push_channel_id $arg_user;

          default_type text/plain;

        }

2         启动nginx:

/usr/local/nginx/sbin/nginx

3         测试:

4         地址栏中输入http://localhost/Microsoft-Server-ActiveSync?Cmd=Ping&user=osa

5         浏览器会处于等待状态,等待Ping返回一个值

6         在linux的命令行中输入 telnet 127.0.0.1 80

7         并输入测试代码:

8         POST /publish?user=osa HTTP/1.0

8Content-Length: 1

 

a

(以上为一段完整测试代码)

9         测试结果:浏览器会呈现一个字符a,即测试成功

10       停止Nginx:

11       /usr/local/nginx/sbin/nginx –s stop