spawn-fcgi运行fcgiwrap
http://linuxjcq.blog.51cto.com/3042600/718002
1. 下载spawn-fcgi并安装
- http://download.lighttpd.net/spawn-fcgi/releases-1.6.x/spawn-fcgi-1.6.3.tar.gz -P /usr/local/src
- tar zxvf /usr/local/src/spawn-fcgi-1.6.3.tar.gz -P /usr/local/src
- cd /usr/local/src/spawn-fcgi-1.6.3
- ./configure
- make
- # 复制spawn-fcgi到/usr/local/bin/
- cp spawn-fcgi /usr/local/bin
2. 下载并安装fcgi库
- wget http://fastcgi.com/dist/fcgi-2.4.0.tar.gz -P /usr/local/src
- tar zxvf /usr/local/src/fcgi-2.4.0.tar.gz -C /usr/ocal/src
- cd /usr/local/src/fcgi-2.4.0
- ./configure
- make
- make install
编译过程有报错
- error: 'EOF' was not declared in this scope
解决办法:在include/fcgio.h文件中加上#include <cstdio>
- vi include/fcgio.h
- #include <iostream>
- # 添加下行
- #include <cstdio>
3. 安装fcgiwrap
- wget https://download.github.com/gnosek-fcgiwrap-1.0.3-4-g58ec209.tar.gz -P /usr/locl/src
- tar zxvf /usr/local/src/gnosek-fcgiwrap-1.0.3-4-g58ec209.tar.gz -P /usr/local/src
- cd /usr/local/src/gnosek-fcgiwrap-58ec209
- autoreconf -i
- export ac_cv_func_malloc_0_nonnull=yes
- ./configure
- make
- # 复制fcgiwrap
- cp fcgiwrap /usr/local/bin
4. 创建启动和管理脚本
- vi /etc/rc.d/init.d/cfcgi
- #!/bin/bash
- # cfcgi – this script starts and stops the fcgiwrap instance
- #
- # chkconfig: – 96 28
- # description: cfcgi
- # processname: cfcgi
- RETVAL=0
- case "$1" in
- start)
- echo "Starting fastcgi"
- /usr/local/bin/spawn-fcgi -f /usr/local/bin/fcgiwrap -a 192.168.1.10 -p 10000 -F 32 -P /tmp/fastcgi-c.pid -u nobody -g nobody
- RETVAL=$?
- ;;
- stop)
- echo "Stopping fastcgi"
- killall -9 fcgiwrap
- RETVAL=$?
- ;;
- restart)
- echo "Restarting fastcgi"
- killall -9 fcgiwrap
- /usr/local/bin/spawn-fcgi -f /usr/local/bin/fcgiwrap -a 192.168.1.10 -p 10000 -F 32 -P /tmp/fastcgi-c.pid -u nobody -g nobody
- RETVAL=$?
- ;;
- *)
- echo "Usage: c-fastcgi {start|stop|restart}"
- exit 1
- ;;
- esac
- exit $RETVAL
这个脚本是salogs.com中的,直接拿来用了
添加为服务
- chmod 0755 /etc/rc.d/init.d/cfcgi
- chown root:root /etc/rc.d/init.d/cfcgi
- chkconfig –add cfcgi
- chkconfig cfcgi on
5. 启动
- service cfcgi start
检验下:
- netstat -tlnp | grep "fcgiwrap"
- tcp 0 0 192.168.1.10:10000 0.0.0.0:* LISTEN 4021/fcgiwrap
- ps -ef | grep "fcgi"
- nobody 4021 1 0 18:34 ? 00:00:00 /usr/local/bin/fcgiwrap
注意配置文件中是以nobody身份运行的
6. 配置nginx
- location ~ .*\.cgi$
- {
- fastcgi_pass 192.168.1.10:10000;
- include fcgi.conf;
- }
配置文件fcgi.conf和php公用为:
- vi fcgi.conf
- fastcgi_param GATEWAY_INTERFACE CGI/1.1;
- fastcgi_param SERVER_SOFTWARE nginx;
- fastcgi_param QUERY_STRING $query_string;
- fastcgi_param REQUEST_METHOD $request_method;
- fastcgi_param CONTENT_TYPE $content_type;
- fastcgi_param CONTENT_LENGTH $content_length;
- fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
- fastcgi_param SCRIPT_NAME $fastcgi_script_name;
- fastcgi_param REQUEST_URI $request_uri;
- fastcgi_param DOCUMENT_URI $document_uri;
- fastcgi_param DOCUMENT_ROOT $document_root;
- fastcgi_param SERVER_PROTOCOL $server_protocol;
- fastcgi_param REMOTE_ADDR $remote_addr;
- fastcgi_param REMOTE_PORT $remote_port;
- fastcgi_param SERVER_ADDR $server_addr;
- fastcgi_param SERVER_PORT $server_port;
- fastcgi_param SERVER_NAME $server_name;
- # PHP only, required if PHP was built with –enable-force-cgi-redirect
- fastcgi_param REDIRECT_STATUS 200;
OK,配置完成
参考文档:http://nginx.localdomain.pl/wiki/FcgiWrap http://salogs.com/
本文出自 “linuxjcq” 博客,请务必保留此出处http://linuxjcq.blog.51cto.com/3042600/718002
spawn-fcgi运行fcgiwrap的更多相关文章
- lighttpd与fastcgi+cgilua原理、代码分析与安装
原理 http://www.cnblogs.com/skynet/p/4173450.html 快速通用网关接口(Fast Common Gateway Interface/FastCGI)是通用网关 ...
- Nginx系列2之Nginx+php
preface 公司所有的大多数业务都泡在LNMP平台上,所以对PHP+Nginx有点了解,那么就做个小小的总结吧. what's FastCGi FastCGI是一个可伸缩,高速的在HTTP ser ...
- Python—进程、线程、协程
一.线程 线程是操作系统能够进行运算调度的最小单位.它被包含在进程之中,是进程中的实际运作单位.一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务 方法: ...
- nodeJS 菜鸟入门
从一个简单的 HTTP 服务开始旅程-- 创建一个 server.js 文件,写入: //最简单的 http 服务例子 var http = require("http"); ht ...
- python三大神器之一fabric使用
fabric 是一个python包 是一个基于ssh的部署工具包 通常用来对网站 微服务等等的批量部署 例如 我有5台线上服务器 可以通过一台对着5台分发,实现自动部署的目的. 简单介绍下 fabri ...
- python---协程 学习笔记
协程 协程又称为微线程,协程是一种用户态的轻量级线程 协程拥有自己的寄存器和栈.协程调度切换的时候,将寄存器上下文和栈都保存到其他地方,在切换回来的时候,恢复到先前保存的寄存器上下文和栈,因此:协程能 ...
- nodejs(二)child_process模块
1.child_process是Node.js的一个十分重要的模块,通过它可以实现创建多进程,以利用多核计算资源. child_process模块提供了四个创建子进程的函数,分别是spawn,exec ...
- Node.js进程通信模块child_process
前言 Node.js是一种单线程的编程模型,对Node.js的赞美和诟病的也都是因为它的单线程模型,所有的任务都在一个线程中完成(I/O等例外).单线程模型,不仅让代码非常简洁,更是直接避免了线程调度 ...
- python_线程、进程和协程
线程 Threading用于提供线程相关的操作,线程是应用程序中工作的最小单元. #!/usr/bin/env python #coding=utf-8 __author__ = 'yinjia' i ...
随机推荐
- Linux之ulimit详解(整理)
修改:一般可以通过ulimit命令或编辑/etc/security/limits.conf重新加载的方式使之生效通过ulimit比较直接,但只在当前的session有效,limits.conf中可以根 ...
- obj-c属性的新的特性
在以前的objc中我们必须在接口中定义属性对应的实例方法,然后在实现文件中"同步"该属性,如下代码: @interface Foo:NSObject{ NSString *name ...
- Xcode使用心得03:打开僵尸(Zombie)模式
如果打开了ARC或垃圾回收模式,在程序中发消息给以及重新分配的对象,将会引起程序崩溃.这时定位崩溃原因将非常困难,因为出问题的对象已经重新分配了.一个解决的方法就是要求Xcode将对象设置为" ...
- python MultiProcessing标准库使用Queue通信的注意要点
今天原本想研究下MultiProcessing标准库下的进程间通信,根据 MultiProcessing官网 给的提示,有两种方法能够来实现进程间的通信,分别是pipe和queue.因为看queue顺 ...
- WebService学习--(二)webservice相关介绍
一.WebService是什么? 1. 基于Web的服务:服务器端整出一些资源让客户端应用访问(获取数据) 2. 一个跨语言.跨平台的规范(抽象) 3. 多个跨平台.跨语言的应用间通信整合的方案(实际 ...
- javascript简单介绍(二)
晨读单词: onmouseover:鼠标移入 onmouseout:鼠标移出 attribute:属性 node:节点 document:文档 element:元素 textNode:文本节点 app ...
- 排序算法入门之归并排序(java实现)
归并排序是采用分治法的典型应用. 参考<数据结构与算法分析-Java语言描述> 归并排序其实要做两件事: (1)"分解"--将序列每次折半划分. (2)"合并 ...
- <h1>02_Linux学习_命令</h1>
帮助命令: xxx --help man xxx 列出当前目录下的目录和文件: ls ls -l ls --help ...
- 浅入javascript正则表达式的规则.
今天在看jQuery源码的时候,到处都是正则的用法,一气之下就狠下心来.重新回顾了一下正则.下面是做的笔记.非常浅的入门. /* i:表示不区分大小写 g:表示可以全局配置 m:表示可以多行配置 */ ...
- hadoop_eclipse及HDT插件的使用
Hadoop Development Tools (HDT)是开发hadoop应用的eclipse插件,http://hdt.incubator.apache.org/介绍了其特点,安装,使用等,针对 ...