有时需要用到nginx的特定功能模块,在二进制版本里面没有编译进去,此时就需要采用源码编译的方式进行安装。ubuntu24.04环境源码编译安装nginx 1.20.2主要包括以下几个步骤:准备编译环境,下载源码,执行编译安装,解决编译安装过程中遇到的各种错误。
1. 源码安装nginx
在Ubuntu 24.04上安装特定版本的Nginx,比如1.20,可以通过以下步骤完成。由于Ubuntu官方仓库通常只提供最新版本或者LTS版本的Nginx,因此我们采用下载特定版本的源码进行编译安装。
以下是详细步骤:
1.1 更新包列表并安装必要的软件包
安装编译工具和依赖库
首先,更新包列表并确保安装了curl
和gnupg2
:
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模块的libxml2
和libxslt
库。
要解决这个问题,你需要安装这些开发库。以下是详细步骤:
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
请根据你的需求添加其他配置选项。