ubuntu24.04环境源码编译安装nginx 1.20.2及常见问题解决

有时需要用到nginx的特定功能模块,在二进制版本里面没有编译进去,此时就需要采用源码编译的方式进行安装。ubuntu24.04环境源码编译安装nginx 1.20.2主要包括以下几个步骤:准备编译环境,下载源码,执行编译安装,解决编译安装过程中遇到的各种错误。

1. 源码安装nginx

在Ubuntu 24.04上安装特定版本的Nginx,比如1.20,可以通过以下步骤完成。由于Ubuntu官方仓库通常只提供最新版本或者LTS版本的Nginx,因此我们采用下载特定版本的源码进行编译安装。

以下是详细步骤:

1.1 更新包列表并安装必要的软件包

安装编译工具和依赖库

首先,更新包列表并确保安装了curlgnupg2

sudo apt update
sudo apt install build-essential libpcre3 libpcre3-dev zlib1g zlib1g-dev libssl-dev libxml2-dev libxslt1-dev

1.2 下载并解压Nginx源代码

wget http://nginx.org/download/nginx-1.20.2.tar.gz
tar -zxvf nginx-1.20.2.tar.gz
cd nginx-1.20.2

1.3 配置Nginx

./configure --prefix=/usr/share/nginx --sbin-path=/usr/sbin/nginx --modules-path=/usr/lib64/nginx/modules --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --http-client-body-temp-path=/var/lib/nginx/tmp/client_body --http-proxy-temp-path=/var/lib/nginx/tmp/proxy --http-fastcgi-temp-path=/var/lib/nginx/tmp/fastcgi --http-uwsgi-temp-path=/var/lib/nginx/tmp/uwsgi --http-scgi-temp-path=/var/lib/nginx/tmp/scgi --pid-path=/run/nginx.pid --lock-path=/run/lock/subsys/nginx --user=nginx --group=nginx --with-compat --with-debug --with-file-aio --with-google_perftools_module --with-http_addition_module --with-http_auth_request_module --with-http_dav_module --with-http_degradation_module --with-http_flv_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_mp4_module --with-http_perl_module=dynamic --with-http_random_index_module --with-http_realip_module --with-http_secure_link_module --with-http_slice_module --with-http_ssl_module --with-openssl=/home/test/openssl-1.1.1k --with-http_stub_status_module --with-http_sub_module --with-http_v2_module --with-http_xslt_module=dynamic --with-mail --with-mail_ssl_module --with-pcre --with-pcre-jit --with-stream=dynamic --with-stream_ssl_module --with-stream_ssl_preread_module --with-threads --add-module=/home/test/nginx-1.20.1/headers-more-nginx-module --add-module=/home/test/nginx-1.20.1/nginx-ntlm-module --add-module=/home/test/nginx-1.20.1/nginx-sticky-module

1.4 编译并安装

make
sudo make install

1.5 启动Nginx

编译和安装完成后,启动Nginx:

sudo /usr/local/nginx/sbin/nginx

1.6 验证Nginx是否运行

你可以通过访问服务器的IP地址或本地主机(http://localhost)来验证Nginx是否正确运行。你也可以使用以下命令检查Nginx的状态:

sudo /usr/local/nginx/sbin/nginx -t

输出应该显示配置文件测试成功。

1.7 配置Nginx为系统服务(可选)

为了方便管理,可以将Nginx配置为系统服务。创建一个新的systemd服务文件:

sudo nano /etc/systemd/system/nginx.service

添加以下内容:

[Unit]
Description=nginx - high performance web server
Documentation=http://nginx.org/en/docs/
After=network-online.target remote-fs.target nss-lookup.target

[Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStartPre=/usr/local/nginx/sbin/nginx -t
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true

[Install]
WantedBy=multi-user.target

保存并关闭文件,然后重新加载systemd配置:

sudo systemctl daemon-reload

启用并启动Nginx服务:

sudo systemctl enable nginx
sudo systemctl start nginx

你可以通过以下命令检查服务状态:

sudo systemctl status nginx

正常情况下,通过上述步骤,你可以在Ubuntu 24.04系统上成功通过源码安装Nginx 1.20版本。如果在安装过程中遇到任何问题,请检查终端输出的错误信息,并根据提示解决依赖问题或配置错误。

2. 单独安装gcc

2.1 安装gcc

在Ubuntu 24.04上,你可以通过以下步骤安装GCC.

2.2 安装GCC

安装GCC以及构建工具:

sudo apt install build-essential

build-essential是一个元包,包含了构建软件所需的基本编译器和库,包括GCC、g++make等工具。

2.3 验证安装

安装完成后,验证GCC是否已正确安装:

gcc --version

3. 安装openssl 1.1.1

当出现类似如下错误时,表示需要openssl 1.x,这里选择openssl 1.1.1。

ngx_event_openssl.c:4251:(.text+0x6322): undefined reference to `SSL_get_peer_certificate'

3.1 编译安装OpenSSL 1.1.1

以下是编译安装OpenSSL 1.1.1的步骤:

3.2 下载源码

访问OpenSSL官方网站下载需要的版本,例如:

wget https://www.openssl.org/source/openssl-1.1.1k.tar.gz

3.3 解压源码

tar -xzf openssl-1.1.1k.tar.gz
cd openssl-1.1.1k

3.4 编译并安装

./config
make
sudo make install

通过这些步骤,你可以解决libssl1.1相关的问题,并在Ubuntu 24.04上继续使用需要该库的应用程序。如果依然遇到问题,建议查看具体的错误信息或考虑升级/替换依赖库的方式

4. 编译时ngx_http_perl_module.so Error 1报错

make[1]: *** [objs/Makefile:1738: objs/ngx_http_perl_module.so] Error 1

在Ubuntu 24.04系统环境下,通过源码安装Nginx 1.20版本时遇到 make[1]: *** [objs/Makefile:1738: objs/ngx_http_perl_module.so] Error 1 错误,通常与Perl模块相关的依赖问题有关。

安装必要的Perl开发包

确保你已经安装了必要的Perl开发包:

sudo apt update
sudo apt install libperl-dev

然后重新运行Nginx的配置、编译和安装步骤。

5. 编译时libxml2/libxslt报错

nginx编译报错 ./configure: error: the HTTP XSLT module requires the libxml2/libxslt

在Ubuntu 24.04系统上编译Nginx时遇到./configure: error: the HTTP XSLT module requires the libxml2/libxslt错误,表示系统缺少用于编译HTTP XSLT模块的libxml2libxslt库。

要解决这个问题,你需要安装这些开发库。以下是详细步骤:

5.1 更新包列表

首先,更新你的包列表:

sudo apt update

5.2 安装libxml2和libxslt开发库

安装必需的开发库:

sudo apt install libxml2-dev libxslt1-dev

5.3 重新运行Nginx的配置脚本

安装完开发库后,返回到你的Nginx源代码目录,并重新运行配置脚本:

cd /path/to/nginx-source-directory
./configure --with-http_ssl_module --with-http_xslt_module

请根据你的需求添加其他配置选项。

上一篇:vue3 之 内置组件Teleport详解


下一篇:建立一个简单的todo应用程序(前端React;后端FastAPI;数据库MongoDB)