前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >linux下编译安装nginx完整版

linux下编译安装nginx完整版

作者头像
小柒吃地瓜
发布2020-04-23 16:29:40
15K1
发布2020-04-23 16:29:40
举报
文章被收录于专栏:梦在深巷

0x01 Nginx有哪些优点

  • 更快

这表现在两个方面:一方面,在正常情况下,单次请求会得到更快的响应; 另一方在高峰期(如有数以万计的并发请求),Nginx可以比其他Web服务器更快地响应请

  • 高扩展性

Nginx的设计极具扩展性,它完全是由多个不同功能、不同层次、不同类型且耦合度极 低的模块组成。因此,当对某一个模块修复Bug或进行升级时,可以专注于模块自身,无须 在意其他。

  • 高可靠性

Nginx的高可靠性来自于其核心框架代码 的优秀设计、模块设计的简单性;官方提供的常用模块都非常稳定,每个worker进程 相对独立,master进程在1个worker进程出错时可以快速“拉起”新的worker子进程提供服务。

  • 低内存消耗

一般情况下,10000个非活跃的HTTP Keep-Alive连接在Nginx中仅消耗2.5MB的内存,

  • 单机支持10万以上的并发连接

理论上,Nginx支持的并发连接上限取决于内存,10万远未封顶。

  • 热部署

master管理进程与worker工作进程的分离设计,使得Nginx能够提供热部署功能,即可以 在7×24小时不间断服务的前提下,升级Nginx的可执行文件。并且也支持不停止服务就 更新配置项、更换日志文件等功能

  • 环境要求:

linux系统内核需要2.6及以上版本才能使用epoll模型. 而在Linux上使用select或poll来解决事件的多路复用,是无法解决高并发压力问题 的

代码语言:javascript
复制
#查看系统内核版本
[root@localhost xiaoqi]# uname -r
3.10.0-327.el7.x86_64

0x02 安装GCC与dev库

  • GCC编译器:yum install gcc gcc-c++
  • 正则表达式PCRE库:yum install -y pcre pcre-devel
  • zlib压缩库:yum install -y zlib zlib-devel
  • OpenSSL开发库:yum install -y openssl openssl-devel

0x03 安装目录及参数规划

  • nginx安装目录:/etc/nginx
  • nginx配置文件目录:/usr/local/nginx/nginx.conf
  • nginx虚拟服务器配置目录:/usr/local/nginx/vhost/
  • log日志目录:/var/log/nginx/
  • pid文件目录:/var/run/nginx.pid
  • lock锁目录:/var/run/nginx.lock
  • 临时缓存目录:/var/cache/nginx
  • 站点目录:/www/wwwroot/
  • nginx运行用户名:nginx
  • nginx运行用户组:nginx

0x04 configure的命令参数

  • 列出configure包含的参数:./configure --help

通用配置选项解释

选项

解释

--prefix=PATH

Ngi口x 安装的根路径,所有其他的安装路径都要依赖于该选项

--sbin-path=PATH

指定口ginx 二进制文件的路径。如果没有指定,那么这个路径会 依赖于 prefix 选项

--conf-path=PATH

如果在命令行没有指定配置文件,那么将会通过这里指定的路径,nginx 将会去那里查找它的配置文件

--error-log-path=PATH

指定错误文件的路径,nginx 将会往其中写入错误日志文件,除非有其他的配置

--pid-path=PATH

指定的文件将会写入nginx master进程的pid通常卸载/var/run/目录下

--lock-path=PATH

共享储存器互斥锁文件的路径

--user=USER

worker进程运行的用户

--group=GROUP

worker进程运行的用户组

--with-file-aio

为FreeBSD 4.3+和linux 2.6.22+系统启用异步I/O

--with-debug

这个选项用于调试日志,在生产环境的系统中不推荐使用该选项

临时路径配置选项

选项

解释

--error-log-path=PATH

错误日志的默认路径

--http-log-path=PATH

http 访问日志的默认路径

--http-client-body-temp-path=PATH

从客户端收到请求后,该选项设置的目录用于作为请求体 临时存放的目录。如果 WebDAV 模块启用,那么推荐设置 该路径为同 一文件系统上的目录作为最终的目的地

--http-proxy-temp-path=PATH

在使用代理后,通过该选项设置存放临时文件路径

--http-fastcgi-temp-path=PATH

设置 FastCGI 临时文件的目录

--http-uwsgi-temp-path=PATH

设置 uWSG工临时文件的目录

--http-scgi-temp-path=PATH

设置 SCGII临时文件的目录

PCRE的配置参数

选项

解释

--without-pcre

