Linux

CentOS7编译安装Nginx

Nginx (engine x) 是一个高性能的HTTP和反向代理服务,也是一个IMAP/POP3/SMTP服务。Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点(俄文:Рамблер)开发的,第一个公开版本0.1.0发布于2004年10月4日。
其将源代码以类BSD许可证的形式发布,因它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名。2011年6月1日,nginx 1.0.4发布。
Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行。其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。

首先,访问nginx的网站(http://nginx.org/en/download.html),获取相关版本的下载地址,如下图:

其中,mainline version为主线版本,也就是stable version为稳定版本,一般建议下载稳定版本(stable version),主线版本也就是最新版,可能有些不稳定的地方,可以根据自己的需求来选择合适自己的版本,右键复制链接即可。

  1. wget http://nginx.org/download/nginx-1.14.2.tar.gz   
  2. tar zxvf nginx-1.14.2.tar.gz  
  3. cd nginx-1.14.2  

详细目录如下:


  • 详细目录树(点击可折叠)


    [root@nginx-01 ~]# tree nginx-1.14.2
    nginx-1.14.2
    ├── auto
    │   ├── cc
    │   │   ├── acc
    │   │   ├── bcc
    │   │   ├── ccc
    │   │   ├── clang
    │   │   ├── conf
    │   │   ├── gcc
    │   │   ├── icc
    │   │   ├── msvc
    │   │   ├── name
    │   │   ├── owc
    │   │   └── sunc
    │   ├── define
    │   ├── endianness
    │   ├── feature
    │   ├── have
    │   ├── have_headers
    │   ├── headers
    │   ├── include
    │   ├── init
    │   ├── install
    │   ├── lib
    │   │   ├── conf
    │   │   ├── geoip
    │   │   │   └── conf
    │   │   ├── google-perftools
    │   │   │   └── conf
    │   │   ├── libatomic
    │   │   │   ├── conf
    │   │   │   └── make
    │   │   ├── libgd
    │   │   │   └── conf
    │   │   ├── libxslt
    │   │   │   └── conf
    │   │   ├── make
    │   │   ├── openssl
    │   │   │   ├── conf
    │   │   │   ├── make
    │   │   │   ├── makefile.bcc
    │   │   │   └── makefile.msvc
    │   │   ├── pcre
    │   │   │   ├── conf
    │   │   │   ├── make
    │   │   │   ├── makefile.bcc
    │   │   │   ├── makefile.msvc
    │   │   │   └── makefile.owc
    │   │   ├── perl
    │   │   │   ├── conf
    │   │   │   └── make
    │   │   └── zlib
    │   │   ├── conf
    │   │   ├── make
    │   │   ├── makefile.bcc
    │   │   ├── makefile.msvc
    │   │   └── makefile.owc
    │   ├── make
    │   ├── module
    │   ├── modules
    │   ├── nohave
    │   ├── options
    │   ├── os
    │   │   ├── conf
    │   │   ├── darwin
    │   │   ├── freebsd
    │   │   ├── linux
    │   │   ├── solaris
    │   │   └── win32
    │   ├── sources
    │   ├── stubs
    │   ├── summary
    │   ├── threads
    │   ├── types
    │   │   ├── sizeof
    │   │   ├── typedef
    │   │   ├── uintptr_t
    │   │   └── value
    │   └── unix
    ├── CHANGES
    ├── CHANGES.ru
    ├── conf
    │   ├── fastcgi.conf
    │   ├── fastcgi_params
    │   ├── koi-utf
    │   ├── koi-win
    │   ├── mime.types
    │   ├── nginx.conf
    │   ├── scgi_params
    │   ├── uwsgi_params
    │   └── win-utf
    ├── configure
    ├── contrib
    │   ├── geo2nginx.pl
    │   ├── README
    │   ├── unicode2nginx
    │   │   ├── koi-utf
    │   │   ├── unicode-to-nginx.pl
    │   │   └── win-utf
    │   └── vim
    │   ├── ftdetect
    │   │   └── nginx.vim
    │   ├── ftplugin
    │   │   └── nginx.vim
    │   ├── indent
    │   │   └── nginx.vim
    │   └── syntax
    │   └── nginx.vim
    ├── html
    │   ├── 50x.html
    │   └── index.html
    ├── LICENSE
    ├── man
    │   └── nginx.8
    ├── README
    └── src
    ├── core
    │   ├── nginx.c
    │   ├── nginx.h
    │   ├── ngx_array.c
    │   ├── ngx_array.h
    │   ├── ngx_buf.c
    │   ├── ngx_buf.h
    │   ├── ngx_conf_file.c
    │   ├── ngx_conf_file.h
    │   ├── ngx_config.h
    │   ├── ngx_connection.c
    │   ├── ngx_connection.h
    │   ├── ngx_core.h
    │   ├── ngx_cpuinfo.c
    │   ├── ngx_crc32.c
    │   ├── ngx_crc32.h
    │   ├── ngx_crc.h
    │   ├── ngx_crypt.c
    │   ├── ngx_crypt.h
    │   ├── ngx_cycle.c
    │   ├── ngx_cycle.h
    │   ├── ngx_file.c
    │   ├── ngx_file.h
    │   ├── ngx_hash.c
    │   ├── ngx_hash.h
    │   ├── ngx_inet.c
    │   ├── ngx_inet.h
    │   ├── ngx_list.c
    │   ├── ngx_list.h
    │   ├── ngx_log.c
    │   ├── ngx_log.h
    │   ├── ngx_md5.c
    │   ├── ngx_md5.h
    │   ├── ngx_module.c
    │   ├── ngx_module.h
    │   ├── ngx_murmurhash.c
    │   ├── ngx_murmurhash.h
    │   ├── ngx_open_file_cache.c
    │   ├── ngx_open_file_cache.h
    │   ├── ngx_output_chain.c
    │   ├── ngx_palloc.c
    │   ├── ngx_palloc.h
    │   ├── ngx_parse.c
    │   ├── ngx_parse.h
    │   ├── ngx_parse_time.c
    │   ├── ngx_parse_time.h
    │   ├── ngx_proxy_protocol.c
    │   ├── ngx_proxy_protocol.h
    │   ├── ngx_queue.c
    │   ├── ngx_queue.h
    │   ├── ngx_radix_tree.c
    │   ├── ngx_radix_tree.h
    │   ├── ngx_rbtree.c
    │   ├── ngx_rbtree.h
    │   ├── ngx_regex.c
    │   ├── ngx_regex.h
    │   ├── ngx_resolver.c
    │   ├── ngx_resolver.h
    │   ├── ngx_rwlock.c
    │   ├── ngx_rwlock.h
    │   ├── ngx_sha1.c
    │   ├── ngx_sha1.h
    │   ├── ngx_shmtx.c
    │   ├── ngx_shmtx.h
    │   ├── ngx_slab.c
    │   ├── ngx_slab.h
    │   ├── ngx_spinlock.c
    │   ├── ngx_string.c
    │   ├── ngx_string.h
    │   ├── ngx_syslog.c
    │   ├── ngx_syslog.h
    │   ├── ngx_thread_pool.c
    │   ├── ngx_thread_pool.h
    │   ├── ngx_times.c
    │   └── ngx_times.h
    ├── event
    │   ├── modules
    │   │   ├── ngx_devpoll_module.c
    │   │   ├── ngx_epoll_module.c
    │   │   ├── ngx_eventport_module.c
    │   │   ├── ngx_kqueue_module.c
    │   │   ├── ngx_poll_module.c
    │   │   ├── ngx_select_module.c
    │   │   └── ngx_win32_select_module.c
    │   ├── ngx_event_accept.c
    │   ├── ngx_event.c
    │   ├── ngx_event_connect.c
    │   ├── ngx_event_connect.h
    │   ├── ngx_event.h
    │   ├── ngx_event_openssl.c
    │   ├── ngx_event_openssl.h
    │   ├── ngx_event_openssl_stapling.c
    │   ├── ngx_event_pipe.c
    │   ├── ngx_event_pipe.h
    │   ├── ngx_event_posted.c
    │   ├── ngx_event_posted.h
    │   ├── ngx_event_timer.c
    │   └── ngx_event_timer.h
    ├── http
    │   ├── modules
    │   │   ├── ngx_http_access_module.c
    │   │   ├── ngx_http_addition_filter_module.c
    │   │   ├── ngx_http_auth_basic_module.c
    │   │   ├── ngx_http_auth_request_module.c
    │   │   ├── ngx_http_autoindex_module.c
    │   │   ├── ngx_http_browser_module.c
    │   │   ├── ngx_http_charset_filter_module.c
    │   │   ├── ngx_http_chunked_filter_module.c
    │   │   ├── ngx_http_dav_module.c
    │   │   ├── ngx_http_degradation_module.c
    │   │   ├── ngx_http_empty_gif_module.c
    │   │   ├── ngx_http_fastcgi_module.c
    │   │   ├── ngx_http_flv_module.c
    │   │   ├── ngx_http_geoip_module.c
    │   │   ├── ngx_http_geo_module.c
    │   │   ├── ngx_http_grpc_module.c
    │   │   ├── ngx_http_gunzip_filter_module.c
    │   │   ├── ngx_http_gzip_filter_module.c
    │   │   ├── ngx_http_gzip_static_module.c
    │   │   ├── ngx_http_headers_filter_module.c
    │   │   ├── ngx_http_image_filter_module.c
    │   │   ├── ngx_http_index_module.c
    │   │   ├── ngx_http_limit_conn_module.c
    │   │   ├── ngx_http_limit_req_module.c
    │   │   ├── ngx_http_log_module.c
    │   │   ├── ngx_http_map_module.c
    │   │   ├── ngx_http_memcached_module.c
    │   │   ├── ngx_http_mirror_module.c
    │   │   ├── ngx_http_mp4_module.c
    │   │   ├── ngx_http_not_modified_filter_module.c
    │   │   ├── ngx_http_proxy_module.c
    │   │   ├── ngx_http_random_index_module.c
    │   │   ├── ngx_http_range_filter_module.c
    │   │   ├── ngx_http_realip_module.c
    │   │   ├── ngx_http_referer_module.c
    │   │   ├── ngx_http_rewrite_module.c
    │   │   ├── ngx_http_scgi_module.c
    │   │   ├── ngx_http_secure_link_module.c
    │   │   ├── ngx_http_slice_filter_module.c
    │   │   ├── ngx_http_split_clients_module.c
    │   │   ├── ngx_http_ssi_filter_module.c
    │   │   ├── ngx_http_ssi_filter_module.h
    │   │   ├── ngx_http_ssl_module.c
    │   │   ├── ngx_http_ssl_module.h
    │   │   ├── ngx_http_static_module.c
    │   │   ├── ngx_http_stub_status_module.c
    │   │   ├── ngx_http_sub_filter_module.c
    │   │   ├── ngx_http_try_files_module.c
    │   │   ├── ngx_http_upstream_hash_module.c
    │   │   ├── ngx_http_upstream_ip_hash_module.c
    │   │   ├── ngx_http_upstream_keepalive_module.c
    │   │   ├── ngx_http_upstream_least_conn_module.c
    │   │   ├── ngx_http_upstream_zone_module.c
    │   │   ├── ngx_http_userid_filter_module.c
    │   │   ├── ngx_http_uwsgi_module.c
    │   │   ├── ngx_http_xslt_filter_module.c
    │   │   └── perl
    │   │   ├── Makefile.PL
    │   │   ├── nginx.pm
    │   │   ├── nginx.xs
    │   │   ├── ngx_http_perl_module.c
    │   │   ├── ngx_http_perl_module.h
    │   │   └── typemap
    │   ├── ngx_http.c
    │   ├── ngx_http_cache.h
    │   ├── ngx_http_config.h
    │   ├── ngx_http_copy_filter_module.c
    │   ├── ngx_http_core_module.c
    │   ├── ngx_http_core_module.h
    │   ├── ngx_http_file_cache.c
    │   ├── ngx_http.h
    │   ├── ngx_http_header_filter_module.c
    │   ├── ngx_http_parse.c
    │   ├── ngx_http_postpone_filter_module.c
    │   ├── ngx_http_request_body.c
    │   ├── ngx_http_request.c
    │   ├── ngx_http_request.h
    │   ├── ngx_http_script.c
    │   ├── ngx_http_script.h
    │   ├── ngx_http_special_response.c
    │   ├── ngx_http_upstream.c
    │   ├── ngx_http_upstream.h
    │   ├── ngx_http_upstream_round_robin.c
    │   ├── ngx_http_upstream_round_robin.h
    │   ├── ngx_http_variables.c
    │   ├── ngx_http_variables.h
    │   ├── ngx_http_write_filter_module.c
    │   └── v2
    │   ├── ngx_http_v2.c
    │   ├── ngx_http_v2_encode.c
    │   ├── ngx_http_v2_filter_module.c
    │   ├── ngx_http_v2.h
    │   ├── ngx_http_v2_huff_decode.c
    │   ├── ngx_http_v2_huff_encode.c
    │   ├── ngx_http_v2_module.c
    │   ├── ngx_http_v2_module.h
    │   └── ngx_http_v2_table.c
    ├── mail
    │   ├── ngx_mail_auth_http_module.c
    │   ├── ngx_mail.c
    │   ├── ngx_mail_core_module.c
    │   ├── ngx_mail.h
    │   ├── ngx_mail_handler.c
    │   ├── ngx_mail_imap_handler.c
    │   ├── ngx_mail_imap_module.c
    │   ├── ngx_mail_imap_module.h
    │   ├── ngx_mail_parse.c
    │   ├── ngx_mail_pop3_handler.c
    │   ├── ngx_mail_pop3_module.c
    │   ├── ngx_mail_pop3_module.h
    │   ├── ngx_mail_proxy_module.c
    │   ├── ngx_mail_smtp_handler.c
    │   ├── ngx_mail_smtp_module.c
    │   ├── ngx_mail_smtp_module.h
    │   ├── ngx_mail_ssl_module.c
    │   └── ngx_mail_ssl_module.h
    ├── misc
    │   ├── ngx_cpp_test_module.cpp
    │   └── ngx_google_perftools_module.c
    ├── os
    │   └── unix
    │   ├── ngx_alloc.c
    │   ├── ngx_alloc.h
    │   ├── ngx_atomic.h
    │   ├── ngx_channel.c
    │   ├── ngx_channel.h
    │   ├── ngx_daemon.c
    │   ├── ngx_darwin_config.h
    │   ├── ngx_darwin.h
    │   ├── ngx_darwin_init.c
    │   ├── ngx_darwin_sendfile_chain.c
    │   ├── ngx_dlopen.c
    │   ├── ngx_dlopen.h
    │   ├── ngx_errno.c
    │   ├── ngx_errno.h
    │   ├── ngx_file_aio_read.c
    │   ├── ngx_files.c
    │   ├── ngx_files.h
    │   ├── ngx_freebsd_config.h
    │   ├── ngx_freebsd.h
    │   ├── ngx_freebsd_init.c
    │   ├── ngx_freebsd_sendfile_chain.c
    │   ├── ngx_gcc_atomic_amd64.h
    │   ├── ngx_gcc_atomic_ppc.h
    │   ├── ngx_gcc_atomic_sparc64.h
    │   ├── ngx_gcc_atomic_x86.h
    │   ├── ngx_linux_aio_read.c
    │   ├── ngx_linux_config.h
    │   ├── ngx_linux.h
    │   ├── ngx_linux_init.c
    │   ├── ngx_linux_sendfile_chain.c
    │   ├── ngx_os.h
    │   ├── ngx_posix_config.h
    │   ├── ngx_posix_init.c
    │   ├── ngx_process.c
    │   ├── ngx_process_cycle.c
    │   ├── ngx_process_cycle.h
    │   ├── ngx_process.h
    │   ├── ngx_readv_chain.c
    │   ├── ngx_recv.c
    │   ├── ngx_send.c
    │   ├── ngx_setaffinity.c
    │   ├── ngx_setaffinity.h
    │   ├── ngx_setproctitle.c
    │   ├── ngx_setproctitle.h
    │   ├── ngx_shmem.c
    │   ├── ngx_shmem.h
    │   ├── ngx_socket.c
    │   ├── ngx_socket.h
    │   ├── ngx_solaris_config.h
    │   ├── ngx_solaris.h
    │   ├── ngx_solaris_init.c
    │   ├── ngx_solaris_sendfilev_chain.c
    │   ├── ngx_sunpro_amd64.il
    │   ├── ngx_sunpro_atomic_sparc64.h
    │   ├── ngx_sunpro_sparc64.il
    │   ├── ngx_sunpro_x86.il
    │   ├── ngx_thread_cond.c
    │   ├── ngx_thread.h
    │   ├── ngx_thread_id.c
    │   ├── ngx_thread_mutex.c
    │   ├── ngx_time.c
    │   ├── ngx_time.h
    │   ├── ngx_udp_recv.c
    │   ├── ngx_udp_send.c
    │   ├── ngx_udp_sendmsg_chain.c
    │   ├── ngx_user.c
    │   ├── ngx_user.h
    │   └── ngx_writev_chain.c
    └── stream
    ├── ngx_stream_access_module.c
    ├── ngx_stream.c
    ├── ngx_stream_core_module.c
    ├── ngx_stream_geoip_module.c
    ├── ngx_stream_geo_module.c
    ├── ngx_stream.h
    ├── ngx_stream_handler.c
    ├── ngx_stream_limit_conn_module.c
    ├── ngx_stream_log_module.c
    ├── ngx_stream_map_module.c
    ├── ngx_stream_proxy_module.c
    ├── ngx_stream_realip_module.c
    ├── ngx_stream_return_module.c
    ├── ngx_stream_script.c
    ├── ngx_stream_script.h
    ├── ngx_stream_split_clients_module.c
    ├── ngx_stream_ssl_module.c
    ├── ngx_stream_ssl_module.h
    ├── ngx_stream_ssl_preread_module.c
    ├── ngx_stream_upstream.c
    ├── ngx_stream_upstream.h
    ├── ngx_stream_upstream_hash_module.c
    ├── ngx_stream_upstream_least_conn_module.c
    ├── ngx_stream_upstream_round_robin.c
    ├── ngx_stream_upstream_round_robin.h
    ├── ngx_stream_upstream_zone_module.c
    ├── ngx_stream_variables.c
    ├── ngx_stream_variables.h
    └── ngx_stream_write_filter_module.c

    37 directories, 397 files



其中auto目录主要是配合configure文件,在编译的时候适配不同的操作系统版本,包含不同的模块。
CHANGES文件是记录不同版本的改动,BUG等情况。
CHANGES.su是俄罗斯语言的CHANGES,因为作者是俄罗斯人。
conf目录是一个示例目录,包含一些常用的配置文件,方便运维人员在安装后快速使用。
configure文件是用来生成中间文件,执行编译前的必备动作。
contrib文件夹提供一个VIM的工具,在没有使用这个工具前打开Nginx的配置文件不会显示高亮等,使用之后则会有高亮显示。如下图:
使用前:

使用后:

html目录提供了两个html文件,index.html是nginx默认安装完的首页文件,50x.html是502,500等错误时显示的页面。
man目录是nginx提供的对Linux的man帮助目录。
src目录是nginx的源代码。

使用./configure编译之前,可以先使用./configure --help来查看nginx的基础帮助。这里需要注意的是prefix,这个参数是设置nginx的安装目录,其他的例如sbin,moudules,conf,在prefix指定的情况下都会在prefix指定的目录下创建相应的目录。with开头的参数指的是默认编译不包含的模块,without开头是默认编译包含的模块,在编译的时候,如果不加with开头参数则只编译默认的without模块,如果加了without开头参数则不编译此without模块。
安装依赖:

  1. yum install -y gcc gcc-c++ pcre pcre-devel zlib zlib-devel -y   

编译:

  1. ./configure --prefix=/usr/local  

编译完成后,会生成objs目录和Makefile文件,其中objs是中间文件,最重要的是ngx_modules.c,他决定了哪些模块会被编译进nginx。
接下来执行make命令编译,该命令会调用Makefile文件进行编译。这个命令结束后,在obis目录下又会增加一些目录和文件,这些就是nginx的核心文件,在后面升级会用到。
接着使用make install命令安装(首次安装使用)
至此,安装完成。

通过编译安装的nginx在安装完成之后不会自动启动,所以需要手动去启动。启动命令如下:

  1. cd /usr/local/nginx  
  2. ./nginx  

然后浏览器或者curl命令测试80端口即可看到Nginx的默认页面,如果没有看到,请查看防火墙是否为开启状态,需要关闭防火墙或者添加80端口允许访问。

(0)

本文由 IT985 作者:白云千载 发表,转载请注明来源!

关键词:,

热评文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注