gslsoft

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

🌱在Linux系统下通过源码编译方式安装nginx是一种灵活且可控的方式,适用于需要自定义模块或特定版本的场景。

01在线安装依赖环境工具 

源码编译需要基础编译工具及部分依赖库(如正则、压缩、https支持等)。在linux系统下安装任何新软件包之前,更新你的软件包列表是一个好习惯

 安装gcc

安装nginx需要先将下载的源码进行编译,编译依赖gcc环境。

  • centos/rhel系

sudo dnf update && sudo dnf install -y gcc gcc-c++ //8+版本

sudo yum update && sudo yum install -y gcc gcc-c++

亦可安装开发工具集合:

sudo yum groupinstall -y "Development Tools"

  • ubuntu/debian

sudo apt update && sudo apt install -y build-essential //包含了GCC编译器以及其他一些开发工具,例如make和g++

  • fedora

sudo dnf update && sudo dnf install -y gcc gcc-c++ //22+版本

sudo yum update && sudo yum install -y gcc gcc-c++

  • arch linux

sudo pacman -Suy  && sudo pacman -S base-devel //包含了GCC编译器以及其他一些开发工具,例如make和g++

  • openSUSE

sudo zypper refresh && sudo zypper install --type pattern devel_basis

  • 验证是否成功安装

gcc --version

安装pcre pcre-devel

nginx的rewrite模块和http核心模块会使用到pcre正则表达式语法,这里需要安装两个安装包pcre和pcre-devel,第一个安装包提供编译版本的库,而第二个提供开发阶段的头文件和编译项目的源代码。

  • centos/rhel系

sudo yum install -y epel-release && sudo yum install -y pcre pcre-devel //7版本

  • ubuntu/debian

sudo apt update &&sudo apt install -y libpcre3 libpcre3-dev

  • fedora

sudo dnf update && sudo dnf install -y pcre pcre-devel

  • arch linux

sudo pacman -Suy  && sudo pacman -S pcre pcre-devel

  • openSUSE

sudo zypper refresh && sudo zypper install pcre pcre-devel

  • 验证是否成功安装

ls /usr/include | grep pcre.h

安装zlib

zlib库提供了开发人员的压缩算法,在nginx的各种模块中需要使用gzip压缩。

  • centos/rhel系

sudo yum install -y epel-release && sudo yum install -y zlib zlib-devel

  • ubuntu/debian

sudo apt update && sudo apt-get install -y zlib1g zlib1g-dev

  • fedora

sudo dnf update && sudo dnf install -y zlib-devel

  • arch linux

sudo pacman -Suy  && sudo pacman -S zlib-devel

  • openSUSE

sudo zypper refresh && sudo zypper install zlib1 zlib-devel

  • 验证是否成功安装

ls /usr/include/zlib.h 

安装openSSL

nginx不仅支持http协议,还支持https,如果要使用https协议,需要安装 openSSL库

  • centos/rhel系

sudo yum install -y epel-release && sudo yum install -y openssl openssl-devel

  • ubuntu/debian

sudo apt update && sudo apt-get install -y openssl libssl-dev

  • fedora

sudo dnf update && sudo dnf install -y openssl openssl-devel

  • arch linux

sudo pacman -Suy  && sudo pacman -S openssl

  • openSUSE

sudo zypper refresh && sudo zypper install openssl

  • 验证是否成功安装

openssl version

ls /usr/include/openssl/

02nginx源码编译安装

iptables是Linux内核netfilter框架的前端工具,直接操作防火墙规则,适合需要精细控制的场景(如nat、复杂流量过滤)。注意:iptables 规则重启后会丢失,需手动持久化。

 下载nginx源码包

从nginx官网获取最新稳定版,https://nginx.org/en/download.html

下载源码包(替换为最新版本号)

wget https://nginx.org/download/nginx-1.26.3.tar.gz

解压

