首页 > 技术文章 > nginx源码安装

huskiesir 2019-01-09 10:37 原文

访问nginx网站:nginx.org
stable:稳定版
注:如果不想查看博主安装过程中遇到的问题,可以翻到最下面查看快速安装nginx的复制粘贴操作
点开链接后,复制如下图链接地址
在linux中下载好,wget http://nginx.org/download/nginx-1.14.2.tar.gz
 
解压nginx压缩包:
tar -xvf nginx-1.14.2.tar.gz
 
去目录下执行安装脚本
[root@localhost nginx-1.14.2]# ./configure 
checking for OS
 + Linux 3.10.0-957.el7.x86_64 x86_64
checking for C compiler ... not found

./configure: error: C compiler cc is not found
发现缺少gcc编译环境,安装gcc
[root@localhost nginx-1.14.2]# yum list| grep gcc
gcc.x86_64                                  4.8.5-36.el7               @base    
libgcc.x86_64                               4.8.5-36.el7               @anaconda
compat-gcc-44.x86_64                        4.4.7-8.el7                base     
compat-gcc-44-c++.x86_64                    4.4.7-8.el7                base     
compat-gcc-44-gfortran.x86_64               4.4.7-8.el7                base     
gcc-c++.x86_64                              4.8.5-36.el7               base     
gcc-gfortran.x86_64                         4.8.5-36.el7               base     
gcc-gnat.x86_64                             4.8.5-36.el7               base     
gcc-go.x86_64                               4.8.5-36.el7               base     
gcc-objc.x86_64                             4.8.5-36.el7               base     
gcc-objc++.x86_64                           4.8.5-36.el7               base     
gcc-plugin-devel.x86_64                     4.8.5-36.el7               base     
libgcc.i686                                 4.8.5-36.el7               base     
relaxngcc.noarch                            1.12-6.el7                 base     
relaxngcc-javadoc.noarch                    1.12-6.el7                 base     
[root@localhost nginx-1.14.2]# yum install gcc.x86_64
再次去执行安装脚本,截取后面的安装信息

[root@localhost nginx-1.14.2]# ./configure 
checking for sysconf(_SC_NPROCESSORS_ONLN) ... found
checking for sysconf(_SC_LEVEL1_DCACHE_LINESIZE) ... found
checking for openat(), fstatat() ... found
checking for getaddrinfo() ... found
checking for PCRE library ... not found
checking for PCRE library in /usr/local/ ... not found
checking for PCRE library in /usr/include/pcre/ ... not found
checking for PCRE library in /usr/pkg/ ... not found
checking for PCRE library in /opt/local/ ... not found
由此可见,缺少pcre库,安装pcre-devel

[root@localhost nginx-1.14.2]# yum list | grep pcre
pcre.x86_64                                 8.32-17.el7                @anaconda
pcre.i686                                   8.32-17.el7                base     
pcre-devel.i686                             8.32-17.el7                base     
pcre-devel.x86_64                           8.32-17.el7                base     
pcre-static.i686                            8.32-17.el7                base     
pcre-static.x86_64                          8.32-17.el7                base     
pcre-tools.x86_64                           8.32-17.el7                base     
pcre2.i686                                  10.23-2.el7                base     
pcre2.x86_64                                10.23-2.el7                base     
pcre2-devel.i686                            10.23-2.el7                base     
pcre2-devel.x86_64                          10.23-2.el7                base     
pcre2-static.i686                           10.23-2.el7                base     
pcre2-static.x86_64                         10.23-2.el7                base     
pcre2-tools.x86_64                          10.23-2.el7                base     
pcre2-utf16.i686                            10.23-2.el7                base     
pcre2-utf16.x86_64                          10.23-2.el7                base     
pcre2-utf32.i686                            10.23-2.el7                base     
pcre2-utf32.x86_64                          10.23-2.el7                base     
[root@localhost nginx-1.14.2]# yum install pcre-devel.x86_64 
再次去执行安装脚本,截取后面的安装信息

checking for openat(), fstatat() ... found
checking for getaddrinfo() ... found
checking for PCRE library ... found
checking for PCRE JIT support ... found
checking for zlib library ... not found

