Linux下nginx编译安装教程和编译参数详解

一、必要软件准备
1.安装pcre

为了支持rewrite功能,我们需要安装pcre

复制代码 代码如下:
# yum install pcre* //如过你已经装了,请跳过这一步

2.安装openssl

需要ssl的支持,如果不需要ssl支持,请跳过这一步

复制代码 代码如下:
# yum install openssl*

3.gzip 类库安装

复制代码 代码如下:
yum install zlib zlib-devel

4.安装wget

下载nginx使用,如果已经安装,跳过这一步

复制代码 代码如下:
# yum install wget

二、安装nginx

1.下载

复制代码 代码如下:
wget http://nginx.org/download/nginx-1.7.0.tar.gz

2.解压
复制代码 代码如下:

tar -zxvf nginx-1.7.0.tar.gz

3.编译和安装
执行如下命令:
复制代码 代码如下:

# cd nginx-1.7.0
# ./configure --prefix=/usr/local/nginx-1.7.0 \
--with-http_ssl_module --with-http_spdy_module \
--with-http_stub_status_module --with-pcre

Cwith-http_stub_status_module:支持nginx状态查询
Cwith-http_ssl_module:支持https
Cwith-http_spdy_module:支持google的spdy,想了解请百度spdy,这个必须有ssl的支持
Cwith-pcre:为了支持rewrite重写功能,必须制定pcre

最后输出如下内容,表示configure OK了。

复制代码 代码如下:

checking for zlib library ... found
 creating objs/Makefile
Configuration summary
 + using system PCRE library
 + using system OpenSSL library
 + md5: using OpenSSL library
 + sha1: using OpenSSL library
 + using system zlib library
nginx path prefix: "/usr/local/nginx-1.7.0"
 nginx binary file: "/usr/local/nginx-1.7.0/sbin/nginx"
 nginx configuration prefix: "/usr/local/nginx-1.7.0/conf"
 nginx configuration file: "/usr/local/nginx-1.7.0/conf/nginx.conf"
 nginx pid file: "/usr/local/nginx-1.7.0/logs/nginx.pid"
 nginx error log file: "/usr/local/nginx-1.7.0/logs/error.log"
 nginx http access log file: "/usr/local/nginx-1.7.0/logs/access.log"
 nginx http client request body temporary files: "client_body_temp"
 nginx http proxy temporary files: "proxy_temp"
 nginx http fastcgi temporary files: "fastcgi_temp"
 nginx http uwsgi temporary files: "uwsgi_temp"
 nginx http scgi temporary files: "scgi_temp"
# make //确定你的服务器有安装make,如果没有安装请执行yum install make

# make install

三、启动、关闭、重置nginx

启动:直接执行以下命令,nginx就启动了,不需要改任何配置文件,nginx配置多域名虚拟主机请参考后续文章.

复制代码 代码如下:
/usr/local/nginx-1.7.0/sbin/nginx

试试访问:直接使用curl命令来读取web信息
复制代码 代码如下:

[root@ns conf]
# curl -s http://localhost | grep nginx.com
nginx.com.

关闭:
复制代码 代码如下:
/usr/local/nginx-1.7.0/sbin/nginx -s stop

重置:当你有修改配置文件的时候,只需要reload以下即可
复制代码 代码如下:
/usr/local/nginx-1.7.0/sbin/nginx -s reload

整个nginx的安装就到这里结束了。

四、nginx编译参数详解

复制代码 代码如下:

Cprefix= 指向安装目录
Csbin-path 指向(执行)程序文件(nginx)
Cconf-path= 指向配置文件(nginx.conf)
Cerror-log-path= 指向错误日志目录
Cpid-path= 指向pid文件(nginx.pid)
Clock-path= 指向lock文件(nginx.lock)(安装文件锁定,防止安装文件被别人利用,或自己误操作。)
Cuser= 指定程序运行时的非特权用户
Cgroup= 指定程序运行时的非特权用户组
Cbuilddir= 指向编译目录
Cwith-rtsig_module 启用rtsig模块支持(实时信号)
Cwith-select_module 启用select模块支持(一种轮询模式,不推荐在高载环境下使用)禁用:Cwithout-select_module
Cwith-poll_module 启用poll模块支持(功能与select相同,与select特性相同,为一种轮询模式,不推荐在高载环境下使用)
Cwith-file-aio 启用file aio支持(一种APL文件传输格式)
Cwith-ipv6 启用ipv6支持
Cwith-http_ssl_module 启用ngx_http_ssl_module支持(使支持https请求,需已安装openssl)
Cwith-http_realip_module 启用ngx_http_realip_module支持(这个模块允许从请求标头更改客户端的IP地址值,默认为关)
Cwith-http_addition_module 启用ngx_http_addition_module支持(作为一个输出过滤器,支持不完全缓冲,分部分响应请求)
Cwith-http_xslt_module 启用ngx_http_xslt_module支持(过滤转换XML请求)
Cwith-http_image_filter_module 启用ngx_http_image_filter_module支持(传输JPEG/GIF/PNG 图片的一个过滤器)(默认为不启用。gd库要用到)
Cwith-http_geoip_module 启用ngx_http_geoip_module支持(该模块创建基于与MaxMind GeoIP二进制文件相配的客户端IP地址的ngx_http_geoip_module变量)
Cwith-http_sub_module 启用ngx_http_sub_module支持(允许用一些其他文本替换nginx响应中的一些文本)
Cwith-http_dav_module 启用ngx_http_dav_module支持(增加PUT,DELETE,MKCOL:创建集合,COPY和MOVE方法)默认情况下为关闭,需编译开启
Cwith-http_flv_module 启用ngx_http_flv_module支持(提供寻求内存使用基于时间的偏移量文件)
Cwith-http_gzip_static_module 启用ngx_http_gzip_static_module支持(在线实时压缩输出数据流)
Cwith-http_random_index_module 启用ngx_http_random_index_module支持(从目录中随机挑选一个目录索引)
Cwith-http_secure_link_module 启用ngx_http_secure_link_module支持(计算和检查要求所需的安全链接网址)
Cwith-http_degradation_module  启用ngx_http_degradation_module支持(允许在内存不足的情况下返回204或444码)
Cwith-http_stub_status_module 启用ngx_http_stub_status_module支持(获取nginx自上次启动以来的工作状态)
Cwithout-http_charset_module 禁用ngx_http_charset_module支持(重新编码web页面,但只能是一个方向C服务器端到客户端,并且只有一个字节的编码可以被重新编码)
Cwithout-http_gzip_module 禁用ngx_http_gzip_module支持(该模块同-with-http_gzip_static_module功能一样)
Cwithout-http_ssi_module 禁用ngx_http_ssi_module支持(该模块提供了一个在输入端处理处理服务器包含文件(SSI)的过滤器,目前支持SSI命令的列表是不完整的)
Cwithout-http_userid_module 禁用ngx_http_userid_module支持(该模块用来处理用来确定客户端后续请求的cookies)
Cwithout-http_access_module 禁用ngx_http_access_module支持(该模块提供了一个简单的基于主机的访问控制。允许/拒绝基于ip地址)
Cwithout-http_auth_basic_module禁用ngx_http_auth_basic_module(该模块是可以使用用户名和密码基于http基本认证方法来保护你的站点或其部分内容)
Cwithout-http_autoindex_module 禁用disable ngx_http_autoindex_module支持(该模块用于自动生成目录列表,只在ngx_http_index_module模块未找到索引文件时发出请求。)
Cwithout-http_geo_module 禁用ngx_http_geo_module支持(创建一些变量,其值依赖于客户端的IP地址)
Cwithout-http_map_module 禁用ngx_http_map_module支持(使用任意的键/值对设置配置变量)
Cwithout-http_split_clients_module 禁用ngx_http_split_clients_module支持(该模块用来基于某些条件划分用户。条件如:ip地址、报头、cookies等等)
Cwithout-http_referer_module 禁用disable ngx_http_referer_module支持(该模块用来过滤请求,拒绝报头中Referer值不正确的请求)
Cwithout-http_rewrite_module 禁用ngx_http_rewrite_module支持(该模块允许使用正则表达式改变URI,并且根据变量来转向以及选择配置。如果在server级别设置该选项,那么他们将在 location之前生效。如果在location还有更进一步的重写规则,location部分的规则依然会被执行。如果这个URI重写是因为location部分的规则造成的,那么 location部分会再次被执行作为新的URI。 这个循环会执行10次,然后Nginx会返回一个500错误。)
Cwithout-http_proxy_module 禁用ngx_http_proxy_module支持(有关代理服务器)
Cwithout-http_fastcgi_module 禁用ngx_http_fastcgi_module支持(该模块允许Nginx 与FastCGI 进程交互,并通过传递参数来控制FastCGI 进程工作。 )FastCGI一个常驻型的公共网关接口。
Cwithout-http_uwsgi_module 禁用ngx_http_uwsgi_module支持(该模块用来医用uwsgi协议,uWSGI服务器相关)
Cwithout-http_scgi_module 禁用ngx_http_scgi_module支持(该模块用来启用SCGI协议支持,SCGI协议是CGI协议的替代。它是一种应用程序与HTTP服务接口标准。它有些像FastCGI但他的设计 更容易实现。)
Cwithout-http_memcached_module 禁用ngx_http_memcached_module支持(该模块用来提供简单的缓存,以提高系统效率)
-without-http_limit_zone_module 禁用ngx_http_limit_zone_module支持(该模块可以针对条件,进行会话的并发连接数控制)
Cwithout-http_limit_req_module 禁用ngx_http_limit_req_module支持(该模块允许你对于一个地址进行请求数量的限制用一个给定的session或一个特定的事件)
Cwithout-http_empty_gif_module 禁用ngx_http_empty_gif_module支持(该模块在内存中常驻了一个1*1的透明GIF图像,可以被非常快速的调用)
Cwithout-http_browser_module 禁用ngx_http_browser_module支持(该模块用来创建依赖于请求报头的值。如果浏览器为modern ,则$modern_browser等于modern_browser_value指令分配的值;如 果浏览器为old,则$ancient_browser等于 ancient_browser_value指令分配的值;如果浏览器为 MSIE中的任意版本,则 $msie等于1)
Cwithout-http_upstream_ip_hash_module 禁用ngx_http_upstream_ip_hash_module支持(该模块用于简单的负载均衡)
Cwith-http_perl_module 启用ngx_http_perl_module支持(该模块使nginx可以直接使用perl或通过ssi调用perl)
Cwith-perl_modules_path= 设定perl模块路径
Cwith-perl= 设定perl库文件路径
Chttp-log-path= 设定access log路径
Chttp-client-body-temp-path= 设定http客户端请求临时文件路径
Chttp-proxy-temp-path= 设定http代理临时文件路径
Chttp-fastcgi-temp-path= 设定http fastcgi临时文件路径
Chttp-uwsgi-temp-path= 设定http uwsgi临时文件路径
Chttp-scgi-temp-path= 设定http scgi临时文件路径
-without-http 禁用http server功能
Cwithout-http-cache 禁用http cache功能
Cwith-mail 启用POP3/IMAP4/SMTP代理模块支持
Cwith-mail_ssl_module 启用ngx_mail_ssl_module支持
Cwithout-mail_pop3_module 禁用pop3协议(POP3即邮局协议的第3个版本,它是规定个人计算机如何连接到互联网上的邮件服务器进行收发邮件的协议。是因特网电子邮件的第一个离线协议标 准,POP3协议允许用户从服务器上把邮件存储到本地主机上,同时根据客户端的操作删除或保存在邮件服务器上的邮件。POP3协议是TCP/IP协议族中的一员,主要用于 支持使用客户端远程管理在服务器上的电子邮件)
Cwithout-mail_imap_module 禁用imap协议(一种邮件获取协议。它的主要作用是邮件客户端可以通过这种协议从邮件服务器上获取邮件的信息,下载邮件等。IMAP协议运行在TCP/IP协议之上, 使用的端口是143。它与POP3协议的主要区别是用户可以不用把所有的邮件全部下载,可以通过客户端直接对服务器上的邮件进行操作。)
Cwithout-mail_smtp_module 禁用smtp协议(SMTP即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式。SMTP协议属于TCP/IP协议族,它帮助每台计算机在发送或中转信件时找到下一个目的地。)
Cwith-google_perftools_module 启用ngx_google_perftools_module支持(调试用,剖析程序性能瓶颈)
Cwith-cpp_test_module 启用ngx_cpp_test_module支持
Cadd-module= 启用外部模块支持
Cwith-cc= 指向C编译器路径
Cwith-cpp= 指向C预处理路径
Cwith-cc-opt= 设置C编译器参数(PCRE库,需要指定Cwith-cc-opt=”-I /usr/local/include”,如果使用select()函数则需要同时增加文件描述符数量,可以通过Cwith-cc- opt=”-D FD_SETSIZE=2048”指定。)
Cwith-ld-opt= 设置连接文件参数。(PCRE库,需要指定Cwith-ld-opt=”-L /usr/local/lib”。)
Cwith-cpu-opt= 指定编译的CPU,可用的值为: pentium,pentiumpro,pentium3,pentium4,athlon,opteron,amd64,sparc32,sparc64,ppc64
Cwithout-pcre 禁用pcre库
Cwith-pcre 启用pcre库
Cwith-pcre= 指向pcre库文件目录
Cwith-pcre-opt= 在编译时为pcre库设置附加参数
Cwith-md5= 指向md5库文件目录(消息摘要算法第五版,用以提供消息的完整性保护)
Cwith-md5-opt= 在编译时为md5库设置附加参数
Cwith-md5-asm 使用md5汇编源
Cwith-sha1= 指向sha1库目录(数字签名算法,主要用于数字签名)
Cwith-sha1-opt= 在编译时为sha1库设置附加参数
Cwith-sha1-asm 使用sha1汇编源
Cwith-zlib= 指向zlib库目录
Cwith-zlib-opt= 在编译时为zlib设置附加参数
Cwith-zlib-asm= 为指定的CPU使用zlib汇编源进行优化,CPU类型为pentium,pentiumpro
Cwith-libatomic 为原子内存的更新操作的实现提供一个架构
Cwith-libatomic= 指向libatomic_ops安装目录
Cwith-openssl= 指向openssl安装目录
Cwith-openssl-opt 在编译时为openssl设置附加参数
Cwith-debug 启用debug日志

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


