当前位置: 首页 > news >正文

【nginx基础】Nginx安装指南:CentOS 7.9源码编译安装Nginx 1.28.0完整指南

目录

前言

1 安装前准备工作

1.1 系统环境检查

1.2 创建专用用户(可选)

1.3 安装基础工具

2 安装编译依赖

2.1 依赖库说明

2.2 安装依赖包

3 下载并解压Nginx源码

3.1 创建工作目录

3.2 下载Nginx源码包

3.3 解压源码包

4 配置编译参数并安装

4.1 configure脚本详解

4.2 配置编译参数

4.3 编译和安装

4.4 验证安装路径

5 配置Nginx系统服务

5.1 systemd服务文件

5.2 创建服务文件

5.3 启动并设置开机自启

6 开放防火墙端口

6.1 firewalld配置

6.2 配置防火墙规则

7 验证Nginx安装成功

7.1 命令行验证

7.2 浏览器访问验证

7.3 高级验证

8 Nginx配置优化

8.1 基础配置优化

8.2 创建虚拟主机配置

8.3 SSL/TLS配置

9 Nginx维护与管理

9.1 日常维护命令

9.2 日志管理

9.3 升级Nginx

10 总结


前言

Nginx作为目前最流行的Web服务器和反向代理服务器之一,以其高性能、高并发、低内存消耗的特点,广泛应用于互联网企业。本文将详细介绍在CentOS 7.9系统中通过源码编译方式安装Nginx 1.28.0的完整过程,从环境准备到服务配置,再到优化和故障排除,为读者提供一份详实可用的技术指南。

1 安装前准备工作

1.1 系统环境检查

  • 检查系统版本:
# 查看CentOS版本信息 
cat /etc/redhat-release
  • 检查网络连接:
# 测试网络连通性 
ping -c 3 8.8.8.8 
# 检查yum源配置 
yum repolist all
  • 检查磁盘空间:
# 查看磁盘使用情况 
df -h 
# 确保有至少500MB可用空间用于编译和安装
  • 检查系统资源:
# 查看内存使用情况 
free -h 
# 建议至少有1GB可用内存用于编译

1.2 创建专用用户(可选)

  • 为了安全考虑,建议创建专用的nginx运行用户:
# 创建nginx用户
groupadd nginx
useradd -g nginx -s /sbin/nologin -M nginx# 验证用户创建
id nginx

1.3 安装基础工具

# 安装wget下载工具 
yum install wget -y

2 安装编译依赖

2.1 依赖库说明

2.2 安装依赖包

# 更新yum缓存(确保包版本最新)
yum clean all && yum makecache fast# 安装核心依赖
yum install -y gcc gcc-c++ make pcre-devel zlib-devel openssl-devel wget# 验证依赖安装
gcc --version
make --version
pcre-config --version

3 下载并解压Nginx源码

3.1 创建工作目录

# 创建源码管理目录
mkdir -p /usr/local/src
cd /usr/local/src# 创建Nginx安装目录
mkdir -p /usr/local/nginx

3.2 下载Nginx源码包

# 下载Nginx 1.28.0源码包
wget http://nginx.org/download/nginx-1.28.0.tar.gz# 验证压缩包完整性
md5sum nginx-1.28.0.tar.gz

3.3 解压源码包

# 解压源码包
tar -zxvf nginx-1.28.0.tar.gz# 进入解压后的源码目录
cd nginx-1.28.0# 查看源码结构
ls -la
  • 源码目录结构说明:
nginx-1.28.0/
├── auto/          # 自动检测脚本目录
├── conf/          # 配置文件目录
├── contrib/       # 贡献代码目录
├── docs/          # 文档目录
├── html/          # 默认网页文件目录
├── man/           # 手册页目录
├── src/           # 源代码目录
└── CHANGES        # 版本变更记录

4 配置编译参数并安装

4.1 configure脚本详解

4.2 配置编译参数