如果确定Nginx不用解析正则表达式,那么可以使用这个参数

--with-pcre

强制使用PCRE库

--with-pcre=DIR

指定PCRE库的源码位置,在编译nginx时会进入该目录编译PCRE源码

--with-pcre-opt=OPTIONS

编译PCRE源码是希望加入的编译选项

OpenSSL的配置参数

选项

解释

--with-openssl=DIR

指定OpenSSL库的源码位置,在编译nginx时会进入该目录编译OpenSSL.如果web服务器需要使用HTTPS,那么Nginx要求必须使用OpenSSL

--with-openssl-opt=OPTIONS

编译OpenSSL源码时希望加入的编译选项

zlib的配置参数

选项

解释

--with-zlib=DIR

指定zlib库的源码位置,在编译nginx时会进入该目录编译zlib.如果需要使用gzip压缩就必须要zlib库的支持

--with-zlib-opt=OPTIONS

编译zlib源码时希望加入的编译选项

--with-zlib-asm=CPU

指定对特定的CPU使用zlib库的汇编优化功能,目前支持两种架构:pentium和pentiumpro.

下列是ngx模块的解释和不常用的参数介绍

代码语言:javascript
复制
  --build=NAME                       set build name
  --builddir=DIR                     set build directory

  --with-select_module               enable select module
  --without-select_module            disable select module
  --with-poll_module                 enable poll module
  --without-poll_module              disable poll module

  --with-threads                     enable thread pool support
  --with-file-aio                    enable file AIO support

  --with-http_ssl_module             enable ngx_http_ssl_module
  --with-http_v2_module              enable ngx_http_v2_module
  --with-http_realip_module          enable ngx_http_realip_module
  --with-http_addition_module        enable ngx_http_addition_module
  --with-http_xslt_module            enable ngx_http_xslt_module
  --with-http_xslt_module=dynamic    enable dynamic ngx_http_xslt_module
  --with-http_image_filter_module    enable ngx_http_image_filter_module
  --with-http_image_filter_module=dynamic
                                     enable dynamic ngx_http_image_filter_module
  --with-http_geoip_module           enable ngx_http_geoip_module
  --with-http_geoip_module=dynamic   enable dynamic ngx_http_geoip_module
  --with-http_sub_module             enable ngx_http_sub_module
  --with-http_dav_module             enable ngx_http_dav_module
  --with-http_flv_module             enable ngx_http_flv_module
  --with-http_mp4_module             enable ngx_http_mp4_module
  --with-http_gunzip_module          enable ngx_http_gunzip_module
  --with-http_gzip_static_module     enable ngx_http_gzip_static_module
  --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
  --with-http_degradation_module     enable ngx_http_degradation_module
  --with-http_slice_module           enable ngx_http_slice_module
  --with-http_stub_status_module     enable ngx_http_stub_status_module

  --without-http_charset_module      disable ngx_http_charset_module
  --without-http_gzip_module         disable ngx_http_gzip_module
  --without-http_ssi_module          disable ngx_http_ssi_module
  --without-http_userid_module       disable ngx_http_userid_module
  --without-http_access_module       disable ngx_http_access_module
  --without-http_auth_basic_module   disable ngx_http_auth_basic_module
  --without-http_mirror_module       disable ngx_http_mirror_module
  --without-http_autoindex_module    disable ngx_http_autoindex_module
  --without-http_geo_module          disable ngx_http_geo_module
  --without-http_map_module          disable ngx_http_map_module
  --without-http_split_clients_module disable ngx_http_split_clients_module
  --without-http_referer_module      disable ngx_http_referer_module
  --without-http_rewrite_module      disable ngx_http_rewrite_module
  --without-http_proxy_module        disable ngx_http_proxy_module
  --without-http_fastcgi_module      disable ngx_http_fastcgi_module
  --without-http_uwsgi_module        disable ngx_http_uwsgi_module
  --without-http_scgi_module         disable ngx_http_scgi_module
  --without-http_grpc_module         disable ngx_http_grpc_module
  --without-http_memcached_module    disable ngx_http_memcached_module
  --without-http_limit_conn_module   disable ngx_http_limit_conn_module
  --without-http_limit_req_module    disable ngx_http_limit_req_module
  --without-http_empty_gif_module    disable ngx_http_empty_gif_module
  --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_random_module
                                     disable ngx_http_upstream_random_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
  --with-http_perl_module=dynamic    enable dynamic ngx_http_perl_module
  --with-perl_modules_path=PATH      set Perl modules path
  --with-perl=PATH                   set perl binary pathname

  --without-http                     disable HTTP server
  --without-http-cache               disable HTTP cache

  --with-mail                        enable POP3/IMAP4/SMTP proxy module
  --with-mail=dynamic                enable dynamic POP3/IMAP4/SMTP proxy module
  --with-mail_ssl_module             enable ngx_mail_ssl_module
  --without-mail_pop3_module         disable ngx_mail_pop3_module
  --without-mail_imap_module         disable ngx_mail_imap_module
  --without-mail_smtp_module         disable ngx_mail_smtp_module

  --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
  --with-stream_realip_module        enable ngx_stream_realip_module
  --with-stream_geoip_module         enable ngx_stream_geoip_module
  --with-stream_geoip_module=dynamic enable dynamic ngx_stream_geoip_module
  --with-stream_ssl_preread_module   enable ngx_stream_ssl_preread_module
  --without-stream_limit_conn_module disable ngx_stream_limit_conn_module
  --without-stream_access_module     disable ngx_stream_access_module
  --without-stream_geo_module        disable ngx_stream_geo_module
  --without-stream_map_module        disable ngx_stream_map_module
  --without-stream_split_clients_module
                                     disable ngx_stream_split_clients_module
  --without-stream_return_module     disable ngx_stream_return_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_random_module
                                     disable ngx_stream_upstream_random_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-compat                      dynamic modules compatibility

  --with-cc=PATH                     set C compiler pathname
  --with-cpp=PATH                    set C preprocessor pathname
  --with-cc-opt=OPTIONS              set additional C compiler options
  --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
                                     
  --with-libatomic                   force libatomic_ops library usage
  --with-libatomic=DIR               set path to libatomic_ops library sources

