Ubuntu下使用apt,源码方式安装最新nginx

一、apt方式

参考如下文章Ubuntu 添加Nginx官方deb源

二、源码方式

1.获取源码

参考nginx: download

执行如下命令获取1.24.0版本源码,解压文件,进入目录

wget https://nginx.org/download/nginx-1.24.0.tar.gz
tar -xvf nginx-1.24.0.tar.gz
cd nginx-1.24.0

2.准备编译环境

安装编译环境,相关库

sudo apt install build-essential gcc automake
sudo apt install libpcre3 libpcre3-dev
sudo apt install openssl libssl-dev
sudo apt install zlib1g zlib1g-dev

3.configure配置编译参数

如下命令为编译前配置操作,这一步会检查你系统内有没有安装待添加模块的依赖库;命令中参数大概覆盖了可能会用到的模块,请按需更改使用

./configure --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx --modules-path=/usr/lib/nginx/modules --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx.pid --lock-path=/var/run/nginx.lock --http-client-body-temp-path=/var/cache/nginx/client_temp --http-proxy-temp-path=/var/cache/nginx/proxy_temp --http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp --http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp --http-scgi-temp-path=/var/cache/nginx/scgi_temp --with-compat --with-file-aio --with-threads --with-http_addition_module --with-http_auth_request_module --with-http_dav_module --with-http_flv_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_mp4_module --with-http_random_index_module --with-http_realip_module --with-http_secure_link_module --with-http_slice_module --with-http_ssl_module --with-http_stub_status_module --with-http_sub_module --with-http_v2_module --with-mail --with-mail_ssl_module --with-stream --with-stream_realip_module --with-stream_ssl_module --with-stream_ssl_preread_module --with-http_geoip_module --with-http_stub_status_module

根据你自己的需要向二进制文件中添加你所需要的模块,比如我添加的为代理启用ssl模块等等,完整的可启用模块清单使用以下命令查看

./configure --help

如果这一步报错请仔细查看错误日志,大概率是缺少某个依赖库无法编译,只需使用apt安装对应依赖库即可,这里例举了一些常用模块对应的库

modulelib
the GeoIP module requires the GeoIP librarylibgeoip-dev
the HTTP image filter module requires the GD librarylibgd-dev
the HTTP XSLT module requires the libxml2/libxsltlibxslt-dev
the HTTP gzip module requires the zlib libraryzlib1g-dev

4.编译安装

使用如下命令完成二进制文件的编译,接着安装二进制文件和配置文件

make
make install

编译,安装完成后使用如下命令检查是否安装成功,第二条命令用于启动nginx服务

nginx -V
nginx -c /etc/nginx/nginx.conf

若无法启动nginx服务,出现/var/cache/nginx/client_temp路径无法创建错误,只需手动创建/var/cache/nginx目录并更改其主为www-data即可

mkdir /var/cache/nginx
chown www-data:www-data /var/cache/nginx/

5.使用systemctl管理nginx服务

使用源码安装的nginx没有service文件,需要自行添加并将其注册到系统服务中

使用如下命令新建文件并编辑

vim /usr/lib/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
Wants=network-online.target

[Service]
Type=forking
PIDFile=/var/run/nginx.pid
ExecStart=/usr/sbin/nginx -c /etc/nginx/nginx.conf
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s TERM $MAINPID

[Install]
WantedBy=multi-user.target

重装载服务,设置nginx自启动,重新启动nginx

sudo systemctl daemon-reload
sudo systemctl enable nginx
sudo systemctl restart nginx

还可以使用如下命令检查nginx是否运行正常

sudo systemctl status nginx

三、参考文章

源码安装Nginx以及用systemctl管理

文章作者:四文鱼Max

本文链接:https://blog.awolon.fun/archives/ubuntu-apt-sourcecode-nginx.html

许可协议:CC BY-SA 4.0

标签: none

添加新评论