linux离线安装nginx

[复制链接]
发表于 2026-10-4 17:08:19 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×

内网机器没法连公网源,装 nginx 就得走离线路线:先把依赖按 rpm/源码包一一备齐,拷进目标机再按顺序装上,最后编译 nginx 并配 systemd 开机自启。这篇把 gcc、pcre、zlib、openssl 四个依赖的检查与安装、nginx 编译安装的两次常见报错、以及 systemd 服务文件的写法完整记一遍。

一、下载 nginx

从 nginx 官方下载页拿源码包(tar.gz),拷到目标机。

二、依赖检查与安装

依赖一共四类:gcc、pcre、zlib、openssl。

2.1 gcc

gcc -v

输出末尾有版本号就说明装了。没装就得自己下 rpm。阿里云镜像站上有现成的 CentOS 7 包清单,可以直接按名字定位:

cpp-4.8.5-44.el7.x86_64.rpm
gcc-4.8.5-44.el7.x86_64.rpm
glibc-devel-2.17-317.el7.x86_64.rpm
glibc-headers-2.17-317.el7.x86_64.rpm
kernel-headers-3.10.0-1160.el7.x86_64.rpm
libmpc-1.0.1-3.el7.x86_64.rpm
mpfr-3.1.1-4.el7.x86_64.rpm

把包传到服务器同一目录,解压后装:

rpm -Uvh *.rpm --nodeps --force

--nodeps --force 是离线环境的无奈之举,会跳过依赖校验,装之前心里有数就行。

2.2 pcre

nginx 是 C 语言写的,为了高性能用到了 pcre(正则表达式库)。查一下:

rpm -qa | grep pcre

没输出就下载编译安装,官网地址在 pcre 官网,源码包下载后:

tar -zxvf pcre2-10.44.tar.gz
cd pcre2-10.44
./configure
make
make install

./configure 后面可以带 --prefix=安装目录,不写就装默认路径。

2.3 zlib

rpm -qa | grep zlib

没有就下载 zlib 源码包,解压后 ./configure && make && make install,顺序一样。

2.4 openssl

openssl version

没输出则下载 openssl 源码包,同样解压编译安装。注意源码编译安装的库默认路径可能不在 ld 的搜索路径里,后面 nginx 编译若找不到,用 /etc/ld.so.conf.d/ 下加一行再 ldconfig,或在 configure 时通过 --with-openssl= 指定源码目录。

三、编译安装 nginx

cd /data/nginx              # 进入上传目录
tar -zxvf nginx-1.27.0.tar.gz
cd nginx-1.27.0
./configure --prefix=/usr/local/nginx
make
make install

第一个报错多半是 pcre 没装好或没找到,回头按 2.2 补装;配置好后再进目录重跑一遍上面的三条。还有一次报错是 zlib 相关,照 2.3 处理完再继续。三处都过,nginx 基本就算装完了。

四、启动与验证

cd /usr/local/nginx/sbin/
./nginx
ps -ef | grep nginx

nginx 默认监听 80 端口,本机浏览器访问 80 应能看到欢迎页。防火墙没关的话记得放行 80,否则外面连不上。

五、配 systemd 开机自启

vi /etc/systemd/system/nginx.service

按 i 写入下面内容,ESC 后 :wq 保存。/usr/local/nginx 换成你自己 nginx 的安装路径(不是源码解压路径):

[Unit]
Description=The nginx HTTP and reverse proxy server
After=network.target

[Service]
Type=forking
ExecStartPre=/usr/local/nginx/sbin/nginx -t
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s stop

[Install]
WantedBy=multi-user.target

两个 stop 的区别:

nginx -s quit   # 温和,等当前请求处理完再退出
nginx -s stop   # 立即停止

先把命令行启动的旧进程停掉,再:

sudo systemctl daemon-reload
sudo systemctl enable nginx.service
sudo systemctl start nginx.service
sudo systemctl status nginx.service
systemctl list-units --type=service
sudo systemctl stop nginx.service

要验证是否真能开机自启,直接 reboot 重启看一次,比只看 enable 输出可靠。

六、离线环境的通用套路

  • 先 rpm -qa | grep xxx 或 xxx --version 逐个确认,别一股脑全装;
  • 依赖顺序:编译器 → 基础库 → 压缩/加密库 → 主程序;
  • 离线包尽量在同版本、同架构的机器上下载,架构错了白忙一场;
  • 编译报「找不到 xxx.h」八成是头文件路径没进 gcc 搜索路径,用 --extra-cflags=-I路径 补;
  • 编译报「cannot find -lxxx」是链接时找不到库,用 --extra-ldflags=-L路径 补。

qidao123.com企服评测-应用市场 编辑提示

回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表