0x05 Nginx编译步骤

代码语言:javascript
复制
#创建nginx用户与用户组
groupaddd nginx
useradd -g nginx nginx

#解压nginx源码包并进入nginx源码根目录
[root@localhost ~]# tar -axv -f nginx-1.17.0.tar.gz && cd nginx-1.17.0

#生成makefile文件
./configure \
--prefix=/etc/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 \
--http-client-body-temp-path=/var/cache/nginx/client_temp \
--http-proxy-temp-path=/var/cache/nginx/proxy_temp \
--http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp \
--http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp \
--http-scgi-temp-path=/var/cache/nginx/scgi_temp \
--user=nginx \
--group=nginx \
--with-file-aio \
--with-threads \
--with-http_addition_module \
--with-http_auth_request_module \
--with-http_dav_module \
--with-http_flv_module \
--with-http_gunzip_module \
--with-http_gzip_static_module \
--with-http_mp4_module \
--with-http_random_index_module \
--with-http_realip_module \
--with-http_secure_link_module \
--with-http_slice_module \
--with-http_ssl_module \
--with-http_stub_status_module \
--with-http_sub_module \
--with-http_v2_module \
--with-mail \
--with-mail_ssl_module \
--with-stream \
--with-stream_realip_module \
--with-stream_ssl_module \
--with-stream_ssl_preread_module 
  • 正常生成无报错如下:
代码语言:javascript
复制
Configuration summary
  + using threads
  + using system PCRE library
  + using system OpenSSL library
  + using system zlib library

  nginx path prefix: "/etc/nginx"
  nginx binary file: "/usr/sbin/nginx"
  nginx modules path: "/etc/nginx/modules"
  nginx configuration prefix: "/etc/nginx"
  nginx configuration file: "/etc/nginx/nginx.conf"
  nginx pid file: "/var/run/nginx.pid"
  nginx error log file: "/var/log/nginx/error.log"
  nginx http access log file: "/var/log/nginx/access.log"
  nginx http client request body temporary files: "/var/cache/nginx/client_temp"
  nginx http proxy temporary files: "/var/cache/nginx/proxy_temp"
  nginx http fastcgi temporary files: "/var/cache/nginx/fastcgi_temp"
  nginx http uwsgi temporary files: "/var/cache/nginx/uwsgi_temp"
  nginx http scgi temporary files: "/var/cache/nginx/scgi_temp"
  • 编译与安装
代码语言:javascript
复制
make && make install

#安装成功执行以下命令查看nginx版本号
[root@localhost nginx]# nginx -v
nginx version: nginx/1.17.0

0x06 Nginx编译时编译Lua如下

编译步骤

代码语言:javascript
复制
#安装过程如下:
[root@localhost ~]# wget http://luajit.org/download/LuaJIT-2.0.2.tar.gz
[root@localhost ~]# tar -axv -f LuaJIT-2.0.2.tar.gz 
[root@localhost ~]# cd LuaJIT-2.0.2
[root@localhost LuaJIT-2.0.2]# make install PREFIX=/etc/LuaJIT