# 配置编译参数
./configure \
--prefix=/usr/local/nginx \              # 安装根目录
--with-http_ssl_module \                 # 启用HTTPS模块
--with-http_stub_status_module \         # 启用状态监控模块
--with-http_gzip_static_module \         # 启用Gzip静态压缩
--with-http_realip_module \              # 启用真实IP模块
--with-http_sub_module \                 # 启用HTTP子模块
--with-pcre \                            # 关联PCRE库
--with-pcre-jit \                        # 启用PCRE JIT
--with-stream \                          # 启用TCP/UDP代理
--with-stream_ssl_module \               # 启用流SSL模块
--user=nginx \                           # 运行用户
--group=nginx                            # 运行用户组
  • 参数详细说明:

参数

作用

说明

--prefix

指定安装目录

所有Nginx文件将安装到此目录

--with-http_ssl_module

启用HTTPS支持

必需,支持SSL/TLS加密

--with-http_stub_status_module

启用状态监控

提供Nginx运行状态页面

--with-http_gzip_static_module

启用Gzip压缩

提高传输效率

--with-pcre

关联PCRE库

支持正则表达式

--user/--group

指定运行用户

提高安全性

4.3 编译和安装

# 编译(使用多线程加速) 
make -j4 
# 安装 
make install
编译优化建议:
  • 根据CPU核心数调整-j参数,如4核CPU使用-j4
  • 如果编译失败,检查错误信息并解决依赖问题
  • 编译过程可能需要几分钟时间,请耐心等待

4.4 验证安装路径

# 查看安装目录结构 
ls -la /usr/local/nginx/
  • 目录结构说明:

5 配置Nginx系统服务

5.1 systemd服务文件

5.2 创建服务文件

# 创建systemd服务文件 
vim /usr/lib/systemd/system/nginx.service
  • 将以下内容粘贴到文件中:
[Unit]
Description=Nginx HTTP Server
After=network.target remote-fs.target nss-lookup.target[Service]
Type=forking
ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
ExecStop=/usr/local/nginx/sbin/nginx -s quit
ExecReload=/usr/local/nginx/sbin/nginx -s reload
PIDFile=/usr/local/nginx/logs/nginx.pid
Restart=on-failure
RestartSec=5
User=nginx
Group=nginx[Install]
WantedBy=multi-user.target
  • 服务文件详解:

配置项

作用

说明

Description

服务描述

便于识别服务

After

依赖服务

确保网络等基础服务就绪

Type=forking

进程类型

Nginx是守护进程

ExecStart

启动命令

指定配置文件路径

ExecStop

停止命令

优雅停止,不中断连接

ExecReload

重载命令

平滑重载配置

PIDFile

PID文件

管理进程的标识

Restart

重启策略

失败后自动重启

User/Group

运行用户

提高安全性

5.3 启动并设置开机自启

# 重新加载systemd服务
systemctl daemon-reload# 启动Nginx服务
systemctl start nginx# 设置开机自启
systemctl enable nginx# 查看服务状态
systemctl status nginx
  • 状态检查:
# 查看Nginx进程
ps aux | grep nginx# 查看监听端口
netstat -tlnp | grep :80
# 或
ss -tlnp | grep :80

6 开放防火墙端口

6.1 firewalld配置

6.2 配置防火墙规则

# 检查防火墙状态
systemctl status firewalld# 开放80端口(HTTP)
firewall-cmd --add-port=80/tcp --permanent# 开放443端口(HTTPS)
firewall-cmd --add-port=443/tcp --permanent# 重载防火墙规则
firewall-cmd --reload# 验证端口配置
firewall-cmd --list-ports
  • 防火墙管理常用命令:
# 查看防火墙状态
systemctl status firewalld# 启动防火墙
systemctl start firewalld# 停止防火墙(不推荐)
systemctl stop firewalld# 禁用防火墙(开发环境)
systemctl disable firewalld# 添加端口规则
firewall-cmd --add-port=端口号/协议 --permanent# 移除端口规则
firewall-cmd --remove-port=端口号/协议 --permanent# 查看已开放的端口
firewall-cmd --list-ports

7 验证Nginx安装成功

7.1 命令行验证

# 查看Nginx版本
/usr/local/nginx/sbin/nginx -v# 测试配置文件语法
/usr/local/nginx/sbin/nginx -t# 查看Nginx编译参数
/usr/local/nginx/sbin/nginx -V

