Ubuntu下使用apt,源码方式安装最新nginx
Ubuntu下使用apt,源码方式安装最新nginx
一、apt方式
参考如下文章Ubuntu 添加Nginx官方deb源
二、源码方式
1.获取源码
执行如下命令获取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安装对应依赖库即可,这里例举了一些常用模块对应的库
module | lib |
---|---|
the GeoIP module requires the GeoIP library | libgeoip-dev |
the HTTP image filter module requires the GD library | libgd-dev |
the HTTP XSLT module requires the libxml2/libxslt | libxslt-dev |
the HTTP gzip module requires the zlib library | zlib1g-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
三、参考文章
文章作者:四文鱼Max
本文链接:https://blog.awolon.fun/archives/ubuntu-apt-sourcecode-nginx.html
许可协议:CC BY-SA 4.0