zoukankan      html  css  js  c++  java
  • nginx安装

    部分内容参考博客:http://www.cnblogs.com/skynet/p/4146083.html

    下载nginx安装包:

    http://www.nginx.org
    本人下载了最新版本:nginx-1.10.1.tar.gz
    将安装包放到安装目录下,这里是/install

      

    环境:

    [root@vm-xiluhua][/]# cat /etc/redhat-release
    CentOS Linux release 7.2.1511 (Core)
    系统工具:gcc,automake工具

    查看gcc版本:

    [xiluhua@vm-xiluhua][~]$ gcc --version
    gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-4)

    查看automake工具版本:

    [xiluhua@vm-xiluhua][~]$ rpm -qf /usr/bin/autoconf
    autoconf-2.69-11.el7.noarch

    nginx对第三方库的依赖:

    nginx rewrite模块:pcre库
    nginx gzip模块:zlib库
    nginx ssl模块:openssl库

    查看当前系统以上三个库的安装情况:

    [xiluhua@vm-xiluhua][~]$ rpm -q pcre
    pcre-8.32-15.el7.x86_64
    
    [xiluhua@vm-xiluhua][~]$ rpm -q zlib
    zlib-1.2.7-15.el7.x86_64
    
    [xiluhua@vm-xiluhua][~]$ rpm -q openssl
    openssl-1.0.1e-42.el7.9.x86_64

     遗憾的是,由于安装包太新,系统内的这三个库都没法用。

    执行安装包内的

    ./configure

    显示没有找到这两个库[pcre,zlib]:(以zlib举例)

    ./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.

    到官网上下或直接yum

    到官网上下:

    1.1.安装pcre
    1.         获取pcre编译安装包,在http://www.pcre.org/上可以获取当前最新的版本
    
    2.         解压缩pcre-xx.tar.gz包。
    
    3.         进入解压缩目录,执行./configure。
    
    4.         make & make install
    
    1.2.安装openssl
    1.         获取openssl编译安装包,在http://www.openssl.org/source/上可以获取当前最新的版本。
    
    2.         解压缩openssl-xx.tar.gz包。
    
    3.         进入解压缩目录,执行./config。
    
    4.         make & make install
    
    1.3.安装zlib
    1.         获取zlib编译安装包,在http://www.zlib.net/上可以获取当前最新的版本。
    
    2.         解压缩openssl-xx.tar.gz包。
    
    3.         进入解压缩目录,执行./configure。
    
    4.         make & make install

    直接yum

    yum install pcre-devel
    yum install zlib-devel

    以上两个yum后执行.configure,显示Openssl没有安装:

    Configuration summary
      + using system PCRE library
      + OpenSSL library is not used
      + using builtin md5 code
      + sha1 library is not found
      + using system zlib library

    继续yum

    yum install openssl openssl-devel
    yum install perl-Digest-SHA1.x86_64

    再次执行.configure,显示Openssl还是没有安装:

    Configuration summary
      + using system PCRE library
      + OpenSSL library is not used
      + md5: using system crypto library
      + sha1: using system crypto library
      + using system zlib library

    原因:开启ssl 模块需要./configure执行时带上选项 --with-http_ssl_module

    再次执行:

    ./configure --with-http_ssl_module

    成功开启:

    Configuration summary
      + using system PCRE library
      + using system OpenSSL library
      + md5: using OpenSSL library
      + sha1: using OpenSSL library
      + 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"

    执行make & make install

    由于安装路径默认:/usr/local/nginx,而当前用户没有root权限,make失败

    make[1]: 离开目录“/install/nginx-1.10.1”
    test -d '/usr/local/nginx' || mkdir -p '/usr/local/nginx'
    mkdir: 无法创建目录"/usr/local/nginx": 权限不够
    make[1]: *** [install] 错误 1
    make[1]: 离开目录“/install/nginx-1.10.1”
    make: *** [install] 错误 2
    [1]+  完成                  make

    重新./configure,添加指定安装目录:--prefix=/install/program/nginx-1.10.1

    ./configure --with-http_ssl_module --prefix="/install/program/nginx-1.10.1" --with-http_stub_status_module

    执行结果:

    Configuration summary
      + using system PCRE library
      + using system OpenSSL library
      + md5: using OpenSSL library
      + sha1: using OpenSSL library
      + using system zlib library
     
      nginx path prefix: "/install/program/nginx-1.10.1"        #指定后的安装目录
      nginx binary file: "/install/program/nginx-1.10.1/sbin/nginx"
      nginx modules path: "/install/program/nginx-1.10.1/modules"
      nginx configuration prefix: "/install/program/nginx-1.10.1/conf"
      nginx configuration file: "/install/program/nginx-1.10.1/conf/nginx.conf"
      nginx pid file: "/install/program/nginx-1.10.1/logs/nginx.pid"
      nginx error log file: "/install/program/nginx-1.10.1/logs/error.log"
      nginx http access log file: "/install/program/nginx-1.10.1/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"

    再次执行make & make install,成功完成。

    [xiluhua@vm-xiluhua][/install/nginx-1.10.1]$ make & make install
    [1] 106846
    make -f objs/Makefile install
    make -f objs/Makefile
    make[1]: 进入目录“/install/nginx-1.10.1”
    test -d '/install/program/nginx-1.10.1' || mkdir -p '/install/program/nginx-1.10.1'
    test -d '/install/program/nginx-1.10.1/sbin' || mkdir -p '/install/program/nginx-1.10.1/sbin'
    test ! -f '/install/program/nginx-1.10.1/sbin/nginx' || mv '/install/program/nginx-1.10.1/sbin/nginx' '/install/program/nginx-1.10.1/sbin/nginx.old'
    cp objs/nginx '/install/program/nginx-1.10.1/sbin/nginx'
    make[1]: 进入目录“/install/nginx-1.10.1”
    make[1]: 对“build”无需做任何事。
    make[1]: 离开目录“/install/nginx-1.10.1”
    test -d '/install/program/nginx-1.10.1/conf' || mkdir -p '/install/program/nginx-1.10.1/conf'
    cp conf/koi-win '/install/program/nginx-1.10.1/conf'
    cp conf/koi-utf '/install/program/nginx-1.10.1/conf'
    cp conf/win-utf '/install/program/nginx-1.10.1/conf'
    test -f '/install/program/nginx-1.10.1/conf/mime.types'  || cp conf/mime.types '/install/program/nginx-1.10.1/conf'
    cp conf/mime.types '/install/program/nginx-1.10.1/conf/mime.types.default'
    test -f '/install/program/nginx-1.10.1/conf/fastcgi_params'  || cp conf/fastcgi_params '/install/program/nginx-1.10.1/conf'
    cp conf/fastcgi_params  '/install/program/nginx-1.10.1/conf/fastcgi_params.default'
    test -f '/install/program/nginx-1.10.1/conf/fastcgi.conf' || cp conf/fastcgi.conf '/install/program/nginx-1.10.1/conf'
    cp conf/fastcgi.conf '/install/program/nginx-1.10.1/conf/fastcgi.conf.default'
    test -f '/install/program/nginx-1.10.1/conf/uwsgi_params' || cp conf/uwsgi_params '/install/program/nginx-1.10.1/conf'
    cp conf/uwsgi_params  '/install/program/nginx-1.10.1/conf/uwsgi_params.default'
    test -f '/install/program/nginx-1.10.1/conf/scgi_params' || cp conf/scgi_params '/install/program/nginx-1.10.1/conf'
    cp conf/scgi_params  '/install/program/nginx-1.10.1/conf/scgi_params.default'
    test -f '/install/program/nginx-1.10.1/conf/nginx.conf'  || cp conf/nginx.conf '/install/program/nginx-1.10.1/conf/nginx.conf'
    cp conf/nginx.conf '/install/program/nginx-1.10.1/conf/nginx.conf.default'
    test -d '/install/program/nginx-1.10.1/logs'  || mkdir -p '/install/program/nginx-1.10.1/logs'
    test -d '/install/program/nginx-1.10.1/logs'  || mkdir -p '/install/program/nginx-1.10.1/logs'
    test -d '/install/program/nginx-1.10.1/html'  || cp -R html '/install/program/nginx-1.10.1'
    test -d '/install/program/nginx-1.10.1/logs'  || mkdir -p '/install/program/nginx-1.10.1/logs'
    make[1]: 离开目录“/install/nginx-1.10.1”
    [1]+  完成                  make

    启动nginx前测试配置是否正确:

    [xiluhua@vm-xiluhua][/install/program/nginx-1.10.1/sbin]$ ./nginx -t     #测试配置是否正确
    nginx: the configuration file /install/program/nginx-1.10.1/conf/nginx.conf syntax is ok
    nginx: [emerg] bind() to 0.0.0.0:80 failed (13: Permission denied)
    nginx: configuration file /install/program/nginx-1.10.1/conf/nginx.conf test failed

    这是端口号的问题,在Linux中1024以下的端口号都需要root权限才能使用,所以普通用户启动程序绑定会报出权限问题。使用sudo解决:

    [xiluhua@vm-xiluhua][/install/program/nginx-1.10.1/sbin]$ sudo ./nginx -t
    nginx: the configuration file /install/program/nginx-1.10.1/conf/nginx.conf syntax is ok
    nginx: configuration file /install/program/nginx-1.10.1/conf/nginx.conf test is successful

     启动nginx,没有报错,在bash下没有报错默认就是成功

    [xiluhua@vm-xiluhua][/install/program/nginx-1.10.1/sbin]$ sudo ./nginx
    [sudo] password for xiluhua: 

    验证启动状态

    浏览器验证:虚拟机ip为192.168.178.132,nginx.conf文件默认监听的是80端口

    192.168.178.132:80
    浏览器显示:
    无法显示此网页
    主机telnet 192.168.178.132 80
    CMD显示:无法连接到 .... 端口:80

    虚拟机内ps验证:显示已经启动成功

    [xiluhua@vm-xiluhua][/install/program/nginx-1.10.1/sbin]$ ps -ef|grep nginx
    root     107196      1  0 23:16 ?        00:00:00 nginx: master process ./nginx
    nobody   107197 107196  0 23:16 ?        00:00:00 nginx: worker process
    xiluhua  107199  97234  0 23:16 pts/0    00:00:00 grep --color=auto nginx

    检查系统防火墙:显示开启状态

    [root@vm-xiluhua][/install]# /bin/systemctl status firewalld.service 
    ● firewalld.service - firewalld - dynamic firewall daemon
       Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)
       Active: active (running) since 六 2016-06-11 14:01:00 CST; 1 months 18 days ago
     Main PID: 1024 (firewalld)
       CGroup: /system.slice/firewalld.service
               └─1024 /usr/bin/python -Es /usr/sbin/firewalld --nofork --nopid

    关闭防火墙:

    [root@vm-xiluhua][/install]# /bin/systemctl stop firewalld.service 
     
    [root@vm-xiluhua][/install]# /bin/systemctl status firewalld.service 
    ● firewalld.service - firewalld - dynamic firewall daemon
       Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)
       Active: inactive (dead) since 六 2016-07-30 23:34:43 CST; 9s ago
     Main PID: 1024 (code=exited, status=0/SUCCESS)

    重新浏览器验证:403点亮成功!

    403原因是由于启动使用sudo命令,等于是root启动的,但是没有在ngingx.conf中配置可以运行nginx服务器的用户,最终导致无法正常显示nginx首页。

    [xiluhua@vm-xiluhua][/install/program/nginx-1.10.1]$ ps -ef|grep nginx
    root     110735      1  0 00:09 ?        00:00:00 nginx: master process sbin/./nginx  启动者:root
    nobody   110736 110735  0 00:09 ?        00:00:00 nginx: worker process
    xiluhua  110744  97234  0 00:09 pts/0    00:00:00 grep --color=auto nginx

     使用root管理员账户需要在ngingx.conf中第一行配置user节点:

    user  root;        #启动用户配置为root

    再次浏览器验证:Welcome to nginx!点亮!

    到这一步,nginx安装基本完成,但使用使用管理员账户root启动nginx始终不合适,解决方案:

    第一步,将nginx的监听端口(nginx.conf)由80改回8080
    
    第二步,通过Iptables实现80到8080的转发,命令为:
    
    vi /etc/sysconfig/iptables iptables
    -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080
    这样,用户访问80端口和8080端口其实都到8080端口了

    使用非管理员账户启动nginx,ps验证:

    [xiluhua@vm-xiluhua][/install/program/nginx-1.10.1]$ ps -ef|grep nginx
    xiluhua  115761      1  0 08:05 ?        00:00:00 nginx: master process sbin/./nginx
    xiluhua  119548 115761  0 08:17 ?        00:00:00 nginx: worker process
    xiluhua  120809 114188  0 08:35 pts/0    00:00:00 grep --color=auto nginx

    浏览器验证

    80端口:

    8080端口:

    至此,安装完美完成。

    Thanks for reading!

  • 相关阅读:
    C++中的new、operator new与placement new
    Eigen教程(11)
    Eigen教程(10)
    Eigen教程(9)
    Eigen教程(8)
    Eigen教程(5)
    Eigen教程(4)
    Eigen教程(3)
    makefile:n: *** missing separator. Stop
    jenkins X实践系列(3) —— jenkins X 安装拾遗
  • 原文地址:https://www.cnblogs.com/xiluhua/p/5721411.html
Copyright © 2011-2022 走看看