EditPlus中文版安装教程 1、下载软件压缩包,解压即可。不需要安装,解压后打开“EditPlus中文版”文件夹(软件我会打包好,在文中的最低端找到即可下载;若链接失效了,请告知我一声,我会重新更
2016年9月22日凌晨,微信宣布“小程序”问世,妈的,论坛,博客全是小程序,昨天当之无愧抢了头条,当然只是开始内测了,微信公众平台对200个服务号发送了小程序内测邀请。那么什么是“小程序”呢,来看微信之父怎么
概述 安装与使用    安装        从源代码编译Nginx
VisualStudio2017离线安装方式整理一份给大家,希望大家喜欢。 VisualStudio,特别是VisualStudio2017通常是一个在线安装程序,如果你在安装过程中失去连接,你可以遇到问题。但是,由于法律原因,微软没有提供完整
VisualStudio2017RTM正式版离线安装及介绍。 首先至官网下载:https://www.visualstudio.com/zh-hans/downloads/
分享VS2010boost标准库开发环境安装教程 1. BOOST编译过程非常复杂,目前为了学习BOOST,首先搭建基于VS2010的BOOST开发环境。
写在前面 2014.6发布《快速入门》 2015.6更新扩展阅读 2016.1更新扩展阅读 1、VirtualBox虚拟机――这是什么?
ZooKeeper就是动物园管理员的意思,它是用来管理Hadoop(大象)、Hive(蜜蜂)、pig(小猪)的管理员,ApacheHbase、ApacheSolr、Dubbo都用到了ZooKeeper,其实就是一个集群管理工具,是集群的入口。ZooKeeper是一个
Kafka(http://kafka.apache.org/)是由LinkedIn使用Scala编写的一个分布式消息系统,用作LinkedIn的活动流(ActivityStream)和运营数据处理管道(Pipeline)的基础,具有高水平扩展和高吞吐量。Spack、Elasticsear
一、必要软件准备1.安装pcre为了支持rewrite功能,我们需要安装pcre复制代码代码如下:#yuminstallpcre*//如过你已经装了,请跳过这一步
最近细细的折腾了win10下PHP环境的安装过程,每次安装总是有小问题,现在总结一下。安装之前需要注意,下载的安装包(除MySQL)外必须统一是64位或者统一时32位。 ### 一. MySQL5.7的安装 > 下载地址:http://dev.mysql.com/downloads/mysql/ MySQL5.7的安装相对简单,直接去MySQL官网下载并安装。如果只是开发使用直接n...
https://www.cnblogs.com/goldlong/p/8027997.html
1、项目的初始化1、git仓库的创建:git远程服务器(GitHub、gitee)上先创建git仓库,再与本地的项目关联。2、git权限配置(SSH:不需要账号密码,HTTPS:需要账号密码)3、gitignore的配置设置一些规则,被匹配到的文件就不会被git追踪.例如:.DS_Store 是sublime产生的临时文件,会出现在目录下,但是没有什么用,就可以把它忽略掉;/node_modules/是node.js的包,这个目录下所有的文件都是通过npm来安装的,它的体积一般比较大,几百兆左右,所以这个是在使用项目的时候重新安装就可以。npm install/dist/存了编译好的静态文件,这些文件没有什么用,如果在开发的时候可以重新编译生成就可以了4、项目的目录结构设计2、项目工具脚手架的搭建1、需要npm加载依赖包,就需要对npm进行初始化:npm init -->输入参数(项目名称,项目描述,作者等)-->生成package.json文件(所以的npm信息都在这个文件下)2、安装依赖包需要用:npm install 或  npm install xxx@v.v.v 命令,安装完之后会在根目录下生成node_modules文件夹 ;卸载依赖包:npm uninstall xxx@v.v.v全局安装:-g参数:--registry=https://registry.npm.taobao.org  (用来指定npm原地址的--registry)3、webpack1、设计思想--require anything 2、加载方式:各种loader插件3、编译方式:commonjs模块-->function类型的模块4、--save-dev 会把包的信息写入packge.json文件里的devDependencies里,可以记录下我们的依赖。一般是放开发的辅助工具,不会被打包进业务代码。测试工具,打包工具一般用这个。  --save 会把包的信息写入packge.json文件里的dependencies里,一般是放业务代码的依赖包5、webpack.config.js为webpack的最核心的配置文件entry:js的入口文件externals:外部依赖说明output:目标文件resolve:配置别名module:各种文件,各种loaderhtml: html-webpack-plugin/html-loaderjs: babel-loader + babel-preset-es2015css: style-loader + css-loaderimage + font: url-loaderplugins:插件webpack-dev-server:前端开发服务器 可以在文件改变时,自动刷新浏览器安装:npm install webpack-dev-server --save-dev配置:webpack-dev-server/client?http://localhost:8088 打包进业务代码使用:webpack-dev-server --port 8088 --inline    (--inline 方式webpack-dev-server的client直接用脚本的方式插入到页面)  
1、webpack对脚本的处理1、Js用什么loader加载?1>webpack 本身就支持js的加载,2>通过babel-loader ES2015 加载js,再用 babel-polyfil 做兼容性适配2、如何处理多个入口文件?将entry 写成一个对象的形式:entry: {'common': ['./src/page/common/index.js'],'index': ['./src/page/index/index.js'],}3、output要分文件夹存放目标文件,如何设置?output: {path: path.resolve(__dirname, 'dist'),publicPath:'/dist/',filename: 'js/[name].js'},这样配置的文件会在根目录编译生成dist文件夹,在dist文件夹下创建js文件夹存放打包的js文件4、如何提取公共模块?entry: {'common': ['./src/page/common/index.js']}plugins: [new webpack.optimize.CommonsChunkPlugin({ name: "common",filename: "js/base.js"}),]2、webpack对样式的处理1、样式使用怎样的loader?2、webpack将css打包成js模块,但是css不想在js运行完才开始加载,想把css打包成单独的css文件该如何处理?var ExtractTextPlugin = require("extract-text-webpack-plugin");var config = {module: {loaders: [{test: /.css$/,loader: ExtractTextPlugin.extract("style-loader","css-loader")},{test: /.(png|gif|jpg|woff|svg|eot|ttf|ico)??.*$/,loader: "url-loader?limit=100&name=resource/[name].[ext]"},{test:/.string$/,loader:'html-loader',query:{//告诉html-loader在加载文件的时候做最小化压缩minimize:true,//指定是否要删除属性上的引号removeAttributeQuotes:false}}]},plugins: [//把CSS单独打包到文件里new ExtractTextPlugin('css/[name].css'),//独立通用模块到js/base.jsnew webpack.optimize.CommonsChunkPlugin({name: "common",filename: "js/base.js"}),//html模板的处理new HtmlWebpackPlugin(getHtmlConfig('index',"首页")),]} 3、webpack对html模板如何处理?不对html处理时,会出现什么问题:1、在引入css文件时,在后面是需要加版本号的,并且这个版本号是不能用手工来维护的,每次上线会把这个版本号改掉2、html是在src文件夹下,没有在打包形成的dist文件夹下,在发布的时候会只发布dist文件夹下,而src文件夹下是不管的,所以文件的位置也是不对的处理方法:const HtmlWebpackPlugin = require('html-webpack-plugin');//获取html-webpack-plugin参数的方法var getHtmlConfig=function (name,title) {return {template:'./src/view/'+name+'.html',filename:'view/'+name+'.html',favicon:'./favicon.ico',//inject:true时,不用手动引入js与css文件,它会自动的注入到html页面inject:true,//hash会在我们引入的js与css后面加一个版本号hash:true,chunks:['common',name],title:title};};var config = {plugins: [//html模板的处理new HtmlWebpackPlugin(getHtmlConfig('index',"首页")),new HtmlWebpackPlugin(getHtmlConfig('list',"商品列表")),new HtmlWebpackPlugin(getHtmlConfig('detail',"商品详情"))]} 4、webpack-dev-server 自动编译处理//环境变量的配置dev /onlinevar WEBPACK_ENV=process.env.WEBPACK_ENV||'dev';if('dev'===WEBPACK_ENV){config.entry.common.push('webpack-dev-server/client?http://localhost:8088/');//common 模块时公共模块,已经打包进每一个页面,而webpack-dev-server 需要监控到每一个页面的变化,所以将webpack-dev-server路径添加进common的路径数组中} 
1、mvp模式(Model层Presenter层View层)   Model层:数据层(ajax请求)   Presenter层:呈现层,view逻辑相关的控制层,控制层可以去调Model去发ajax请求。----mvp模式中最主要的部分
Tomcat:基础安装与使用教程 背景 此文记录了 Tomcat 的基本使用方法,主要为了强化记忆。 安装步骤 第一步:下载和安装 Java 下载地址:http://www.oracle.com/te
eclipse安装使用教程 eclipse安装使用教程 很多人都知道要用eclipse来做java开发,但很多的新手朋友却不知道怎么下载和安装eclipse。 下面给你介绍一下怎么下载和安装eclip
数据分析工具R和RStudio入门介绍 R是一个用于统计计算和统计制图的优秀工具,对比SPSS和SAS等付费软件,R具备跨平台、自由、免费、源代码开放、绘图表现和计算能力突出等一系列优点,受到了越来越
Python idle安装与使用教程 调试、下载 今天我们就来讲一下如何安装Python idle编辑器,也它的调试和使用。 第一步,我们先去下载一个Python idle程序安装包。 本节讲的是wi
scala语言简介及其环境安装 简介: 1.运行在JVM 上,兼容java语言 Scala的代码,都需要经过编译为字节码,然后交由Java虚拟机来运行。所以Scala和Java是可以无缝互操作的。Sc