make 编译源码生成二进制文件,无需 root 权限;sudo make install 将编译产物复制到 --prefix 指定路径(如 /usr/local/nginx),需 root 权限,完成后主程序位于 /usr/local/nginx/sbin/nginx。

源码安装 Nginx 时,make 和 make install 是两个独立但必须连续执行的关键步骤,它们不合并为一个“make 脚本”,而是由 GNU Make 工具驱动的两阶段操作:先编译出可执行文件,再将文件复制到目标路径。
make:只编译,不安装
在成功运行 ./configure 生成 Makefile 后,执行:
-
make -j$(nproc)—— 利用全部 CPU 核心并行编译,显著提速;无需 root 权限 - 这一步仅生成二进制文件(如
objs/nginx)、模块对象和临时中间文件,不会改动系统任何目录 - 若中途报错,说明依赖缺失或配置参数有误,需回退检查
./configure输出
sudo make install:复制文件到指定位置
确认 make 成功完成后,再执行:
-
sudo make install—— 必须加sudo,因为要向--prefix指定的系统路径(如/usr/local/nginx)写入文件 - 它会把编译好的主程序、配置模板、HTML 页面、日志目录结构等,按 configure 阶段定义的路径规则复制过去
- 不会覆盖已有文件(比如不会动系统自带的 /etc/nginx/),完全隔离于包管理器
验证是否完成
安装后立刻检查关键路径是否存在:
- 主程序:
/usr/local/nginx/sbin/nginx - 主配置:
/usr/local/nginx/conf/nginx.conf - 默认网页:
/usr/local/nginx/html/index.html - 运行
/usr/local/nginx/sbin/nginx -t测试配置语法 - 运行
/usr/local/nginx/sbin/nginx -V查看编译参数和模块列表
常见误区提醒
注意这几个典型问题:
- 不要跳过
make直接跑make install,否则提示 “No rule to make target 'install'” -
make install不会自动启动服务,需手动执行nginx或配置 systemd - 如果改过
--prefix,所有路径都要按该前缀推导,不能硬记/usr/local/nginx - 多次重复执行
make install是安全的,它只覆盖同名文件,不清理旧模块或配置











