• Ubuntu 20.04使用源码安装nginx 1.14.0


    nginx安装及使用(详细版)是一篇参考博文。

    http://nginx.org/download/可以选择下载源码的版本。

    在这里插入图片描述

    sudo wget http://nginx.org/download/nginx-1.14.0.tar.gz下载源代码。
    在这里插入图片描述

    sudo tar xzf nginx-1.14.0.tar.gz进行解压。
    在这里插入图片描述

    cd nginx-1.14.0进入到源代码目录里边。
    在这里插入图片描述

    ls -l看一下当前源码目录里边有什么文件。
    在这里插入图片描述

    ls -l auto可以看一下auto目录有什么文件,而在auto目录里有cc目录(用于编译),lib目录(存放库),os目录(对操作系统的判断)等。
    在这里插入图片描述

    nginx-1.14.0目录里边CHANGES文件就是写明了当前版本中有什么改变,sudo wc -l CHANGES可以看到此文件中有8069行。
    在这里插入图片描述
    head -n 12 CHANGES可以看一下前12行内容。
    在这里插入图片描述

    CHANGES.ru是俄罗斯语的CHANGES文件。

    conf目录里边是配置文件,ls -l conf可以看一下配置目录的配置文件。
    在这里插入图片描述

    configure可执行文件有两个作用:

    1.选定编译特性;
    2.检查编译环境,是否有编译时所需的库,以及库的版本是否满足编译的需要等。

    在这里插入图片描述

    contrib目录里边有一些脚本和工具,典型的是vim高亮工具。
    在这里插入图片描述

    sudo vim conf/nginx.conf打开文件之后可以看到毫无高亮。
    在这里插入图片描述

    输入:q!
    在这里插入图片描述

    然后再按Enter之后退出vim
    在这里插入图片描述

    sudo mkdir ~/.vim/在当前用户的家目录下创建一个.vim目录,然后sudo cp -r contrib/vim/* ~/.vim/contrib/vim/目录下所有的文件都转移到~/.vim/目录下边。
    在这里插入图片描述

    sudo mkdir /nginx在根目录下创建一个nginx的目录。
    在这里插入图片描述

    sudo ./configure --prefix=/nginx指定安装目录为/nginx,然后开始检查编译环境。
    在这里插入图片描述

    完成之后发现报错如下:

    ./configure: error: the HTTP rewrite module requires the PCRE library.
    You can either disable the module by using --without-http_rewrite_module
    option, or install the PCRE library into the system, or build the PCRE library
    statically from the source with nginx by using --with-pcre=<path> option.
    
    • 1
    • 2
    • 3
    • 4

    在这里插入图片描述
    《./configure: error: the HTTP rewrite module requires the PCRE library. You can either disable the mo》是解决方法参考的博客。

    sudo apt-get install libpcre3 libpcre3-dev安装依赖包,发现报错如下:

    Reading package lists... Done
    Building dependency tree
    Reading state information... Done
    Package libpcre3-dev is not available, but is referred to by another package.
    This may mean that the package is missing, has been obsoleted, or
    is only available from another source
    
    E: Package 'libpcre3-dev' has no installation candidate
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    在这里插入图片描述

    我这里执行sudo apt update
    在这里插入图片描述

    完成之后如下图:
    在这里插入图片描述

    sudo apt install -y libpcre3 libpcre3-dev安装依赖包。
    在这里插入图片描述

    sudo ./configure --prefix=/nginx指定安装目录为/nginx,然后再次开始检查编译环境。
    在这里插入图片描述

    完成之后如下图:
    在这里插入图片描述

    sudo make进行编译。
    在这里插入图片描述

    发现报错如下:

    src/os/unix/ngx_user.c: In function ‘ngx_libc_crypt’:
    src/os/unix/ngx_user.c:26:7: error: ‘struct crypt_data’ has no member named ‘current_salt’
       26 |     cd.current_salt[0] = ~salt[0];
          |       ^
    make[1]: *** [objs/Makefile:781: objs/src/os/unix/ngx_user.o] Error 1
    make[1]: Leaving directory '/root/nginx-1.14.0'
    make: *** [Makefile:8: build] Error 2
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    在这里插入图片描述

    《linux异常(四):nginx1.6 |struct crypt_data’ has no member named ‘current_salt’ |[objs/Makefile:473》是我解决问题参考的博客。

    sed -i 's#cd.current_salt\[0\] = ~salt\[0\]\;#/* cd.current_salt\[0\] = ~salt\[0\]\; */#' src/os/unix/ngx_user.ccd.current_salt[0] = ~salt[0];注释掉。
    在这里插入图片描述

    sudo make再次编译。
    在这里插入图片描述

    报错如下:

    src/http/ngx_http_script.c: In function ‘ngx_http_script_add_copy_code’:
    src/http/ngx_http_script.c:698:18: error: cast between incompatible function types from ‘size_t (*)(ngx_http_script_engine_t *){aka ‘long unsigned int (*)(struct <anonymous> *)} to ‘void (*)(ngx_http_script_engine_t *){aka ‘void (*)(struct <anonymous> *)} [-Werror=cast-function-type]
      698 |     code->code = (ngx_http_script_code_pt) ngx_http_script_copy_len_code;
          |                  ^
    src/http/ngx_http_script.c: In function ‘ngx_http_script_add_var_code’:
    src/http/ngx_http_script.c:787:18: error: cast between incompatible function types from ‘size_t (*)(ngx_http_script_engine_t *){aka ‘long unsigned int (*)(struct <anonymous> *)} to ‘void (*)(ngx_http_script_engine_t *){aka ‘void (*)(struct <anonymous> *)} [-Werror=cast-function-type]
      787 |     code->code = (ngx_http_script_code_pt) ngx_http_script_copy_var_len_code;
          |                  ^
    src/http/ngx_http_script.c: In function ‘ngx_http_script_add_capture_code’:
    src/http/ngx_http_script.c:1181:18: error: cast between incompatible function types from ‘size_t (*)(ngx_http_script_engine_t *){aka ‘long unsigned int (*)(struct <anonymous> *)} to ‘void (*)(ngx_http_script_engine_t *){aka ‘void (*)(struct <anonymous> *)} [-Werror=cast-function-type]
     1181 |     code->code = (ngx_http_script_code_pt)
          |                  ^
    src/http/ngx_http_script.c: In function ‘ngx_http_script_add_full_name_code’:
    src/http/ngx_http_script.c:1296:18: error: cast between incompatible function types from ‘size_t (*)(ngx_http_script_engine_t *){aka ‘long unsigned int (*)(struct <anonymous> *)} to ‘void (*)(ngx_http_script_engine_t *){aka ‘void (*)(struct <anonymous> *)} [-Werror=cast-function-type]
     1296 |     code->code = (ngx_http_script_code_pt) ngx_http_script_full_name_len_code;
          |                  ^
    cc1: all warnings being treated as errors
    make[1]: *** [objs/Makefile:886: objs/src/http/ngx_http_script.o] Error 1
    make[1]: Leaving directory '/root/nginx-1.14.0'
    make: *** [Makefile:8: build] Error 2
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

    在这里插入图片描述

    参考《Nginx安装时make部分报错解决 类型装换异常 不兼容》解决。

    sed -i 's/-Werror//g' objs/Makefile-Werror去掉。
    在这里插入图片描述

    sudo make再次编译。
    在这里插入图片描述

    完成之后如下图:
    在这里插入图片描述

    sudo make install进行安装。
    在这里插入图片描述

    sudo vim /etc/profilePATH=${PATH}:/nginx/sbin添加到最后一行。
    在这里插入图片描述

    source /etc/profile使配置生效。
    在这里插入图片描述

    nginx -v显示nginx version: nginx/1.14.0就是安装成功了。
    在这里插入图片描述

    此文章为10月Day 7学习笔记,内容来源于极客时间《Nginx 核心知识 150 讲》

  • 相关阅读:
    汽车零部件制造迎来智能化升级,3D视觉定位系统助力无人化生产线建设
    基于VDI2230规范的螺栓评估(上)
    交叉熵损失函数以及二分类任务(机器学习)
    LeetCode 009:回文数
    元宇宙 终归要回归产业
    15 分钟带你感受 CSS :has() 选择器的强大
    航顺 HK32F030C8T6 单片机MCU控制器
    kubernetes node 节点管理
    php连接mssql数据库的几种方式
    Vue3.2中,CSS与数据的双向绑定
  • 原文地址:https://blog.csdn.net/qq_42108074/article/details/133656514