在 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 zlib1g-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 |
如果这里没有使用 zlib
源码包,则需要使用 apt 命令安装 zlib1g-dev
包。
下载 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 |
下载 ngx_devel_kit 源码
点击这里从 github 克隆 ngx_devel_kit
源码文件到 /usr/local/src/
目录下:
1 | git clone https://github.com/vision5/ngx_devel_kit.git |
lua-nginx-module 源码
点击这里从 github 克隆 lua-nginx-module
源码文件到 /usr/local/src/
目录下:
1 | git clone https://github.com/openresty/lua-nginx-module.git |
下载 openresty 作者提供的 luajit2 源码进行安装
点击这里从 github 克隆 luajit2
源码文件到 /usr/local/src/
目录下,然后进行安装:
1 | git clone https://github.com/openresty/luajit2.git |
下载安装 lua-resty-core
点击这里从 github 克隆 lua-resty-core
源码文件到 /usr/local/src/
目录下,然后进行安装:
1 | git clone https://github.com/openresty/lua-resty-core.git |
下载安装 lua-resty-lrucache
点击这里从 github 克隆 lua-resty-lrucache
源码文件到 /usr/local/src/
目录下,然后进行安装:
1 | git clone https://github.com/openresty/lua-resty-lrucache.git |
下载安装 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 |
13.编辑 nginx 主配置 /usr/local/nginx/conf/nginx.conf
,在虚拟主机段添加 lua 解析代码,如下:
1 | server { |
14.检测 nginx 配置并重载 nginx 服务:
1 | nginx -t && nginx -s reload |
15.打开浏览器,输入:服务器IP/lua ,如下图:
报错及解决方法
configure 包错
错误一:./configure: error: the HTTP gzip module requires the zlib library.
包错详情:
1 | ./configure: error: the HTTP gzip module requires the zlib library. |
解决方法:
安装 zlib1g-dev
即可
1 | $ sudo apt install -y zlib1g-dev |
nginx -t 报错
错误一:error while loading shared libraries: libluajit-5.1.so.2: cannot open shared object file: No such file or directory
报错详情:
1 | root@vm001-ubuntu2204:/usr/local/src/nginx-1.24.0# nginx -t |
解决方法:
将 luajit2 安装目录 /usr/local/luajit2/lib/
下的 libluajit-5.1.so.2
文件复制到 /usr/lib/
目录下即可
1 | cp /usr/local/luajit2/lib/libluajit-5.1.so.2 /usr/lib/ |
启动报错
错误一:[alert] failed to load the ‘resty.core’ module
报错详情:
1 | root@vm001-ubuntu2204:/usr/local/src/nginx-1.24.0# nginx |
解决方法:
下载 lua-resty-core
和 lua-resty-lrucache
模块进行安装。注意安装目录指定到 LUA_LIB_DIR=/usr/local/share/lua/5.1
安装方法见上面!!!!