./configure: error: the HTTP gzip module requires the zlib library.
You can either disable the module by using --without-http_gzip_module
option, or install the zlib library into the system, or build the zlib library
statically from the source with nginx by using --with-zlib=<path> option.
由此可见,这里缺少的zlib-devel

[root@localhost nginx-1.14.2]# yum list|grep zlib
zlib.x86_64                                 1.2.7-18.el7               @anaconda
jzlib.noarch                                1.1.1-6.el7                base     
jzlib-demo.noarch                           1.1.1-6.el7                base     
jzlib-javadoc.noarch                        1.1.1-6.el7                base     
zlib.i686                                   1.2.7-18.el7               base     
zlib-devel.i686                             1.2.7-18.el7               base     
zlib-devel.x86_64                           1.2.7-18.el7               base     
zlib-static.i686                            1.2.7-18.el7               base     
zlib-static.x86_64                          1.2.7-18.el7               base     
[root@localhost nginx-1.14.2]# yum install zlib-devel.x86_64 
ok,这里再次去执行安装脚本去试试,截取最后的安装信息
checking for openat(), fstatat() ... found
checking for getaddrinfo() ... found
checking for PCRE library ... found
checking for PCRE JIT support ... found
checking for zlib library ... found
creating objs/Makefile

Configuration summary
  + using system PCRE library
  + OpenSSL library is not used
  + using system zlib library

  nginx path prefix: "/usr/local/nginx"
  nginx binary file: "/usr/local/nginx/sbin/nginx"
  nginx modules path: "/usr/local/nginx/modules"
  nginx configuration prefix: "/usr/local/nginx/conf"
  nginx configuration file: "/usr/local/nginx/conf/nginx.conf"
  nginx pid file: "/usr/local/nginx/logs/nginx.pid"
  nginx error log file: "/usr/local/nginx/logs/error.log"
  nginx http access log file: "/usr/local/nginx/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"
安装应该是没有问题,不过通过信息查看到openssl库没有使用,这个东西应该是处于nginx安全考虑的吧,也顺手安装好了
[root@localhost nginx-1.14.2]# yum list|grep openssl
openssl.x86_64                              1:1.0.2k-16.el7            @anaconda
openssl-libs.x86_64                         1:1.0.2k-16.el7            @anaconda
apr-util-openssl.x86_64                     1.5.2-6.el7                base     
openssl-devel.i686                          1:1.0.2k-16.el7            base     
openssl-devel.x86_64                        1:1.0.2k-16.el7            base     
openssl-libs.i686                           1:1.0.2k-16.el7            base     
openssl-perl.x86_64                         1:1.0.2k-16.el7            base     
openssl-static.i686                         1:1.0.2k-16.el7            base     
openssl-static.x86_64                       1:1.0.2k-16.el7            base     
openssl098e.i686                            0.9.8e-29.el7.centos.3     base     
openssl098e.x86_64                          0.9.8e-29.el7.centos.3     base     
xmlsec1-openssl.i686                        1.2.20-7.el7_4             base     
xmlsec1-openssl.x86_64                      1.2.20-7.el7_4             base     
xmlsec1-openssl-devel.i686                  1.2.20-7.el7_4             base     
xmlsec1-openssl-devel.x86_64                1.2.20-7.el7_4   
[root@localhost nginx-1.14.2]# yum install openssl-devel.x86_64 openssl
编译安装:

make && make install
验证nginx安装是否成功,并启动nginx
查看在/usr/local/是否存在nginx目录,存在说明安装成功
 
启动nginx
/usr/local/nginx/sbin/nginx
关闭nginx
/usr/local/nginx/sbin/nginx -s stop
重启nginx
/usr/local/nginx/sbin/nginx -s reload
制作nginx系统启动文件,把权限改成754,然后把文件放到/etc/lib/systemd/system下
[Unit]  
Description=nginx
After=network.target  
   
[Service]  
Type=forking  
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s stop
PrivateTmp=true  
   
[Install]  
WantedBy=multi-user.target
 
总结:
安装源码包需要安装的依赖,安装完依赖之后运行配置脚本不会报错,可以直接编译安装
yum install gcc
yum install pcre-devel
yum install zlib zlib-devel
yum install openssl openssl-devel

推荐阅读