Linux手动编译nginx自定义安装各种模块
本文中的操作过程均在debian10系统下进行,如其他系统的请自行适配。
Nginx是一款轻量级的 HTTP 服务器,时常用于服务端的反向代理和负载均衡。
手动编译安装Nginx比较复杂,但是平时一般使用最多。主要原因有:
便于管理
编译安装的Nginx,其安装地址可控,如果需要卸载,执行反编译即可
模块可控
Nginx有其丰富的模块库,如:ngx-fancyindex。使用Docker或软件包管理器安装的Nginx,模块有时不方便载入。
编译环境准备
apt install -y build-essential libpcre3 libpcre3-dev zlib1g-dev openssl libssl-dev
安装gcc编译器、正则库、zlib库、OpenSSL库,依赖都安装完成,就可以下载源码来编译了。
下载Nginx源码
# 下载源码
wget -O nginx.tar.gz https://nginx.org/download/nginx-1.23.1.tar.gz
# 解压源码
tar -xf nginx.tar.gz
# 切换源码目录
cd ./nginx-1.23.1
下载源码后,建立nginx目录。
mkdir -p /var/cache/nginx
mkdir -p /etc/nginx/conf.d/
mkdir -p /etc/nginx/modules
mkdir -p /etc/nginx/ssl/
配置和编译
接下来就是make环节了,编译时候的参数可以参考官方Nginx文档:http://nginx.org/en/docs/configure.html
如无特殊需求的,一般选择的参数是:
./configure \
--prefix=/etc/nginx \
--user=root \
--group=root \
--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-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
其中:
--prefix:Nginx主要安装路径,后续Nginx子目录依照这个变量展开
--user:设置Nginx进程启动时,所属的用户
--group:设置Nginx进程启动时,所属的用户组
如果没有报错的话,就可以编译了。
make
安装
make install
安装完毕后,还需配置systemctl守护,用来管理Nginx。
cat > /etc/systemd/system/nginx.service <<EOF
[Unit]
Description=The NGINX HTTP and reverse proxy server
After=syslog.target network-online.target remote-fs.target nss-lookup.target
Wants=network-online.target
[Service]
Type=forking
PIDFile=/run/nginx.pid
ExecStartPre=/usr/sbin/nginx -t -c /etc/nginx/nginx.conf
ExecStart=/usr/sbin/nginx -c /etc/nginx/nginx.conf
ExecReload=/usr/sbin/nginx -s reload -c /etc/nginx/nginx.conf
ExecStop=/bin/kill -s QUIT
PrivateTmp=true
[Install]
WantedBy=multi-user.target
EOF
增加配置文件后,设置开机启动并启动Nginx服务。
systemctl daemon-reload # 载入配置文件
systemctl enable nginx # 设置开机启动
systemctl start nginx # 启动nginx服务
systemctl status nginx # 查看nginx服务状态
卸载
# 停止Nginx服务
systemctl stop nginx
# 删除Nginx服务
rm -rf /usr/lib/systemd/system/nginx.service
# 重载配置
systemctl daemon-reload
# 删除Nginx编译文件
rm -rf nginx
本文参考自:https://www.php.cn/nginx/488924.html