#添加环境变量
[root@localhost ~]# export LUAJIT_LIB=/etc/LuaJIT/lib
[root@localhost ~]# export LUAJIT_INC=/etc/LuaJIT/include/luajit-2.0

nginx编译加入lua步骤

代码语言:javascript
复制
[root@localhost ~]# wget https://github.com/simplresty/ngx_devel_kit/archive/v0.3.1rc1.zip
[root@localhost ~]# wget https://github.com/openresty/lua-nginx-module/archive/v0.10.9rc7.tar.gz
[root@localhost ~]# tar -axf v0.3.1rc1.tar.gz && tar -zxf v0.10.9rc7.tar.gz
[root@localhost ~]# mv lua-nginx-module-0.10.9rc7/ lua-nginx-module && mv ngx_devel_kit-0.3.1rc1/ ngx_devel_kit

#重新生成makefile加入lua-module和lua-devel
./configure \
--prefix=/etc/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 \
--http-client-body-temp-path=/var/cache/nginx/client_temp \
--http-proxy-temp-path=/var/cache/nginx/proxy_temp \
--http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp \
--http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp \
--http-scgi-temp-path=/var/cache/nginx/scgi_temp \
--user=nginx \
--group=nginx \
--with-compat \
--with-file-aio \
--with-threads \
--with-http_addition_module \
--with-http_auth_request_module \
--with-http_dav_module \
--with-http_flv_module \
--with-http_gunzip_module \
--with-http_gzip_static_module \
--with-http_mp4_module \
--with-http_random_index_module \
--with-http_realip_module \
--with-http_secure_link_module \
--with-http_slice_module \
--with-http_ssl_module \
--with-http_stub_status_module \
--with-http_sub_module \
--with-http_v2_module \
--with-mail \
--with-mail_ssl_module \
--with-stream \
--with-stream_realip_module \
--with-stream_ssl_module \
--with-stream_ssl_preread_module \
--add-module=/root/ngx_devel_kit \
--add-module=/root/lua-nginx-module \
--with-ld-opt="-Wl,-rpath,$LUAJIT_LIB"

#编译安装
[root@localhost nginx-1.17.0]# make -j2 && make install

[root@localhost nginx-1.17.0]# nginx -V
nginx version: nginx/1.17.0
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-36) (GCC) 
built with OpenSSL 1.0.2k-fips  26 Jan 2017
TLS SNI support enabled
configure arguments: --prefix=/etc/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 --http-client-body-temp-path=/var/cache/nginx/client_temp 
--http-proxy-temp-path=/var/cache/nginx/proxy_temp --http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp --http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp 
--http-scgi-temp-path=/var/cache/nginx/scgi_temp --user=nginx --group=nginx --with-compat --with-file-aio --with-threads --with-http_addition_module 
--with-http_auth_request_module --with-http_dav_module --with-http_flv_module --with-http_gunzip_module --with-http_gzip_static_module 
--with-http_mp4_module --with-http_random_index_module --with-http_realip_module --with-http_secure_link_module --with-http_slice_module 
--with-http_ssl_module --with-http_stub_status_module --with-http_sub_module --with-http_v2_module --with-mail --with-mail_ssl_module 
--with-stream --with-stream_realip_module --with-stream_ssl_module --with-stream_ssl_preread_module 
--add-module=/root/ngx_devel_kit --add-module=/root/lua-nginx-module --with-ld-opt=-Wl,-rpath,/etc/LuaJIT/lib
  • nginx -V出来能看到--add-module=/root/ngx_devel_kit --add-module=/root/lua-nginx-module说明lua模块编译安装成功了.

版权属于:龙之介大人

本文链接:https://cloud.tencent.com/developer/article/1619507

本站所有原创文章采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。 您可以自由的转载和修改,但请务必注明文章来源和作者署名并说明文章非原创且不可用于商业目的。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019 年 05 月,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 0x01 Nginx有哪些优点
  • 0x02 安装GCC与dev库
  • 0x03 安装目录及参数规划
  • 0x04 configure的命令参数
    • 通用配置选项解释
      • 临时路径配置选项
        • PCRE的配置参数
          • OpenSSL的配置参数
            • zlib的配置参数
              • 下列是ngx模块的解释和不常用的参数介绍
              • 0x05 Nginx编译步骤
              • 0x06 Nginx编译时编译Lua如下
                • 编译步骤
                  • nginx编译加入lua步骤
                  相关产品与服务
                  云服务器
                  云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
                  领券
                  问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档