zoukankan      html  css  js  c++  java
  • centos 7 源码方式安装nginx(1.16.1) + ssl + 阿里证书配置

    nginx 1.18.0版本的安装请移步:https://www.cnblogs.com/nickchou/p/12978724.html

    直接使用yum方式安装的ngninx默认是不支持ssl的,所以需要从代码编译安装

    一、查看要安装的版本

    http://nginx.org/en/download.html
    这里我们还是选择的稳定版1.16.1

    二、先安装依赖

    yum install gcc gcc-c++ pcre pcre-devel zlib zlib-devel openssl openssl-devel -y
    

    三、下载源码

    切换到/usr/local/src目录下,下载源代码解压

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

    四、编译源代码

    cd /usr/local/src/nginx-1.16.1
    ./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module
    

    编译成功后的截图

    编译报错的解决办法,没有报错直接跳过

    1. 报错:./configure: error: the HTTP rewrite module requires the PCRE library.
      问题原因:编译安装nginx需要pcre包,未安装的话会报错
      解决办法:
      yum -y install zlib zlib-devel openssl openssl--devel pcre pcre-devel

    2. 报错:File "/usr/bin/yum", line 30 except KeyboardInterrupt, e:
      问题原因:yum采用python作为命令解释器,原来系统自带的python解释器为python2.7,系统默认的解释器为python3.7
      解决办法:
      vim /usr/bin/yum
      修改第一行为:#!/usr/bin/python2.7
      vi /usr/libexec/urlgrabber-ext-down
      修改第一行为:#!/usr/bin/python2.7

    3. 报错:File "/bin/yum-config-manager", line 135 except yum.Errors.RepoError, e:
      问题原因:yum采用python作为命令解释器,原来系统自带的python解释器为python2.7,系统默认的解释器为python3.7
      解决办法:
      vim /bin/yum-config-manager
      修改第一行为:#!/usr/bin/python2.7

    4. 报错:./configure: error: SSL modules require the OpenSSL library.
      问题原因: 缺少SSL库
      解决办法:yum -y install openssl openssl-devel

    五、安装nginx

    如果nginx已经安装了的话用指令

    make
    

    如果没有安装或者已卸载的话

    make && make install
    

    六、查看nginx的版本信息

    查看编译后的nginx版本

    /usr/local/src/nginx-1.16.1/objs/nginx -V
    


    查看安装后的nginx版本

    /usr/local/nginx/sbin/nginx -V
    

    七、更新nginx,这一步是为装过nginx更新bin文件用的,安装的话忽略

    cp objs/nginx /usr/local/nginx/sbin/
    

    复制bin文件后再核对下版本

    /usr/local/nginx/sbin/nginx -V
    

    八、配置开机自启动

    vim /lib/systemd/system/nginx.service
    

    复制以下内容保存(按ESC后:wq保存退出)

    [Unit]
    Description=nginx service
    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 quit
    PrivateTmp=true
    
    [Install]
    WantedBy=multi-user.target
    

    设置开机自启动

    systemctl enable nginx
    


    启动、查看状态、重启nginx,指令3件套

    systemctl start nginx
    systemctl status nginx
    systemctl restart nginx
    

    可以reboot重启机器后再查看nginx状态

    九、配置nginx环境变量

    一般修改配置后用 nginx -s reload 重启

    nginx -s reload
    

    出现以下提示是没有配置环境变量

    打开/etc/profile

    vim /etc/profile
    

    在最后一行 追加下面2行配置(ESC :wq 保存退出)

    PATH=$PATH:/usr/local/nginx/sbin
    export PATH
    

    使配置生效后,就可以用nginx -s reload

    source /etc/profile
    

    十、阿里云证书配置

    把阿里云申请的证书放到目录 /usr/local/nginx/conf/cert (文件也可以自己指定)
    配置域名解析

    vi  /usr/local/nginx/conf/nginx.conf
    

    增加配置,把下面的www.yuming.com改成自己的域名

    server {
        listen       80;
        server_name  www.yuming.com;
        return       301 https://$server_name$request_uri;
    }
    server {
        listen       443 ssl;   // nginx1.15之后用这个语法
        server_name  wwww.yuming.com;
        ssl_certificate   cert/www.yuming.com.pem;
        ssl_certificate_key  cert/www.yuming.com.key;
        ssl_session_timeout 5m;
        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_prefer_server_ciphers on;
        location / {
            proxy_set_header Host $http_host;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Real-Ip $remote_addr;
            proxy_set_header X-NginX-Proxy true;
            proxy_pass http://localhost:8001;
            proxy_redirect off;
        }
    }
    
  • 相关阅读:
    Controller之daemonset
    Ubuntu下Zmap的安装
    VSCode无法加载PlatformIO按钮可能的原因(踩坑笔记)
    由于更换域名或者IP变更导致WordPressg无法进入后台的问题解决办法
    使用VSCode进行Arduino与ESP32开发配置指南
    Win7下阿米洛机械键盘蓝牙配置
    IIC通讯协议与SPI通讯协议小结
    如何在树莓派上搭建个人博客系统(踩坑笔记)
    STorM32 BGC三轴云台控制板电机驱动电路设计(驱动芯片DRV8313)
    #数据结构#什么是栈及栈的作用
  • 原文地址:https://www.cnblogs.com/nickchou/p/12678354.html
Copyright © 2011-2022 走看看