Youtube视频
相关链接
小白推荐使用源安装全模块nginx
centOS
# centos7+
yum -y update
yum -y install nginx-all-modules
# centos8+
dnf -y update
dnf -y install nginx-all-modules
ubuntu
apt update && apt upgrade
apt -y install nginx-full
编译安装
CentOS9编译环境准备
# 基础软件
dnf -y install wget zip unzip
# 安装编译环境
dnf -y install gcc gcc-c++ make
# 安装PCRE库
dnf -y install pcre pcre-devel
# 安装OpenSSL库
dnf -y install openssl openssl-devel
# 安装Zlib库
dnf -y install zlib zlib-devel
# 安装Perl库
dnf -y install perl-devel perl-ExtUtils-Embed
# 安装图片过滤所需依赖
dnf -y install gd gd-devel
# 安装XSTL所需依赖
dnf -y install libxslt-devel libxml2-devel
# Centos9默认的源没有,通过安装第三方源来安装
dnf -y install https://repo.aerisnetwork.com/pub/aeris-release-9.rpm
# 安装Geoip2所需依赖
dnf -y install libmaxminddb-devel
# Centos9默认的源没有,通过安装第三方源来安装
dnf -y install http://mirror.ppa.trinitydesktop.org/trinity/rpm/el9/trinity-r14/RPMS/noarch/trinity-repo-14.0.13-1.el9.noarch.rpm
# 安装GeoIP所需依赖
dnf -y install GeoIP-devel
# -------------------------------以下单命令整合------------------------------------
# 安装第三方源
dnf -y install https://repo.aerisnetwork.com/pub/aeris-release-9.rpm
dnf -y install http://mirror.ppa.trinitydesktop.org/trinity/rpm/el9/trinity-r14/RPMS/noarch/trinity-repo-14.0.13-1.el9.noarch.rpm
# 单命令安装
dnf -y install wget zip unzip gcc gcc-c++ make pcre pcre-devel openssl openssl-devel zlib zlib-devel perl-devel perl-ExtUtils-Embed gd gd-devel libxslt-devel libxml2-devel libmaxminddb-devel GeoIP-devel
Ubuntu22 编译环境准备
# 基础软件
apt -y install wget zip unzip
# 安装编译环境
apt -y install gcc g++ make
# 安装PCRE库
apt -y install libpcre3 libpcre3-dev
# 安装OpenSSL库
apt -y install openssl libssl-dev
# 安装Zlib库
apt -y install zlib1g-dev
# 安装Perl库
apt -y install libperl-dev
# 安装图片过滤所需依赖
apt -y install libgd-dev
# 安装XSTL所需依赖
apt -y install libxml2 libxml2-dev libxslt-dev
# 安装Geoip2所需依赖
apt -y install libmaxminddb-dev
# 安装GeoIP所需依赖
apt -y install libgeoip-dev
# -------------------------------以下单命令整合------------------------------------
# 单命令安装
apt -y install wget zip unzip gcc g++ make libpcre3 libpcre3-dev openssl libssl-dev zlib1g-dev libperl-dev libgd-dev libxml2 libxml2-dev libxslt-dev libmaxminddb-dev libgeoip-dev
编译前准备
# 下载稳定版nginx安装包、以及Geoip2模块,并解压。发文前最新稳定版是1.25.3。请到官网查看最新的稳定版
wget -O /opt/nginx.tar.gz http://nginx.org/download/nginx-1.25.3.tar.gz
wget -O /opt/geoip2.zip https://github.com/leev/ngx_http_geoip2_module/archive/refs/tags/3.4.zip
cd /opt
mkdir nginx
tar -zxf nginx.tar.gz -C /opt/nginx --strip-components=1
unzip -jq geoip2.zip -d /opt/geoip2
# 创建配置目录、临时文件目录
mkdir /etc/nginx
mkdir -p /var/cache/nginx
# 新建用户和组
useradd -s /sbin/nologin -M nginx
# 进入到nginx解压目录
cd /opt/nginx
编译配置带注释(不可直接使用,用作参考)
# 编译配置带注释
./configure \
# nginx安装的根路径
--prefix=/usr/local/nginx \
# nginx可执行文件的安装路径
--sbin-path=/usr/sbin/nginx \
--conf-path=/etc/nginx/nginx.conf \
# 日志文件路径
--error-log-path=/var/log/nginx/error.log \
--http-log-path=/var/log/nginx/access.log \
# nginx master进程的pid
--pid-path=/run/nginx.pid \
# 共享储存器互斥锁文件的路径
--lock-path=/var/run/nginx.lock \
# 运行的用户以及用户组
--user=nginx \
--group=nginx \
# 临时目录设置
--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 \
# 编译模块,dynamic是动态模块,会存放在modules目录。
# 动态模块在使用时:load_module modules/ngx_http_geoip2_module.so;
# 异步文件支持
--with-file-aio \
# 线程池支持
--with-threads \
# 动态模块兼容性支持
--with-compat \
# ssl支持
--with-http_ssl_module \
# http2支持
--with-http_v2_module \
# 获取真实IP
--with-http_realip_module \
# 响应之前or之后追加内容
--with-http_addition_module \
# xml过滤器,用于转换xml响应
--with-http_xslt_module=dynamic \
# 图片过滤转换
--with-http_image_filter_module=dynamic \
# geoip模块
--with-http_geoip_module=dynamic \
# http响应内容替换
--with-http_sub_module \
# 通过WebDAV协议进行文件管理自动化
--with-http_dav_module \
# MP4、FLV视频支持
--with-http_flv_module \
# 流媒体支持,mpv.mv4.m4a
--with-http_mp4_module \
# 压缩支持
--with-http_gunzip_module \
--with-http_gzip_static_module \
# 认证模块
--with-http_auth_request_module \
# 随机首页
--with-http_random_index_module \
# 下载安全,防盗链什么的
--with-http_secure_link_module \
# 降级用,当内存不足的时候允许返回204或者444代码
--with-http_degradation_module \
# 请求分片支持
--with-http_slice_module \
# 可以设置端点获取nginx的基本访问状态
--with-http_stub_status_module \
# 用于在 Perl 中实现 location 和变量处理器,并将 Perl 调用插入到 SSI中(不懂)
--with-http_perl_module=dynamic \
# 可以用来指定perl二进制文件的路径
--with-perl=path
--with-mail=dynamic \
# 支持SSL/TLS邮箱
--with-mail_ssl_module \
# 负载均衡,实现四层协议的转发、代理或者负载均衡
--with-stream=dynamic \
# stream ssl支持
--with-stream_ssl_module \
# stream realip支持
--with-stream_realip_module \
# stream geoip支持
--with-stream_geoip_module=dynamic \
# 运行从ClientHello消息中提取信息,而不会终止SSL/TLS,可用于提取SNI,实现分流
--with-stream_ssl_preread_module \
# POP3/IMAP4/SMTP 邮件代理服务器
# 性能分析用的,开发人员使用
--with-google_perftools_module
# 启用debug调试
--with-debug
# 添加CFLAGS
--with-cc-opt=""
# 第三方模块
# 添加动态模块
#--add-dynamic-module=/path/to/ngx_http_geoip2_module
# 添加静态模块
#--add-module=/path/to/ngx_http_geoip2_module
# 静态添加geoip2模块,--with-stream 必须添加,且不能动态
--add-module=/opt/geoip2
编译配置(可直接使用)
基本包含所有核心模块,可根据自己的需要删减。最后面增加了geoip2第三方模块。需要提前下载并解压到对应的目录,不需要可删除。
./configure \
--prefix=/usr/local/nginx \
--sbin-path=/usr/sbin/nginx \
--conf-path=/etc/nginx/nginx.conf \
--error-log-path=/var/log/nginx/error.log \
--http-log-path=/var/log/nginx/access.log \
--pid-path=/run/nginx.pid \
--lock-path=/var/run/nginx.lock \
--user=nginx \
--group=nginx \
--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-compat \
--with-http_ssl_module \
--with-http_v2_module \
--with-http_realip_module \
--with-http_addition_module \
--with-http_xslt_module=dynamic \
--with-http_image_filter_module=dynamic \
--with-http_geoip_module=dynamic \
--with-http_sub_module \
--with-http_dav_module \
--with-http_flv_module \
--with-http_mp4_module \
--with-http_gunzip_module \
--with-http_gzip_static_module \
--with-http_auth_request_module \
--with-http_random_index_module \
--with-http_secure_link_module \
--with-http_degradation_module \
--with-http_slice_module \
--with-http_stub_status_module \
--with-http_perl_module=dynamic \
--with-mail=dynamic \
--with-mail_ssl_module \
--with-stream \
--with-stream_ssl_module \
--with-stream_realip_module \
--with-stream_geoip_module=dynamic \
--with-stream_ssl_preread_module \
--add-module=/opt/geoip2 \
--with-debug
查看配置信息
cat auto/options | grep YES
编译和安装
# 编译安装
make && make install
# 多线程编译,下面是3个线程
make -j3
清除编译配置
make clean
rm -rf Makefile objs
System Daemon服务模版(参考源安装提供的服务文件)
Centos
[Unit]
Description=The nginx HTTP and reverse proxy server
After=network-online.target remote-fs.target nss-lookup.target
Wants=network-online.target
[Service]
Type=forking
PIDFile=/run/nginx.pid
ExecStartPre=/usr/bin/rm -f /run/nginx.pid
ExecStartPre=/usr/sbin/nginx -t
ExecStartPost=/usr/bin/sleep 0.5
ExecStart=/usr/sbin/nginx
ExecReload=/usr/sbin/nginx -s reload
KillSignal=SIGQUIT
TimeoutStopSec=5
KillMode=mixed
PrivateTmp=true
[Install]
WantedBy=multi-user.target
Ubuntu
[Unit]
Description=A high performance web server and a reverse proxy server
Documentation=man:nginx(8)
After=network.target nss-lookup.target
[Service]
Type=forking
PIDFile=/run/nginx.pid
ExecStartPre=/usr/sbin/nginx -t -q -g 'daemon on; master_process on;'
ExecStartPost=/usr/bin/sleep 0.5
ExecStart=/usr/sbin/nginx -g 'daemon on; master_process on;'
ExecReload=/usr/sbin/nginx -g 'daemon on; master_process on;' -s reload
ExecStop=-/sbin/start-stop-daemon --quiet --stop --retry QUIT/5 --pidfile /run/nginx.pid
TimeoutStopSec=5
KillMode=mixed
[Install]
WantedBy=multi-user.target
1 条评论