如何源码编译安装并控制nginx
安装nginx
注意
Linux操作系统需要2.6及其以上的内核(支持epoll)使用nginx的必备软件
gcc编辑器
yum -y install gcc gcc-c++
pcre库(支持正则表达式)
yum install -y pcre pcre-devel
zlib库(支持gzip压缩传输)
yum install -y zlib zlib-devel
OpenSSL开发库(支持SSL协议)
yum install -y openssl openssl-develLinux内核参数优化方案
配置步骤编译安装
# nginx版本下载链接:http://nginx.org/en/download.html
wget http://nginx.org/download/nginx-1.15.7.tar.gz
tar zxvf nginx-1.15.7.tar.gz
cd nginx-1.15.7
./configure --prefix=/data1/server/nginx --sbin-path=/data1/bin/nginx --user=www --group=www --modules-path=/data1/server/nginx/modules --conf-path=/data1/config/nginx/nginx.conf --error-log-path=/data1/logs/nginx/error.log --http-log-path=/data1/logs/nginx/access.log --pid-path=/data1/tmp/nginx/ngix.pid --lock-path=/data1/tmp/nginx/nginx.lock --with-debug
make
make install
控制nginx
- 启动
- 默认方式启动 /usr/local/nginx/sbin/nginx
- 另行指定配置文件启动 /usr/local/nginx/sbin/nginx -c /tmp/nginx.conf
- 另行指定安装目录启动 /usr/local/nginx/sbin/nginx -p /usr/local/nginx
- 另行指定全局配置项启动 /usr/local/nginx/sbin/nginx -g "pid /var/nginx/test.pid"
- 测试配置信息是否有错误
- /usr/local/nginx/sbin/nginx -t
- 在测试配置阶段不输出信息
- /usr/local/nginx/sbin/nginx -t -q
- 显示版本信息
- /usr/local/nginx/sbin/nginx -v
- 显示编译阶段的参数
- /usr/local/nginx/sbin/nginx -V
- 停止服务
- /usr/local/nginx/sbin/nginx -s stop 或者 kill -s SIGTERM <nginx master pid##
- 重载配置文件
- /usr/local/nginx/sbin/nginx -s reload 或者 kill -s SIGHUP <nginx master pid##
- 日志文件回滚
- /usr/local/nginx/sbin/nginx -s reopen 或者 kil -s SIGUSR1 <nginx master pid##
- 平滑升级nginx
- 通知正在运行的旧版本nginx准备升级 kill -s SIGUSR2 <nginx master pid##
- 重新编译nginx
获取新版nginx源码 wget http://nginx.org/download/nginx-1.15.7.tar.gz
解压 tar zxvf nginx-1.15.7.tar.gz
进入解压目录 cd nginx-1.15.7
配置 ./configure [参数]
编译 make (千万不能运行make install,这样会覆盖安装;make完之后在objs目录下就多了个nginx)
备份旧的nginx程序 cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.bak
覆盖旧的nginx程序 cp -rfp objs/nginx /usr/local/nginx/sbin/nginx
- 显示帮助 nginx -h 或者 nginx -?
nginx编译参数详解
路径相关参数
prefix=PATH # nginx安装部署后的根目录,默认为/usr/local/nginx目录
sbin-path=PATH # 可执行文件的放置路径,默认为<prefix##/scgi_temp
modules-path=PATH # 模块放置路径
conf-path=PATH # nginx.conf配置文件放置路径
error-log-path=PATH # 错误日志放置路径
pid-path=PATH # nginx.pid放置路径
lock-path=PATH # nginx.lock放置路径编译相关参数
with-cc=PATH # C编译器的路径
with-cpp=PATH # C预编辑器的路径
with-cc-opt=OPTIONS # 在nginx编译期间指定加入一些编译选项
with-ld-opt=OPTIONS # 用于加入链接时的参数
with-cpu-opt=CPU # 指定CPU处理器架构,只能从以下取值中选择:pentium、pentiumpro、pentium3、pentium4、athlon、opteron、sparc32、sparc64、ppc64依赖软件的相关参数
pcre
without-pcre # 配置文件关闭正则表达式匹配
with-pcre # 强制使用PCRE库
with-pcre=DIR # 指定pcre库的源码位置,在编译nginx时会进入该目录编译pcre源码
with-pcre-opt=OPTIONS # 编译pcre源码时希望加入的编译选项
with-pcre-jit # 编译PCRE库支持即时编译OpenSSL
with-openssl=DIR # 指定OpenSSL库的源码位置,在编译nginx时会进入该目录编译OpenSSL源码(可以访问http://www.openssl.org下载)
with-openssl-opt=OPTIONS # 编译OpenSSL源码时希望加入的编译选项原子库
with-libatomic # 强制使用atomic库
with-libatomic=DIR # atomic所在的位置zlib库
with-zlib=DIR # 指定zlib库的源码位置,在编译nginx时会进入该目录编译zlib源码
with-zlib-opt=OPTIONS # 编译zlib源码时加入的编译选项
with-zlib-asm=CPU # 指定对特定的CPU使用zlib库的汇编优化功能,目前仅支持两种架构:pentium和pentiumpro
模块相关参数
事件模块(默认情况下安装epoll)
with-select_module # 使用select module处理事件驱动
without-select_module # 不按照select module
with-poll_module # 使用poll module处理事件驱动
without-poll_module # 不安装poll module默认即编译进入nginx的http模块
without-http_charset_module # 不安装http charset module,这个模块可以将服务器发出的http响应重编码
without-http_gzip_module # 不安装http gzip module,在服务器发出的http响应包中,这个模块可以按照配置文件指定的content-type对特定大小的http相应包体执行gzip压缩
without-http_ssi_module # 不安装http ssi module,这个模块可以在向用户返回的http响应包体中加入特定的内容,如html文件中固定的页头和页尾
without-http_userid_module # 不安装http userid module,这个模块可以通过http请求头部信息里的一些字段认证用户信息,以确定请求是否合法
without-http_access_module # 不安装http access module,这个模块可以根据ip地址限制能够访问服务器的客户端
without-http_auth_basic_module # 不安装http auth basic module,这个模块可以提供最简单的用户名/密码认证
without-http_autoindex_module # 不安装http autoindex module,该模块提供简单的目录浏览功能
without-http_geo_module # 不安装http geo module,这个模块可以定义一些变量,这些变量的值将与客户端IP地址关联,这样nginx针对不同的地区的客户端(根据IP地址判断)返回不一样的结果,例如不同地区显示不同语言的网页
without-http_map_module # 不安装http map module,这个模块可以建立一个key/value映射表,不同的key得到相应的value,这样可以针对不同的URL做特殊处理。例如:返回302重定向响应时,URL不同时返回的Location字段也不一样
without-http_split_clients_module # 不安装http split_clients module,这个模块可以根据客户端的信息,例如IP地址、header头、cookie等,来区分处理
without-http_referer_module # 不安装http referer module,这个模块可以根据请求中的referer字段来拒绝请求
without-http_rewrite_module # 不安装http rewrite module, 这个模块提供http请求在nginx服务内部的重定向功能,依赖pcre库
without-http_proxy_module # 不安装http proxy module,这个模块提供基本的http反向代理功能
without-http_fastcgi_module # 不安装http fastcgi module,这个模块提供FastCGI功能
without-http_uwsgi_module # 不安装http uwsgi module,这个模块提供uWSGI功能
without-http_scgi_module # 不安装http scgi module,这个模块提供SCGI功能
without-http_memcached_module # 不安装http memcached module,这个模块可以使得nginx直接由上游的memcached服务读取数据,并简单地适配成HTTP相应返回给客户端
without-http_limit_conn_module # 不安装http limit conn module,这个模块针对某个IP地址限制并发连接数。例如:使nginx对一个IP地址仅允许一个连接
without-http_limit_req_module # 不安装http limit_req module,module,这个模块针对某个IP地址限制并发连接数。
without-http_empty_gif_module # 不安装http empty_gif module,这个模块可以使得nginx在收到无效请求时,立刻返回内存中的1*1像素的GIF图片。这种好处在于,对于明显的无效请求不会去试图浪费服务器资源
without-http_browser_module # 不安装http browser module,这个模块会根据http请求中的user-agent字段(该字段通常由浏览器填写)来识别浏览器
without-http_upstream_hash_module # 不安装http upstream_hash module,在后端集群session共享的情况,这个模块提供当nginx与后端server建立连接时,会根据ip做散列运算来决定与后端哪台server通信,这样可以实现负载均衡
without-http_upstream_ip_hash_module # 不安装http upstream_ip_hash module,这个模块在后端集群session共享时提供当nginx与后端server建立连接时,会根据ip做散列运算来决定与后端哪台server通信,这样可以实现负载均衡默认不会编译进入nginx的http模块
with-http_ssl_module # http ssl module,这个模块使nginx支持ssl协议,提供https服务(确保已配置OpenSSL)
with-http_realip_module # http realip module,这个模块可以从客户端请求里的header信息(如X-real-ip或者X-forwarded-for)中获取真正的客户端ip地址
with-http_addition_module # http addition module,这个模块可以在返回客户端的http包体头部或者尾部增加内容
with-http_xslt_module # http xslt module,这个模块可以使xml格式的数据在发给客户端前加入xsl渲染(确保已安装libxml2和libxslt)
with-http_image_filter_module # http image_filter module,这个模块将符号配置的图片实时压缩为指定大小(width*height)的缩略图再发送给用户,目前支持JPEG、PNG、GIF格式(确保已安装libgd)
with-http_geoip_module # http geoip module,这个模块可以依据MaxMind GeoIP的IP地址数据库对客户端的IP地址得到实际的地理位置信息(确保有MaxMind GeoIP的库文件,访问http://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz获取)
with-http_sub_module # http sub module,这个模块可以在nginx返回客户端的http响应包中将指定的字符串替换为自己需要的字符串
with-http_dav_module # http dav module,这个模块可以让nginx支持webdav标准,如支持webdav协议中的PUT、DELETE、COPY、MOVE、MKCOL等请求
with-http_flv_module # http flv module,这个模块可以在向客户端返回响应时,对FLV格式的视频文件在header头做一些处理,使得客户端可以观看、拖动FLV视频
with-http_mp4_module # http mp4 module,这个模块使客户端可以观看、拖动MP4视频
with-http_gzip_static_module # http gzip_static module,这个模块可以在做gzip压缩前,先查看相同位置是否有已经做过gzip压缩的.gz文件,如果有,就直接返回,这样就可以预先在服务器上做好文档的压缩,给CPU减负
with-http_random_index_module # http random_index module,这个模块在客户端访问某个目录时,随机返回该目录下的任意文件
with-http_secure_link_module # http secure_link module,这个模块提供一种验证请求是否有效的机制。例如:它会验证URL中需要加入的token参数是否属于特定客户端发来的,以及检查时间戳是否过期
with-http_stub_status_module # http stub_status module,这个模块可以让运行中的nginx提供性能统计页面,获取相关的并发连接、请求的信息
with-google_perftools_module # google perftools module,这个模块提供google的性能测试工具邮件代理服务器相关的mail模块
with-mail # 安装邮件服务器反向代理模块,使nginx可以反向代理IMAP、POP3、SMTP等协议。该模块默认不安装
with-mail_ssl_module # 安装mail ssl module。该模块可以使IMAP、POP3、SMTP等协议基于SSL/TLS协议之上使用。该模块默认不安装并依赖于openSSL库
without-mail_pop3_module # 不安装 mail pop module。在使用--with-mail参数后,pop3 module是默认安装的,以使nginx支持pop3协议
without-mail_imap_module # 不安装 mail imap module。在使用--with-mail参数后,imap module是默认安装的,以使nginx支持IMAP协议
without-mail_smtp_module # 不安装 mail smtp module。在使用--with-mail参数后,smtp module是默认安装的,以使nginx支持SMTP协议
其他模块参数
with-debug # 打印debug调试级别日志
add-module=PATH # 当在nginx里加入第三方模块时,通过这个参数指定第三方模块的路径
without-http # 禁用HTTP服务器
without-http-cache # 禁用http服务器里的缓存cache特性
with-file-aio # 启动文件的异步i/o功能来处理磁盘文件,这需要linux内核支持原生的异步i/o
user=USER # 指定nginx worker进程运行时所属的用户
group=GROUP # 指定nginx worker进程运行时所属的组
如何源码编译安装并控制nginx的更多相关文章
- Linux系统 - 源码编译安装Nginx
什么是Nginx? Nginx ("engine x") 是一个高性能的 HTTP 和 反向代理 服务器,也是一个 IMAP/POP3/SMTP 代理服务器,在高连接并发的情况下N ...
- Nginx 最新版源码编译安装 包含常用模块作用及所需依赖
第一部分 Nginx最新版源码编译安装 1. 使用的模块 模块1:http_rewrite_module 基于正则匹配来实现重定向.依赖PCRE库,见依赖1 模块2:http_gzip_module ...
- Centos7通过yum跟源码编译安装Nginx
源码编译安装 http://nginx.org/en/download.html 到官网下载,然后用XFTP上传到root目录 把文件解压出来 tar -zxvf nginx-1.16.0.tar.g ...
- CentOS7 源码编译安装Nginx
源码编译安装nginx 1.下载nginx源码包(这里以nginx-1.18.0为例) wget http://nginx.org/download/nginx-1.18.0.tar.gz 2 ...
- 源码编译安装nginx及设置开机启动项
1.上传nginx文档:解压到/data目录下,并安装依赖包tar xf nginx-1.20.1.tar.gz -C /data/cd /data/nginx-1.20.1/ && ...
- Centos7.X 源码编译安装subversion svn1.8.x
说明:SVN(subversion)的运行方式有两种:一种是基于Apache的http.https网页访问形式:还有一种是基于svnserve的独立服务器模式.SVN的数据存储方式也有两种:一种是在B ...
- 源码编译安装lnmp环境
一.源码编译安装步骤 首先说明源码安装的好处 速度快,可自定义路径 主要有三步:1.配置 进入源码安装包 ./configure --prefix=/uer/local/nginx 可指定参数 ...
- CentOS 7上源码编译安装和配置LNMP Web+phpMyAdmin服务器环境
CentOS 7上源码编译安装和配置LNMP Web+phpMyAdmin服务器环境 什么是LNMP? LNMP(别名LEMP)是指由Linux, Nginx, MySQL/MariaDB, PHP/ ...
- Zabbix 源码编译安装
简介: Zabbix 分布式监控系统,源码编译安装记录 ( 记不得是第多少次了 ) 下载地址:http://jaist.dl.sourceforge.net/project/zabbix/ZABBIX ...
随机推荐
- 在业务控制方法中写入包装User的模型来收集参数
可以在业务控制方法中书写0个或多个模型来收集客户端的参数 1) 如果多个模型中有相同的属性时,可以用user.name或admin.name来收集客户端参数 2) 用一个新的模型将User和Adm ...
- php连接数据库的两种方式- 面向过程 面向对象
php连接数据库的两种方式- 面向过程 面向对象 一.面向对象1. 链接数据库$conn = @new mysqli("127.0.0.1","root", ...
- Vue组件v-if新渲染的组件不更新
Vue组件v-if新渲染的组件不更新:可能原因是Vue识别到是相似组件(高度相似甚至相同)不会更新元素.给原来的组件和新组件分别给不同的key值让Vue识别为不同的组件.
- centos7安装kvm及kvm管理
一.安装kvm 查看CPU是否支持虚拟化 grep -E 'svm|vmx' /proc/cpuinfo - vmx is for Intel processors - svm is for AMD ...
- Mybatis 属性配置
properties 定义配置,配置的属性可以在整个配置文件中的其他位置进行引用 <properties resource="db.properties"></ ...
- C语言递归之对称二叉树
题目描述 给定一个二叉树,检查它是否是镜像对称的. 示例 二叉树 [1,2,2,3,4,4,3] 是对称的. / \ / \ / \ [1,2,2,null,3,null,3] 则不是镜像对称的. / ...
- SecureCRT 8.3注册码下载
SecureCRT注册码是一款针对“SecureCRT 8.3”软件而制作的激活破解工具,可以完美激活“SecureCRT”软件,从而达到免费使用的目的.而SecureCRT则是一款非常优秀的且支持s ...
- Ingreslock后门漏洞
一.简介 1524端口 ingreslock Ingres 数据库管理系统(DBMS)锁定服务 利用telnet命令连接目标主机的1524端口,直接获取root权限. Ingreslock后门程序监听 ...
- 腾讯云远程连接Kafka
腾讯云服务器上部署Kafka,使用server.properties中公网IP配置: 启动时候报错: ERROR [KafkaServer id=0] Fatal error during Kafka ...
- Oracle-DQL 7- 集合操作
集合操作: --将查询结果看作是一个集合,可以将多个查询结果之间用集合操作找出特点的数据--很多的集合操作可以使用条件的组合进行代替,集合操作的效率高于条件组合--某些复杂的查询结果只能通过集合操作得 ...