Nginx+FastCGI编译部署过程详述

最近,因为工作的需要,我们用Nginx+FastCGI部署了一个高性能的Web服务器。在部署的过程中,我们遇到了很多问题,也参考了一些文章,发现很少有文章将整个编译部署的过程讲清楚的。鉴于此,根据我们项目组成功部署Nginx+FastCGI的经验,我写下了这篇文章,可供相关项目的开发人员参考。

首先,对于为什么要用Nginx+FastCGI部署高性能Web服务器,我就不赘述了,网上有很多的文章,例如以下这几篇:
http://blog.csdn.net/allenlinrui/article/details/19419721
http://www.cnblogs.com/wajika/p/6395459.html

下面详细介绍编译部署的过程。

1.软件准备
(1)Linux机器
所有的程序都是部署在Linux操作系统上面的,因此建议要有一台专门的机器来安装Linux。我们使用的Linux是CentOS 7,大家可根据项目组的实际情况来选择Linux的版本。

(2)Nginx源码包
到Nginx的官网(http://nginx.org/en/download.html)上去下载最新的源码包,我们使用的是nginx-1.11.9.tar.gz。

(3)spawn_fastcgi源码包
到网站https://github.com/lighttpd/spawn-fcgi/releases 上去下载源码包spawn-fcgi-1.6.4.tar.gz。

(4)FastCGI源码包
在百度上搜索并下载源码包fcgi-2.4.1-SNAP-0910052249.tar.gz,也可到该网站上去下载:http://www.filewatcher.com/d/Gentoo/distfiles/Other/fcgi-2.4.1-SNAP-0910052249.tar.gz.614929.html

2.编译安装
1)编译安装Nginx
第一步,执行tar zxvf nginx-1.11.9.tar.gz 命令解压文件到当前目录下(具体的安装包名根据你下载的Nginx包进行确定)。
第二步,进入解压后的nginx-1.11.9目录执行./configure –prefix=/usr/local/nginx命令。
第三步,执行make命令。
第四步,执行make install命令。

2)编译安装spawn_fastcgi
第一步,执行tar zxvf spawn-fcgi-1.6.4.tar.gz 命令解压文件到当前目录下。
第二步,进入spawn-fcgi-1.6.4目录执行./configure命令。
第三步,执行make命令。
第四部,将文件spawn-fcgi拷贝到/usr/local/nginx/sbin目录下(拷贝之前如果没有这个目录,请手动创建)。

3)编译安装FastCGI
第一步,执行tar jxvf fcgi-2.4.1-SNAP-0910052249.tar.gz 命令解压文件到当前目录下。
第二步,进入fcgi-2.4.1-SNAP-0910052249目录执行./configure命令。
第三步,执行make命令。
第四步,执行make install命令。

3.测试程序编写及编译
我们编写了如下的测试程序test.c,代码如下:

#include <stdio.h>
#include <fcgi_stdio.h>
#include <stdlib.h>

int main()
{
    int count = 0;
    while (FCGI_Accept() >= 0)
    {
        printf("Content-type: text/html\r\n"
                "\r\n"
                ""
                "FastCGI Hello!"
                "Request number %d running on host%s "
                "Process ID: %d\n", ++count, getenv("SERVER_NAME"), getpid());
    }
    return 0;
}

使用“gcc -g -o test test.c -lfcgi”命令编译生成可执行文件test,然后将test拷贝到/usr/local/nginx/sbin目录下。

4.Nginx配置
在/usr/local/nginx/conf/nginx.conf配置文件中的http节点的server子节点下添加如下配置:

location ~ /test.cgi$ {
         fastcgi_pass 127.0.0.1:8088;
         fastcgi_index index.cgi;
         fastcgi_param SCRIPT_FILENAME fcgi$fastcgi_script_name;

         include fastcgi_params;
        }

5.服务端启动
(1)启动Nginx服务器
执行/usr/local/nginx/sbin/nginx命令启动Nginx。

说明:
1)可用ps -ef | grep nginx命令查看Nginx启动是否成功,正常情况下为两个进程(一个主进程一个辅进程),示例如下:

# ps -ef | grep nginx
root      2886     1  0 May15 ?        00:00:00 nginx: master process ./nginx
nobody    3406  2886  0 May15 ?        00:00:00 nginx: worker process

2)可用“kill -HUP 主进程id ”命令(如:kill -HUP 1)重新加载配置文件。

3)可用“kill -QUIT 主进程id” 命令(如:kill -QUIT 1)关闭Nginx。

(2)启动spawn-fcgi管理进程
执行“/usr/local/nginx/sbin/spawn-fcgi -a 127.0.0.1 -p 8088 -f /usr/local/nginx/sbin/test”命令启动进程。

说明:
1)可用“netstat -an|grep 8088”命令检查8088端口是否启动监听。

2)可用“ps -ef|grep test”命令检查test进程是否启动成功。

6.使用Web前端访问test
在浏览器中输入URL地址“http://127.0.0.1/test.cgi”即可访问到test的输出。

时间: 2024-08-29 13:05:06

Nginx+FastCGI编译部署过程详述的相关文章

【入门篇】Nginx + FastCGI 程序(C/C++) 搭建高性能web service的Demo及部署发布