tar -zxvf nginx-1.26.3.tar.gz

cd nginx-1.26.3

创建nginx组与nginx用户

groupadd nginx

useradd -g nginx -s /sbin/nologin nginx  # 无登录权限的安全用户

配置编译选项

执行 ./configure 脚本配置编译参数(根据自己需求调整),推荐示例配置:

./configure \

--prefix=/chris/xrx/nginx-1.26.3 \  # 安装路径

--sbin-path=/chris/xrx/nginx-1.26.3/sbin/nginx \  # 可执行文件的安装路径

--conf-path=/chris/xrx/nginx-1.26.3/conf/nginx.conf \ # 主配置文件路径

--error-log-path=/chris/xrx/nginx-1.26.3/logs/error.log \ # 错误日志路径

--http-log-path=/chris/xrx/nginx-1.26.3/logs/access.log \ # 访问日志路径

--pid-path=/chris/xrx/nginx-1.26.3/logs/nginx.pid \ # pid文件路径

--lock-path=/chris/xrx/nginx-1.26.3/logs/nginx.lock \ # 锁文件路径

--http-client-body-temp-path=/chris/xrx/nginx-1.26.3/temp/client_temp \ # 客户端临时文件

--http-proxy-temp-path=/chris/xrx/nginx-1.26.3/temp/proxy_temp \ # 代理临时文件

--http-fastcgi-temp-path=/chris/xrx/nginx-1.26.3/temp/fastcgi_temp \ # fastcgi临时文件

--http-uwsgi-temp-path=/chris/xrx/nginx-1.26.3/temp/uwsgi_temp \ # uwsgi临时文件

--http-scgi-temp-path=/chris/xrx/nginx-1.26.3/temp/scgi_temp \ # scgi临时文件

--with-http_ssl_module \ # https支持

--with-http_v3_module \ # http/3支持

--with-http_gzip_static_module \ # 静态gzip

--with-http_realip_module \ # 真实IP

--with-http_stub_status_module \ # 状态统计

--user=nginx \ # 运行用户(需提前创建)

--group=nginx \ # 运行组(需提前创建)

编译安装

make -j2 && make install # -j 参数根据cpu核心数优化速度,如4核用 -j4

权限授予

chown -R nginx:nginx /chris/xrx/nginx-1.26.3/sbin/nginx

03初始化配置

可将下列命令以文本编辑工具存为.sh脚本,与nginx安装目录同层,便于启动、停止与重启nginx,亦可创建systemd服务文件管理nginx。

 启动nginx

cd nginx-1.26.3

chmod +x ./sbin/*

./sbin/nginx -p ./

停止nginx

cd nginx-1.26.3

chmod +x ./sbin/*

./sbin/nginx -p ./ -s stop

重启nginx

cd nginx-1.26.3

chmod +x ./sbin/*

./sbin/nginx -s reload ./

配置系统服务

sudo vi /etc/systemd/system/nginx.service

[Unit]

Description=The NGINX HTTP and reverse proxy server

After=network.target

 [Service]

Type=forking

PIDFile=/chris/xrx/nginx-1.26.3/logs/nginx.pid

ExecStartPre=/chris/xrx/nginx-1.26.3/sbin/nginx -t

ExecStart=/chris/xrx/nginx-1.26.3/sbin/nginx

ExecReload=/chris/xrx/nginx-1.26.3/sbin/nginx -s reload

ExecStop=/bin/kill -s QUIT \$MAINPID

TimeoutStopSec=5

KillMode=mixed

PrivateTmp=true

 [Install]

WantedBy=multi-user.target 

重新加载systemd 配置

sudo systemctl daemon-reload

启动nginx

sudo systemctl start nginx

设置开机自启

sudo systemctl enable nginx 

查看 Nginx 主进程

ps -ef | grep nginx

posted on 2025-07-28 16:13  gslsoft  阅读(84)  评论(0)    收藏  举报