Ubuntu环境 nginx 源码 编译安装
ubuntu 终端 使用 wget 下载源码
sudo wget http://nginx.org/download/nginx-1.24.0.tar.gz
解压刚下载的源码压缩包 nginx-1.24.0.tar.gz
sudo tar -zxvf nginx-1.24.0.tar.gz
解压完成 产生 nginx-1.24.0 目录
进入该目录
cd ./nginx-1.24.0
关于这个 configure
configure命令做了大量的“幕后”工作,包括检测操作系统内核和已经安装的软件,参数的解析,
中间目录的生成以及根据各种参数生成一些C源码文件、Makefile文件等
可以参考官方介绍:
nginx documentationhttps://nginx.org/en/docs/https://nginx.org/en/docs/https://nginx.org/en/docs/
进入 nginx 官网
点击 Installing nginx
选择
- Building nginx from Sources
或者 直接点击
- Building nginx from Sources
执行:
./configure --help
根据需求选择配置编译选项
这里我的 配置编译选项如下:
sudo ./configure \
--sbin-path=/home/wsd/test/nginx/Nginx \
--conf-path=/home/wsd/test/nginx/conf/nginx.conf \
--error-log-path=/home/wsd/test/nginx/LOG/error.log \
--http-log-path=/home/wsd/test/nginx/LOG/access.log \
--with-pcre \
--with-http_ssl_module \
--with-http_v2_module \
--with-http_gzip_static_module \
--with-stream \
--with-stream_ssl_module
说明:
--sbin-path: 指定Nginx可执行文件的安装路径。
--conf-path: 指定Nginx配置文件的位置。
--error-log-path & --http-log-path: 指定日志文件的位置。
--with-pcre: 启用PCRE支持(正则表达式)。
--with-http_ssl_module: 启用SSL模块。
--with-http_v2_module: 启用HTTP/2支持。
--with-http_gzip_static_module: 启用Gzip静态压缩模块。
--with-stream & --with-stream_ssl_module: 启用TCP/UDP流支持及其SSL模块。
现在 执行 上面的 configure 命令还有问题
还缺少一些东西
如果我们在配置文件nginx.conf里使用了正则表达式,那么在编译Nginx时就必须把PCRE
库编译进Nginx,因为Nginx的HTTP模块要靠它来解析正则表达式。当然,如果你确认不会使
用正则表达式,就不必安装它。
`libpcre3` 和 `libpcre3-dev` 是与 Perhentional Compiling Regular Expressions (PCRE) 库相关的两个软件包,它们的作用如下:
1. **libpcre3**:
- 这是 PCRE 库的运行时版本,提供了用 C 语言实现的正则表达式匹配功能。许多程序和库依赖于这个库来处理正则表达式。安装这个库后,任何依赖它的程序都可以使用其提供的 API。2. **libpcre3-dev**:
- 这是 `libpcre3` 的开发包,包含了编译和链接 PCRE 库所需的头文件和其他开发工具。开发者在编写需要使用正则表达式的应用程序时,通常需要安装这个包,以便包含相关的头文件并链接到库。简单来说,你需要 `libpcre3` 来运行依赖该库的程序,而在开发新软件时则需要 `libpcre3-dev` 来编译和链接使用到 PCRE 功能的代码。
更新系统包列表
sudo apt update
此命令用于更新可用软件包的索引信息。它会从软件源(repositories)下载最新的软件包列表,确保你的系统知道有哪些软件包可以安装或更新。执行该命令后,系统会显示可用的软件包更新信息,但并不会实际进行更新。
安装 `libpcre3` 和 `libpcre3-dev`
sudo apt install -y libpcre3 libpcre3-dev
好像 nginx-1.24.0 使用的是 PCRE2
所以:
sudo apt install libpcre2-dev
zlib 库用于对 HTTP 包的内容做 gzip 格式的压缩,如果我们在 nginx.conf 里配置了 gzip on , 并指定对于某些类型( content-type )的 HTTP 响应使用 gzip 来进行压缩以减少网络传输量,那么,在编译时就必须把 zlib 编译进 Nginx 。
zlib1g
和zlib1g-dev
是在基于 Debian 的 Linux 发行版(如 Ubuntu)中使用的两个软件包,分别提供了 zlib 库的运行时和开发时支持。
zlib1g:
- 这是 zlib 库的运行时版本,涵盖了用于数据压缩和解压缩的核心功能。
- 安装这个包后,系统上的应用程序就可以使用 zlib 的功能进行数据压缩。
- 例如,许多应用程序和库(如 Nginx 或 Apache)在运行时都依赖于 zlib 来处理 gzip 压缩数据。
zlib1g-dev:
- 这个包包含了 zlib 库的开发文件,包括头文件和用于编译的静态库或共享库。
- 安装这个包后,开发者可以在自己的程序中包含 zlib 的头文件,并将其链接到 zlib 库。
- 这对于编写应用程序或编译依赖 zlib 的软件包是必需的。
安装 zlib库
sudo apt install -y zlib1g zlib1g-dev
如果我们的服务器不只是要支持 HTTP ,还需要在更安全的 SSL 协议上传输 HTTP ,那么就需要拥有 OpenSSL 了。另外,如果我们想使用 MD5 、 SHA1 等散列函数,那么也需要安装它
`openssl` 和 `libssl-dev` 是 OpenSSL 项目中的两个不同组件,它们的作用有所不同,具体区别如下:
1. openssl
- 类型:工具包
- 用途:`openssl` 是一个命令行工具,用于执行各种与加密相关的操作,如生成密钥、创建证书请求、管理证书、加密和解密数据、计算哈希等。可以通过命令行直接使用 OpenSSL 的功能。
- 安装后的位置:通常会在 `/usr/bin/openssl` 路径下。2. libssl-dev
- 类型:开发库
- 用途:`libssl-dev` 是 OpenSSL 的开发包,包含了开发使用 OpenSSL 库所需的头文件和其它开发文件。开发者在编写 C/C++ 应用程序时,需要使用这些库来调用 OpenSSL 提供的加密和安全功能。
- 内容:包括了 OpenSSL 的头文件(例如 `openssl/ssl.h` 和 `openssl/evp.h`)以及编译时所需的静态链接库和动态链接库。
- 安装后的位置:头文件通常位于 `/usr/include/openssl`,库文件通常位于 `/usr/lib/x86_64-linux-gnu`(取决于你的系统架构)。综上所述:
- `openssl`:用于用户直接操作的命令行工具。
- `libssl-dev`:用于开发者编写程序时链接的库和头文件。如果你只是想使用 OpenSSL 的命令行功能,安装 `openssl` 就可以了;如果你想在 C/C++ 程序中使用 OpenSSL 的加密功能,那么必须安装 `libssl-dev`。
安装 openssl
sudo apt install -y openssl
安装 libssl-dev
sudo apt install -y libssl-dev
build-essential :
build-essential
是一个软件包,包含了一组用于编译和构建软件的基本工具和库。这个包通常用于 Debian 和基于 Debian 的发行版(如 Ubuntu)。
build-essential
包中通常包括以下内容:
- 编译器:如
gcc
(GNU Compiler Collection)和g++
(GNU C++ Compiler)。- 构建工具:如
make
,用于自动化构建过程。- 库和头文件:基本的开发库和头文件,提供编译时所需的支持。
安装
build-essential
包后,系统就具备了编译其他软件包的基本环境,特别是在从源代码构建软件时尤为重要。
安装 build-essential
sudo apt install -y build-essential
再次执行:
sudo ./configure \
--sbin-path=/home/wsd/test/nginx/Nginx \
--conf-path=/home/wsd/test/nginx/conf/nginx.conf \
--error-log-path=/home/wsd/test/nginx/LOG/error.log \
--http-log-path=/home/wsd/test/nginx/LOG/access.log \
--with-pcre \
--with-http_ssl_module \
--with-http_v2_module \
--with-http_gzip_static_module \
--with-stream \
--with-stream_ssl_module
编译:
sudo make
make 命令根据 configure 命令生成的 Makefile 文件编译 Nginx 工程,并生成目标文件、最终的二进制文件。
在编译完成后,最终的 Nginx 可执行文件(通常命名为 nginx
)会被放置在 objs
目录中
安装 编译后的 nginx:
sudo make install
make install 命令根据 configure 执行时的参数将 Nginx 部署到指定的安装目录,包括相关目录的建立和二进制文件、配置文件的复制。
在 安装目录下执行
./nginx -v
nginx 官网
nginx
点击 右侧
- documentation
选择
- Beginner’s Guide
根据 指南 开始使用 nginx
执行 nginx
sudo ./nginx
打开浏览器访问
http://localhost:80
退出:
sudo ./nginx -s quit