马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
Nginx 1.26.1 源码编译部署全过程(CentOS 7)
包管理器装 Nginx 省事,但想自己控制模块、版本和安装路径,还是得源码编译。下面在 CentOS 7 上走一遍从零到能访问欢迎页的完整流程,每一步的目的都标清楚,方便按自己的环境调整。
一、Nginx 是什么
Nginx 是高性能 HTTP 和反向代理服务器,同时也是 IMAP/POP3/SMTP 代理服务器。核心特点:
- 高性能 Web 服务器:为高并发连接设计,性能和稳定性都很强。
- 反向代理:把客户端请求转发到后端多台服务器,实现负载均衡。
- 静态内容缓存:缓存静态内容,降低后端负载,加快静态资源加载。
- SSL/TLS 支持:为网站提供加密连接。
- URL 重写:用 rewrite 模块做重定向和伪静态。
- 负载均衡:支持轮询、最少连接、IP 哈希等策略。
- 模块化设计:按需要增删功能。
- 缓存代理:缓存后端响应,减少对后端的请求。
- 访问控制:按配置限制特定 IP 访问。
- 日志
与状态监控 :记录访问信息,通过状态模块查看连接数、请求处理情况。
- WebSocket 支持:用于实时通信。
- 跨平台:Linux、BSD、macOS、Windows 都能跑。
二、编译前准备
系统:CentOS 7.x。
更新系统包:
sudo yum update
装编译工具和依赖库,Nginx 需要 gcc、make 以及 pcre、zlib、openssl 的开发包:
sudo yum install -y gcc-c++ pcre pcre-devel zlib zlib-devel openssl openssl-devel
下载源码包(Nginx 官网):
wget http://nginx.org/download/nginx-1.26.1.tar.gz
三、解压与配置
cd /opt
tar -zxvf nginx-1.26.1.tar.gz
cd nginx-1.26.1
用 ./configure 设置编译选项:
./configure --prefix=/usr/local/nginx \
--with-http_ssl_module \
--with-http_stub_status_module \
--with-http_gzip_static_module
参数说明:
--prefix=/usr/local/nginx:安装路径
--with-http_ssl_module:启用 SSL 模块
--with-http_stub_status_module:启用状态监控 模块
--with-http_gzip_static_module:启用静态文件 Gzip 压缩
四、编译安装
make
sudo make install
装完 /usr/local/nginx 下就有 sbin、conf、logs、html 四个目录。
五、配置 systemd 服务
创建服务文件:
sudo vi /etc/systemd/system/nginx.service
写入:
[Unit]
Description=The NGINX HTTP and reverse proxy server
After=network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStart=/usr/local/nginx/sbin/nginx
ExecStop=/usr/local/nginx/sbin/nginx -s quit
ExecReload=/usr/local/nginx/sbin/nginx -s reload
PrivateTmp=true
[Install]
WantedBy=multi-user.target
注意 Type=forking 必须配 PIDFile,否则 systemd 拿不到主进程 pid,服务状态会一直显示启动中。-s quit 是优雅停止,-s reload 是平滑重载配置。
六、启动与验证
sudo systemctl start nginx
sudo systemctl enable nginx
sudo systemctl status nginx
浏览器访问 http://your_server_ip,看到 Nginx 欢迎页即正常运行。
七、改配置与重载
编辑 /usr/local/nginx/conf/nginx.conf,配置 server、日志 路径、虚拟主机等。改完重启生效:
sudo systemctl restart nginx
只改了配置想平滑生效,用 sudo systemctl reload nginx 更好,不断连接。
开了 firewalld 就放行 80 端口:
# 按服务名(http 默认 80)
sudo firewall-cmd --permanent --zone=public --add-service=http
# 或按端口号
sudo firewall-cmd --permanent --zone=public --add-port=80/tcp
# 立即生效
sudo firewall-cmd --reload
九、常见坑
- 80 端口被占:Nginx 起不来先看
netstat -tunlp | grep :80,Apache 或别的旧 Nginx 常占着。
- make 报 pcre.h 找不到:
pcre-devel 没装,补一条 yum install pcre-devel。
- systemctl status 一直 starting:pid 文件路径和
PIDFile 不一致,检查 logs/nginx.pid 是否真的生成。
- 配完 reload 没生效:先
nginx -t 检查配置语法,写错时 reload 会静默失败。
- 访问不到欢迎页:按顺序查防火墙、云安全组、nginx 监听端口(
ss -tlnp | grep nginx)、server_name 匹配。
小结
源码编译 Nginx 的路径是固定的:装依赖 → 下载解压 → ./configure 选模块 → make && make install → 配 systemd → start + enable → 防火墙放行。日常维护记住两条命令:nginx -t 验配置、nginx -s reload 平滑重载,比动不动 restart 稳得多。
qidao123.com企服评测-应用市场 编辑提示 |