7.2 浏览器访问验证

  • 在浏览器中输入服务器IP地址:http://服务器IP
  • 应该看到Nginx默认欢迎页,包含"Welcome to nginx!"字样
  • 如果看不到页面,检查防火墙设置和Nginx服务状态

7.3 高级验证

# 查看Nginx状态页面
curl http://localhost/nginx_status
# 需要先配置stub_status模块# 测试HTTP响应
curl -I http://localhost# 测试HTTPS(如果已配置)
curl -I https://localhost

8 Nginx配置优化

8.1 基础配置优化

  • 优化nginx.conf关键参数:
# 编辑主配置文件 
vim /usr/local/nginx/conf/nginx.conf
user nginx nginx;
worker_processes auto;
worker_rlimit_nofile 65535;events {worker_connections 65535;use epoll;multi_accept on;
}http {include       mime.types;default_type  application/octet-stream;# 日志格式log_format main '$remote_addr - $remote_user [$time_local] "$request" ''$status $body_bytes_sent "$http_referer" ''"$http_user_agent" "$http_x_forwarded_for"';access_log /usr/local/nginx/logs/access.log main;error_log /usr/local/nginx/logs/error.log warn;# 性能优化sendfile on;tcp_nopush on;tcp_nodelay on;keepalive_timeout 65;keepalive_requests 1000;# Gzip压缩gzip on;gzip_min_length 1k;gzip_buffers 4 16k;gzip_http_version 1.1;gzip_comp_level 6;gzip_types text/plain text/css text/javascript application/json application/javascript application/xml+rss application/atom+xml image/svg+xml;# 连接超时client_header_timeout 60;client_body_timeout 60;send_timeout 60;# 文件上传限制client_max_body_size 50m;# 虚拟主机配置include /usr/local/nginx/conf.d/*.conf;
}

8.2 创建虚拟主机配置

# 创建虚拟主机配置目录 
mkdir -p /usr/local/nginx/conf.d 
# 创建第一个虚拟主机配置文件 
vim /usr/local/nginx/conf.d/default.conf
server {listen 80;server_name localhost;root /usr/local/nginx/html;index index.html index.htm;# 访问日志access_log /usr/local/nginx/logs/default.access.log;error_log /usr/local/nginx/logs/default.error.log;# 静态文件缓存location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ {expires 7d;add_header Cache-Control "public, no-transform";}# PHP支持(可选)location ~ \.php$ {fastcgi_pass 127.0.0.1:9000;fastcgi_index index.php;fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;include fastcgi_params;}
}

8.3 SSL/TLS配置

# 创建SSL配置文件 
vim /usr/local/nginx/conf.d/ssl.conf
server {listen 443 ssl http2;server_name yourdomain.com;# SSL证书配置ssl_certificate /etc/nginx/ssl/yourdomain.com.crt;ssl_certificate_key /etc/nginx/ssl/yourdomain.com.key;# SSL优化ssl_session_cache shared:SSL:1m;ssl_session_timeout 5m;ssl_ciphers HIGH:!aNULL:!MD5;ssl_prefer_server_ciphers on;# 网站根目录root /usr/local/nginx/html;index index.html;# HTTP跳转HTTPSif ($scheme = "http") {return 301 https://$host$request_uri;}
}

9 Nginx维护与管理

9.1 日常维护命令

# 启动Nginx
systemctl start nginx# 停止Nginx(优雅停止)
systemctl stop nginx# 重启Nginx
systemctl restart nginx# 重载配置(不中断服务)
systemctl reload nginx# 查看服务状态
systemctl status nginx# 查看Nginx进程
ps aux | grep nginx# 查看监听端口
netstat -tlnp | grep nginx# 查看错误日志
tail -f /usr/local/nginx/logs/error.log# 查看访问日志
tail -f /usr/local/nginx/logs/access.log

9.2 日志管理

