欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  网络运营

CentOS 7.2安装Nginx 1.10.2的详细教程

程序员文章站 2023-09-03 14:52:24
一、使用yum安装(推荐) 使用yum安装是推荐的方式,整体的流程非常的简单,也不容易出错,如果不需要什么特殊配置,建议使用yum尽进行安装。 1、安装epel...

一、使用yum安装(推荐)

使用yum安装是推荐的方式,整体的流程非常的简单,也不容易出错,如果不需要什么特殊配置,建议使用yum尽进行安装。

1、安装epel-release源并进行安装

yum install epel-release
yum update
yum install nginx

2、执行相关的应用操作

systemctl start nginx #启动
systemctl stop nginx #停止
systemctl restart nginx #重启
systemctl status nginx #查看运行状态
systemctl enable nginx #开机启动

3、设置防火墙

在启动完以后可能无法通过ip访问,需要进一步设置防火墙

firewall-cmd --permanent --zone=public --add-service=http 
firewall-cmd --permanent --zone=public --add-service=https
firewall-cmd --reload

至此,安装完毕。

参考文章:https://www.digitalocean.com/community/tutorials/how-to-install-nginx-on-centos-7

二、通过源码编译安装

1、安装编译所需工具

yum groupinstall "development tools"
yum install wget

2、到官网下载最新的源代码(https://nginx.org/en/)

cd /usr/local/src
wget http://nginx.org/download/nginx-1.10.2.tar.gz
tar zxvf nginx-1.10.2.tar.gz

3、安装依赖包

yum install zlib zlib-devel openssl openssl-devel pcre pcre-devel

      zlib: 为nginx提供gzip模块,需要zlib库支持,传输数据打包,省流量(但消耗资源)

      openssl: 为nginx提供ssl功能

      pcre: 为支持地址重写rewrite功能

4、创建用来运行nginx的用户及组

groupadd nginx
useradd -g nginx -m nginx –s /sbin/nologin

-g参数为nginx用户指定了一个组。-m参数保证其不自动生成home目录。

5、编译源代码

先使用./configure –help 查看编译帮助:

[root@localhost nginx-1.10.2]# ./configure --help
 
 --help        print this message
 
 --prefix=path      set installation prefix #nginx安装的根路径,默认为 /usr/local/nginx。
 --sbin-path=path     set nginx binary pathname #指定nginx二进制文件的路径,默认为path/sbin/nginx。
 --modules-path=path    set modules path #perl模块位置
 --conf-path=path     set nginx.conf pathname #设定nginx配置文件地址,默认为path/conf/nginx.conf。
 --error-log-path=path    set error log pathname #错误文件路径,默认为 path/logs/error.log。
 --pid-path=path     set nginx.pid pathname # master进程pid写入的文件位置,通常在var/run下,默认为 path/logs/nginx.pid。
 --lock-path=path     set nginx.lock pathname #共享存储器互斥锁文件路径
 
 --user=user      set non-privileged user for worker processes #指定程序运行时的非特权用户
 --group=group      set non-privileged group for worker processes #指定程序运行时的非特权用户组
 
 --build=name      set build name #编译名称
 --builddir=dir      set build directory #指向编译目录
 
 --with-select_module    enable select module 允许或不允许开启select模式,如果configure没有找到合适的模式,比如,kqueue(sun os)、epoll(linux kenel 2.6+)、rtsig(实时信号)
 --without-select_module   disable select module 禁用select模块支持
 --with-poll_module     enable poll module 启用poll模块支持(功能与select相同,与select特性相同,为一种轮询模式,不推荐在高载环境下使用)
 --without-poll_module    disable poll module 禁用poll模块支持
 
 --with-threads      enable thread pool support
 
 --with-file-aio     enable file aio support #为freebsd4.3+和linux2.6.22+系统启用异步io
 
 --with-ipv6      enable ipv6 support #启用ipv6支持
 
#默认禁用的模块
 --with-http_ssl_module    enable ngx_http_ssl_module #使支持https请求,需已安装openssl
 --with-http_v2_module    enable ngx_http_v2_module #启用http v2
 --with-http_realip_module   enable ngx_http_realip_module #此模块支持显示真实来源ip地址,主要用于nginx做前端负载均衡服务器使用
 --with-http_addition_module  enable ngx_http_addition_module #输出过滤器,使你能够在请求经过一个location前或后时在该location本身添加内容
 --with-http_xslt_module   enable ngx_http_xslt_module #这个模块是一个过滤器,它可以通过xslt模板转换xml应答
 --with-http_xslt_module=dynamic enable dynamic ngx_http_xslt_module 
 --with-http_image_filter_module enable ngx_http_image_filter_module #图像过滤器,在将图像投递到客户之前进行处理(需要libgd库)
 --with-http_image_filter_module=dynamic
          enable dynamic ngx_http_image_filter_module 
 --with-http_geoip_module   enable ngx_http_geoip_module #创建基于与maxmind geoip相配的客户端地址
 --with-http_geoip_module=dynamic enable dynamic ngx_http_geoip_module
 --with-http_sub_module    enable ngx_http_sub_module #这个模块可以能够在nginx的应答中搜索并替换文本
 --with-http_dav_module    enable ngx_http_dav_module #为文件和目录指定权限,限制不同类型的用户对于页面有不同的操作权限
 --with-http_flv_module    enable ngx_http_flv_module #这个模块支持对flv(flash)文件的拖动播放
 --with-http_mp4_module    enable ngx_http_mp4_module #支持h.264/aac文件为伪流媒体
 --with-http_gunzip_module   enable ngx_http_gunzip_module #对于不支持gzip编码的客户,该模块用于为客户解压缩预压缩内容
 --with-http_gzip_static_module  enable ngx_http_gzip_static_module #这个模块在一个预压缩文件传送到开启gzip压缩的客户端之前检查是否已经存在以“.gz”结尾的压缩文件,这样可以防止文件被重复压缩
 --with-http_auth_request_module enable ngx_http_auth_request_module 
 --with-http_random_index_module enable ngx_http_random_index_module #从目录中选择一个随机主页
 --with-http_secure_link_module  enable ngx_http_secure_link_module #该模块提供一种机制,它会将一个哈希值链接到一个url中,因此,只有那些使用正确的密码能够计算链接
 --with-http_degradation_module  enable ngx_http_degradation_module #允许在内存不足的情况下返回204或444码
 --with-http_slice_module   enable ngx_http_slice_module 
 --with-http_stub_status_module  enable ngx_http_stub_status_module #取得一些nginx的运行状态,输出的状态信息可使用rrdtool或类似的工具绘制成图
#默认启用的模块
 --without-http_charset_module  disable ngx_http_charset_module #重新编码web页面
 --without-http_gzip_module   disable ngx_http_gzip_module #同-with-http_gzip_static_module功能一样
 --without-http_ssi_module   disable ngx_http_ssi_module #提供在输入端处理处理服务器包含文件(ssi)的过滤器,目前支持ssi命令的列表是不完整的
 --without-http_userid_module  disable ngx_http_userid_module #用来处理用来确定客户端后续请求的cookies
 --without-http_access_module  disable ngx_http_access_module #供了一个简单的基于主机的访问控制。允许/拒绝基于ip地址
 --without-http_auth_basic_module disable ngx_http_auth_basic_module #可以使用用户名和密码基于http基本认证方法来保护你的站点或其部分内容
 --without-http_autoindex_module disable ngx_http_autoindex_module #自动生成目录列表,只在ngx_http_index_module模块未找到索引文件时发出请求。
 --without-http_geo_module   disable ngx_http_geo_module #创建一些变量,其值依赖于客户端的ip地址
 --without-http_map_module   disable ngx_http_map_module #使用任意的键/值对设置配置变量
 --without-http_split_clients_module disable ngx_http_split_clients_module #用来基于某些条件划分用户。条件如:ip地址、报头、cookies等等
 --without-http_referer_module  disable ngx_http_referer_module #用来过滤请求,拒绝报头中referer值不正确的请求
 --without-http_rewrite_module  disable ngx_http_rewrite_module #允许使用正则表达式改变uri,并且根据变量来转向以及选择配置
 --without-http_proxy_module  disable ngx_http_proxy_module #有关代理服务器
 --without-http_fastcgi_module  disable ngx_http_fastcgi_module #允许nginx 与fastcgi 进程交互,并通过传递参数来控制fastcgi 进程工作。
 --without-http_uwsgi_module  disable ngx_http_uwsgi_module #用来使用uwsgi协议,uwsgi服务器相关
 --without-http_scgi_module   disable ngx_http_scgi_module #用来启用scgi协议支持,scgi协议是cgi协议的替代。
 --without-http_memcached_module disable ngx_http_memcached_module #用来提供简单的缓存,以提高系统效率
 --without-http_limit_conn_module disable ngx_http_limit_conn_module #允许你对于一个地址进行连接数的限制用一个给定的session或一个特定的事件
 --without-http_limit_req_module disable ngx_http_limit_req_module #允许你对于一个地址进行请求数量的限制用一个给定的session或一个特定的事件
 --without-http_empty_gif_module disable ngx_http_empty_gif_module #在内存中常驻了一个1*1的透明gif图像,可以被非常快速的调用
 --without-http_browser_module  disable ngx_http_browser_module #用来创建依赖于请求报头的值
 --without-http_upstream_hash_module
          disable ngx_http_upstream_hash_module #用于简单的负载均衡
 --without-http_upstream_ip_hash_module
          disable ngx_http_upstream_ip_hash_module 
 --without-http_upstream_least_conn_module
          disable ngx_http_upstream_least_conn_module 
 --without-http_upstream_keepalive_module
          disable ngx_http_upstream_keepalive_module
 --without-http_upstream_zone_module
          disable ngx_http_upstream_zone_module
 
 --with-http_perl_module   enable ngx_http_perl_module #这个模块允许nginx使用ssi调用perl或直接执行perl(使用会降低性能)
 --with-http_perl_module=dynamic enable dynamic ngx_http_perl_module
 --with-perl_modules_path=path  set perl modules path #设定perl模块路径
 --with-perl=path     set perl binary pathname #设定perl库文件路径
 
 --http-log-path=path    set http access log pathname #设定access log路径
 --http-client-body-temp-path=path set path to store http client request body temporary files #设定http客户端请求临时文件路径
 --http-proxy-temp-path=path  set path to store http proxy temporary files #设定http代理临时文件路径
 --http-fastcgi-temp-path=path  set path to store http fastcgi temporary files #设定http fastcgi临时文件路径
 --http-uwsgi-temp-path=path  set path to store http uwsgi temporary files #设定http uwsgi临时文件路径
 --http-scgi-temp-path=path   set path to store http scgi temporary files #设定http scgi临时文件路径
 
 --without-http      disable http server #完全禁用http模块,如果只想支持mall,可以使用此项设置
 --without-http-cache    disable http cache #在使用upstream模块时,nginx能够配置本地缓存内容,此选项可禁用缓存
 
 --with-mail      enable pop3/imap4/smtp proxy module #激活pop3/imap4/smtp代理模块,默认未激活
 --with-mail=dynamic    enable dynamic pop3/imap4/smtp proxy module
 --with-mail_ssl_module    enable ngx_mail_ssl_module #smtp可以使用ssl/tls.配置已经定义了http ssl模块,但是不支持客户端证书检测
 --without-mail_pop3_module   disable ngx_mail_pop3_module #启用mail模块后,单独禁用pop3模块
 --without-mail_imap_module   disable ngx_mail_imap_module #启用mail模块后,单独禁用imap模块
 --without-mail_smtp_module   disable ngx_mail_smtp_module #启用mail模块后,单独禁用smtp模块
 
 --with-stream      enable tcp/udp proxy module
 --with-stream=dynamic    enable dynamic tcp/udp proxy module
 --with-stream_ssl_module   enable ngx_stream_ssl_module
 --without-stream_limit_conn_module disable ngx_stream_limit_conn_module
 --without-stream_access_module  disable ngx_stream_access_module
 --without-stream_upstream_hash_module
          disable ngx_stream_upstream_hash_module
 --without-stream_upstream_least_conn_module
          disable ngx_stream_upstream_least_conn_module
 --without-stream_upstream_zone_module
          disable ngx_stream_upstream_zone_module
 
 --with-google_perftools_module  enable ngx_google_perftools_module #调试用,剖析程序性能瓶颈
 --with-cpp_test_module    enable ngx_cpp_test_module
 
 --add-module=path     enable external module #启用外部模块支持
 --add-dynamic-module=path   enable dynamic external module
#编译相关的参数
 --with-cc=path      set c compiler pathname #如果想设置一个不在默认path下的c编译器
 --with-cpp=path     set c preprocessor pathname #设置c预处理器的相对路径
 --with-cc-opt=options    set additional c compiler options #设置c编译器参数
 --with-ld-opt=options    set additional linker options #包含连接库的路径和运行路径
 --with-cpu-opt=cpu     build for the specified cpu, valid values:pentium, pentiumpro, pentium3, pentium4,athlon, opteron, sparc32, sparc64, ppc64 #指定编译的cpu
 
 --without-pcre      disable pcre library usage #禁用pcre库
 --with-pcre      force pcre library usage #启用pcre库
 --with-pcre=dir     set path to pcre library sources #指向pcre库文件目录
 --with-pcre-opt=options   set additional build options for pcre #在编译时为pcre库设置附加参数
 --with-pcre-jit     build pcre with jit compilation support
 
 --with-md5=dir      set path to md5 library sources #指向md5库文件目录
 --with-md5-opt=options    set additional build options for md5 #在编译时为md5库设置附加参数
 --with-md5-asm      use md5 assembler sources #使用md5汇编源
 
 --with-sha1=dir     set path to sha1 library sources #指向sha1库目录
 --with-sha1-opt=options   set additional build options for sha1 #在编译时为sha1库设置附加参数
 --with-sha1-asm     use sha1 assembler sources #使用sha1汇编源
 
 --with-zlib=dir     set path to zlib library sources #指向zlib库目录
 --with-zlib-opt=options   set additional build options for zlib #在编译时为zlib设置附加参数
 --with-zlib-asm=cpu    use zlib assembler sources optimized for the specified cpu, valid values: pentium, pentiumpro #为指定的cpu使用zlib汇编源进行优化
 
 --with-libatomic     force libatomic_ops library usage # 为原子内存的更新操作的实现提供一个架构
 --with-libatomic=dir    set path to libatomic_ops library sources #指向libatomic_ops安装目录
 
 --with-openssl=dir     set path to openssl library sources #指向openssl安装目录
 --with-openssl-opt=options   set additional build options for openssl #在编译时为openssl设置附加参数
 
 --with-debug      enable debug logging #启用debug日志

设置编译参数:

./configure \
--prefix=/usr/local/nginx \
--sbin-path=/usr/sbin/nginx \
--conf-path=/etc/nginx/nginx.conf \
--error-log-path=/var/log/nginx/error.log \
--http-log-path=/var/log/nginx/access.log \
--pid-path=/var/run/nginx.pid \
--lock-path=/var/run/nginx.lock \
--user=nginx \
--group=nginx \
--with-http_ssl_module \
--with-pcre \
--with-http_v2_module \
--with-http_realip_module \
--with-http_addition_module \
--with-http_sub_module \
--with-http_dav_module \
--with-http_gunzip_module \
--with-http_gzip_static_module \
--with-http_random_index_module \
--with-http_secure_link_module \
--with-http_stub_status_module \
--with-http_auth_request_module

然后执行 make && make install  完成安装后在 centos7 中为nginx的启动、重启、重载配置添加脚本:

vi /usr/lib/systemd/system/nginx

添加内容:

[unit]
description=nginx - high performance web server
documentation=http://nginx.org/en/docs/
after=network.target remote-fs.target nss-lookup.target
 
[service]
type=forking
pidfile=/var/run/nginx.pid
execstartpre=/usr/sbin/nginx -t -c /etc/nginx/nginx.conf
execstart=/usr/sbin/nginx -c /etc/nginx/nginx.conf
execreload=/bin/kill -s hup $mainpid
execstop=/bin/kill -s quit $mainpid
privatetmp=true
 
[install]
wantedby=multi-user.target

相关操作:

systemctl is-enabled nginx.service #查询nginx是否开机启动
systemctl enable nginx.service #开机运行nginx
systemctl disable nginx.service #取消开机运行nginx
systemctl start nginx.service #启动nginx
systemctl stop nginx.service #停止nginx
systemctl restart nginx.service #重启nginx
systemctl reload nginx.service #重新加载nginx配置文件
systemctl status nginx.service #查询nginx运行状态
systemctl --failed #显示启动失败的服务

总结

以上就是centos 7.2安装nginx 1.10.2的详细教程,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流。