在 ubuntu 22.04 中,通过源码编译安装 LNMP 中的 Nginx 服务(非 Lua 版)
关于 LNMP 环境中的 PHP 安装,请参考:在 ubuntu 22.04 中,通过源码编译安装 LNMP 中的 PHP 环境
系统环境
标题 | 版本 | 备注 |
---|---|---|
系统版本 | 22.04.3 LTS (Jammy Jellyfish) | - |
内核版本 | 5.15.0-91-generic #101-Ubuntu SMP Tue Nov 14 13:30:08 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux | - |
Nginx | v1.24.0 | - |
Nginx 介绍
Nginx 官方站点: https://nginx.org/
Nginx(发音同 engine x)是一款高性能的 HTTP 和反向代理服务器,也是一个 IMAP/POP3/SMTP 代理服务器。Nginx 由俄罗斯的工程师 Igor Sysoev 开发,最初是为了解决俄罗斯访问量第二的 Rambler.ru 网站的高负载问题。
特点
Nginx 的特点包括:
- 高性能: Nginx 能够处理并发连接数,并且 CPU 和内存消耗低。
- 稳定性: Nginx 运行稳定,即使在高负载情况下也能保持稳定运行。
- 丰富的功能: Nginx 支持多种 HTTP 协议,包括 HTTP/1.0、HTTP/1.1 和 HTTP/2。它还支持反向代理、负载均衡、动静分离、Gzip 压缩等功能。
- 开源: Nginx 是开源软件,可以免费使用和修改。
Nginx 已经被广泛应用于各种网站和应用程序,包括:
- 大型网站:淘宝、京东、百度、新浪等
- 负载均衡:Nginx 可以用于为多个服务器提供负载均衡,提高服务器的利用率和性能。
- 反向代理:Nginx 可以用于反向代理到不同的服务器,实现动静分离、缓存等功能。
- 应用程序服务器:Nginx 可以用于作为应用程序服务器,运行 PHP、Python 等应用程序。
优势
Nginx 的优势
Nginx 相比于其他 Web 服务器,具有以下优势:
- 高性能: Nginx 能够处理更多的并发连接,并且 CPU 和内存消耗更低。
- 稳定性: Nginx 运行稳定,即使在高负载情况下也能保持稳定运行。
- 丰富的功能: Nginx 支持多种 HTTP 协议,包括 HTTP/1.0、HTTP/1.1 和 HTTP/2。它还支持反向代理、负载均衡、动静分离、Gzip 压缩等功能。
- 开源: Nginx 是开源软件,可以免费使用和修改。
场景
Nginx 的应用场景
Nginx 可以用于以下场景:
- Web 服务器: Nginx 可以用于作为 Web 服务器,提供静态和动态资源的访问。
- 反向代理: Nginx 可以用于反向代理到不同的服务器,实现动静分离、缓存等功能。
- 负载均衡: Nginx 可以用于为多个服务器提供负载均衡,提高服务器的利用率和性能。
- 应用程序服务器: Nginx 可以用于作为应用程序服务器,运行 PHP、Python 等应用程序。
总结
总结
Nginx 是一款高性能、稳定、功能丰富的 Web 服务器,已经被广泛应用于各种网站和应用程序。如果你正在寻找一款优秀的 Web 服务器,Nginx 是一个很好的选择。
Nginx 安装
以下操作都在 root 用户下执行。
脚本安装
手动安装
安装前的准备:
1.添加 nginx 用户,禁止其登陆系统:
1 | useradd -s /sbin/nologin nginx |
2.安装必要的编译包和模块依赖包:
1 | apt install -y gcc g++ git make autoconf automake curl wget libtool libmaxminddb-dev libxslt1-dev libgd-dev libgeoip-dev libgoogle-perftools-dev libperl-dev |
依赖及模块的下载
下载解压 pcre:
点击这里下载 pcre
源码包到 /usr/local/src/
目录下并解压
1 | wget --no-check-certificate -O /usr/local/src/pcre-8.45.tar.gz https://zenlayer.dl.sourceforge.net/project/pcre/pcre/8.45/pcre-8.45.tar.gz |
下载解压 openssl:
点击这里下载 openssl
源码包到 /usr/local/src/
目录下并解压
1 | wget -O /usr/local/src/openssl-1.1.1u.tar.gz https://www.openssl.org/source/old/1.1.1/openssl-1.1.1u.tar.gz |
下载解压 zlib:
点击这里下载 zlib
源码包到 /usr/local/src/
目录下并解压
1 | wget -O /usr/local/src/zlib-1.3.1.tar.gz https://www.zlib.net/zlib-1.3.1.tar.gz |
下载 libatomic_ops 源文件
点击这里从 github 克隆 libatomic_ops
源码文件到 /usr/local/src/
目录下并执行 ./autogen.sh
:
1 | # 同步的代码 |
下载 IP 定位模块:ngx_http_geoip2_module
点击这里从 github 克隆 ngx_http_geoip2_module
源码文件到 /usr/local/src/
目录下:
1 | git clone https://github.com/leev/ngx_http_geoip2_module.git /usr/local/src/ngx_http_geoip2_module |
下载目录索引模块:ngx-fancyindex
点击这里从 github 克隆 ngx-fancyindex
源码文件到 /usr/local/src/
目录下:
1 | git clone https://github.com/aperezdc/ngx-fancyindex.git /usr/local/src/ngx-fancyindex |
下载第三方开源健康检查模块: nginx_upstream_check_module
点击这里从 github 克隆 nginx_upstream_check_module
源码文件到 /usr/local/src/
目录下:
1 | git clone https://github.com/nginx-modules/nginx_upstream_check_module.git /usr/local/src/nginx_upstream_check_module |
下载安装 nginx
1.点击这里从 nginx 官方站点下载 nginx
源码包到 /usr/local/src/
目录下:
1 | wget -O /usr/local/src/nginx-1.24.0.tar.gz http://nginx.org/download/nginx-1.24.0.tar.gz |
2.将下载好的源码包解压至下载目录;
1 | tar -zxf /usr/local/src/nginx-1.24.0.tar.gz -C /usr/local/src/ |
3.进入 nginx 解压目录:
1 | cd /usr/local/src/nginx-1.24.0/ |
4.配置 confiugre
参数:
1 | ./configure --prefix=/usr/local/nginx \ |
5.执行 make
进行编译:
1 | make |
6.执行 make install
进行安装;
1 | make install |
7.在 /etc/profile.d/
目录下创建 nginx 环境配置文件 nginx.sh
,内容为:
1 | echo 'PATH=$PATH:/usr/local/nginx/sbin' > /etc/profile.d/nginx.sh && source /etc/profile.d/nginx.sh |
8.在 nginx 安装目录 /usr/local/nginx/tmp
目录下创建以下三个目录:
1 | mkdir -p /usr/local/nginx/tmp/{client_body,proxy,fastcgi} |
9.在 /lib/systemd/system/
目录下创建 nginx 启动脚本文件 nginx.service
,内容为:
1 | cat << 'EOF' > /lib/systemd/system/nginx.service |
10.执行命令 systemctl daemon-reload
加载 nginx 脚本:
1 | systemctl daemon-reload |
11.执行命令 systemctl enable --now nginx.service
启动 nginx 服务并将其设置为开机启动:
1 | systemctl enable --now nginx.service |
12.执行命令 systemctl status nginx.service
查看 nginx 的状态,如果为 running
则说明 nginx 启动成功,否则,请根据报错信息进行排错:
1 | root@vm001-ubuntu2204:~# systemctl status nginx.service |
报错及解决方法
configure 报错
错误一:error: Libtool library used but ‘LIBTOOL’ is undefined
报错详情:
1 | src/Makefile.am:14: error: Libtool library used but 'LIBTOOL' is undefined |
解决方法:
安装 Libtool
1 | apt install -y libtool |
错误二:error: the geoip2 module requires the maxminddb library.
报错详情:
1 | adding module in /usr/local/src/ngx_http_geoip2_module |
解决方法:
安装 libmaxminddb-dev
1 | apt install -y libmaxminddb-dev |
错误三:error: unsupported LuaJIT version; ngx_http_lua_module requires LuaJIT 2.x.
报错详情:
1 | adding module in /usr/local/src/lua-nginx-module |
解决方法:
安装
1 | apt install -y |
错误四:error: the HTTP XSLT module requires the libxml2/libxslt
报错详情:
1 | checking for libxslt ... not found |
解决方法:
安装 libxslt1-dev
1 | apt install -y libxslt1-dev |
错误五:error: the HTTP image filter module requires the GD library.
报错详情:
1 | checking for GD library ... not found |
解决方法:
安装 libgd-dev
1 | apt install -y libgd-dev |
错误六:error: the GeoIP module requires the GeoIP library.
报错详情:
1 | checking for GeoIP library ... not found |
解决方法:
安装 libgeoip-dev
1 | apt install -y libgeoip-dev |
错误七:error: the Google perftools module requires the Google perftools
报错详情:
1 | checking for Google perftools ... not found |
解决方法:
安装 libgoogle-perftools-dev
1 | apt install -y libgoogle-perftools-dev |
make 报错
错误一: cannot find /usr/local/src/libatomic_ops//src/libatomic_ops.a: No such file or directory
报错详情:
1 | /usr/bin/ld: cannot find /usr/local/src/libatomic_ops//src/libatomic_ops.a: No such file or directory |
解决方法:
将 /usr/local/src/libatomic_ops/src/.libs/libatomic_ops.a
软链接到 /usr/local/src/libatomic_ops/src/
目录下:
1 | ln -s /usr/local/src/libatomic_ops/src/.libs/libatomic_ops.a /usr/local/src/libatomic_ops/src/ |
错误二:cannot find -lperl: No such file or directory
报错详情:
1 | /usr/bin/ld: cannot find -lperl: No such file or directory |
解决方法:
安装 libperl-dev
1 | apt install -y libperl-dev |
安装总结
在 ubuntu 22.04 中,通过源码编译安装 LNTP 中的 Nginx 服务(非 Lua 版)
2024年4月11号
关于对 Lua 的支持。本人尝试过编译进去,但是编译过程中报错,就没有进一步的折腾了。也许后续有时间了会去折腾,说不定:
1 | # 将 luajit2 克隆到本地: |
在 ubuntu 22.04 中,通过源码编译安装 LNMP 中的 Nginx 服务(Lua 版)
2024年4月11号
关于对 Lua 支持 nginx 安装方法,请参考:在 ubuntu 22.04 中,通过源码编译安装 LNMP 中的 Nginx 服务(Lua 版)