# 创建日志轮转配置 
vim /etc/logrotate.d/nginx
/usr/local/nginx/logs/*.log {dailymissingokrotate 52compressdelaycompressnotifemptycreate 644 nginx nginxsharedscriptspostrotateif [ -f /usr/local/nginx/logs/nginx.pid ]; thenkill -USR1 `cat /usr/local/nginx/logs/nginx.pid`fiendscript
}

9.3 升级Nginx

# 备份当前版本
cp -r /usr/local/nginx /usr/local/nginx.bak# 下载新版本源码
cd /usr/local/src
wget http://nginx.org/download/nginx-新版本号.tar.gz
tar -zxvf nginx-新版本号.tar.gz
cd nginx-新版本号# 使用相同配置参数编译
./configure --prefix=/usr/local/nginx \
--with-http_ssl_module \
--with-http_stub_status_module \
# ... 其他原有参数# 编译(不安装)
make# 备份二进制文件
mv /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.old# 复制新二进制文件
cp objs/nginx /usr/local/nginx/sbin/# 测试新版本
/usr/local/nginx/sbin/nginx -t# 重启服务
systemctl restart nginx

10 总结

Nginx作为现代Web架构的核心组件,其重要性不言而喻。通过源码编译安装的方式,我们不仅能够获得最新的功能和安全更新,还能够根据实际需求进行深度定制和优化。

文章转载自:

http://AxFp7xbb.bmgdL.cn
http://kzYn6xKf.bmgdL.cn
http://alN2JFsa.bmgdL.cn
http://YAZKoQDM.bmgdL.cn
http://740rJXJe.bmgdL.cn
http://3XVDB7VK.bmgdL.cn
http://iyvU4d4A.bmgdL.cn
http://SRA8WTgA.bmgdL.cn
http://2Ncmp6YZ.bmgdL.cn
http://OCQMyGAP.bmgdL.cn
http://5uydjJgW.bmgdL.cn
http://Lm4FTwdv.bmgdL.cn
http://c5KK0A7E.bmgdL.cn
http://p1Ds1w8I.bmgdL.cn
http://gyjLP5DK.bmgdL.cn
http://FdOUGVzp.bmgdL.cn
http://tkrvZ6lu.bmgdL.cn
http://1BQWW0mK.bmgdL.cn
http://kpo3iZzI.bmgdL.cn
http://X25tV2h3.bmgdL.cn
http://bBag4wcc.bmgdL.cn
http://Z20JVrrr.bmgdL.cn
http://wAwQX6bl.bmgdL.cn
http://nkGzhiLu.bmgdL.cn
http://s9FSlnyd.bmgdL.cn
http://KWXCMk6N.bmgdL.cn
http://oneZjS7A.bmgdL.cn
http://a59dDwrH.bmgdL.cn
http://duMhA331.bmgdL.cn
http://bINmSR42.bmgdL.cn
http://www.dtcms.com/a/376419.html

相关文章:

  • ShardingJDBC实战指南
  • 数据库--MySQL数据管理
  • Java全栈学习笔记33
  • 网络学习笔记
  • GitHub每日最火火火项目(9.10)
  • 基于stm32的环境监测系统/智能家居/空气质量监测系统
  • 基于PyQt5和阿里云TTS的语音合成应用开发实战[附源码】
  • Linux的V4L2视频框架学习笔记
  • Android studio安装教程——超详细(含安装包安装教程)
  • 如何将大型音频文件从 iPhone 发送到不同的设备
  • 使用阿里云容器镜像服务 ACR
  • ffmpeg内存模型
  • Android面试指南(八)
  • 不止是进度条:深入PiXSingleGUI的TpSlideProgressBar组件架构设计​
  • Flutter 视频播放器——flick_video_player 介绍与使用
  • 【Java】Hibernate管理Session
  • 【ARMv7】系统复位上电后的程序执行过程
  • Ubuntu引导修复
  • PetaLinux_User_udev
  • 《链表的优雅封装:C++ list 模拟实现与迭代器之美》
  • 基于Redis设计一个高可用的缓存
  • 看涨看跌期权平价公式原理及其拓展
  • Django 基础入门:命令、结构与核心配置全解析
  • 中断系统介绍
  • 算法题 Day5---String类(2)
  • 关于Linux系统调试和性能优化技巧有哪些?
  • 大数据电商流量分析项目实战:Hadoop初认识+ HA环境搭建(二)
  • 软考中级习题与解答——第四章_软件工程(2)
  • AutoTrack-IR-DR200底盘仿真详解:为教育领域打造的高效机器人学习实验平台
  • 介绍 Python Elasticsearch Client 的 ES|QL 查询构建器