由于最近工作的需要,本人学习了一下利用高性能web server - Nginx,来发布C/C++编写的fastCGI程序,详细细节如下.     1.介绍     Nginx - 高性能web server,这个不用多说了,大家都知道.     FastCGI程序 - 常驻型CGI程序,它是语言无关的.可伸缩架构的CGI开放扩展,其主要行为是将CGI解释器进程保持在内存中并因此获得较高的性能.     Nginx要调用FastCGI程序,需要用到FastCGI进程管理程序(因为nginx不能直

Linux下Nginx+Mysql+PHP的编译安装过程

Linux软件安装方式有很多,为了保证服务器运行的稳定性,很多人会采用编译软件安装源代码的方式来安装软件:下面我来把Godaddy VPS上的编译过程贴一下,包括安装过过程和遇到的一些问题,以及解决的办法等.需要说明的是,mysql的高级版本需要用cmake来编译 yum install gcc gcc-c++ make wget http://cdn.mysql.com/Downloads/MySQL-5.5/mysql-5.5.32.tar.gz wget http://www.cmake.

Nginx+FastCGI配置

安装过程中参考:张宴 http://blog.s135.com/nginx_php_v5/nginx对我来说是一个新的内容,安装的包比较多,在经过了一段时间对nginx的了解之后,才真正的配置成功,本文在经过第二轮的nginx配置学习过程中,不断的完善,不断的理解.对以后再次配置是一个很好的总结. 1.1 nginx概述nginx简介Nginx是俄罗斯人编写的十分轻量级的HTTP服务器,Nginx,它的发音为"engine X", 是一个高性能的HTTP和反向代理服务器,同时也是一个I

免费SSL安全证书Let&#039;s Encrypt申请及Nginx WEB站点部署HTTPS

如今,尤其是购物类.外贸类网站越来越多的需要将站点安装SSL证书,实现HTTPS网址格式,一来体现网站的数据安全性,二来主流需求且对于搜索引擎有一定的帮助(只是听说,应该不至于),不过对于中文类网站来说目前使用SSL安全证书还不是很普遍,不过后面肯定也会流行起来的. 毕竟互联网的资源是丰富的,老蒋在之前的博客文章中也有介绍过多个免费SSL安全证书资源,比如WoSign,StartSSL,UK2提供的Comodo PositiveSSL免费证书,这也包括在这篇文章需要分享的Let's Encryp

使用Liferay Maven 编译部署Theme 深入分析

今天同事问我在Maven构建Theme时Liferay框架默认资源文件从何处获取,我对比了下使用Ant来编译部署 Theme和使用Maven来编译部署Theme的过程,发现:在复制框架默认资源文件时,居然是完全不同的策略! Ant 复制Liferay默认资源文件的策略: 大家都知道,在用Ant编译Theme时,我们程序员需要 在_diffs目录下添加一些和Liferay框架不同的资源文件,而Liferay框架本身的资源文件都会从 $LIFERAY_HOME\tomcat-7.0.23\webap

浅析Ant脚本在部署过程中实现系统参数的自动发现

引言 Apache Ant 被广泛使用在 Java 开发的自动化编译.打包与部署过程中.在使用 Ant 进行软件包的部署时 ,经常需要输入一些系统环境参数,例如主机名称.IP 地址,一些服务的配置文件路径以及一些系统服务的端口等等.这 些系统参数的值通常是因所在的环境而异的,因此在不同的环境上使用 Ant 脚本进行部署,也需要手动的输入这些参数值 .一般的 Ant 部署脚本都会把需要使用者输入的参数放置到配置 property 文件里面,这样每次用户修改这些配置文件之 后再运行 Ant 脚本就可

完整实例结合VS 2010介绍DAC应用程序开发和部署过程

数据应用层程序(Data-Tier Application Component, DAC)是SQL Sever 2008 R2的一大功能亮点,结合使用http://www.aliyun.com/zixun/aggregation/13385.html">Visual Studio 2010,可以帮助开发人员和数据库管理员比以前更加有效的开发.部署.管理应用程序的数据层. 数据库应用层程序(DAC)是一个包含了几乎某一应用所需要的数据库及实例对象的实体,如表.视图.存储过程.登录等等.有了实

.Net Core 之 Ubuntu 14.04 部署过程(图文详解)_实用技巧

本篇文章主要介绍了.Net Core 之 Ubuntu 14.04 部署过程(图文详解) No.1 准备应用程序 1. 创建.Net Core Web项目 2. 使用VS2015发布 No.2 安装.Net Core for Ubuntu Ubuntu的安装就不介绍了.本人用的VMWare,装好Tools很方便. 具体安装步骤请参照:http://www.jb51.net/os/248849.html 1. 添加dotnet源 sudo sh -c 'echo "deb [arch=amd64]

编译OpenWRT过程问题解决

本人是只菜鸟,没有接触过OpenWrt,只是平时都是在Linux下做开发.习惯了Linux的开发环境. 本人的操作系统是CentOS 6.4(好久都没有换过了).本人按照网上牛人们的指点也开始下载编译OpenWRT. 如下为网上的资料: sudo apt-get update      (更新) 安装编译需要的组件: sudo apt-get install gcc  sudo apt-get install g++  sudo apt-get install binutils  sudo ap