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

高性能web服务器3——Nginx编译安装

Nginx 编译安装

准备环境

  1. 系统要求
    • 操作系统:Linux 或类 Unix 系统。
    • 编译器:GCC 或其他兼容的 C 编译器。

源码安装需要提前准备标准的编译器,GCC的全称是(GNU Compiler collection),其有GNU开发,并以
GPL即LGPL许可,是自由的类UNIX即苹果电脑Mac OS X操作系统的标准编译器,因为GCC原本只能处理C语言,所以原名为GNU C语言编译器,后来得到快速发展,可以处理C++,Fortran,pascal,objective C,java以及Ada等其他语言,此外还需要Automake工具,以完成自动创建Makefile的工作,Nginx的一些模块需要依赖第三方库,比如: pcre(支持rewrite),zlib(支持gzip模块)和openssl(支持ssl模块)等

  1. 安装依赖包
    • PCRE (Perl Compatible Regular Expressions):用于正则表达式支持。
    • zlib:用于 gzip 压缩支持。
    • OpenSSL:用于 SSL/TLS 支持。
    • 其他可能需要的库(例如:GeoIP)。

例如,在 Debian/Ubuntu 上安装这些依赖项:

 sudo apt-get updatesudo apt-get install build-essential libpcre3-dev zlib1g-dev libssl-dev

在RHEL上安装依赖项`

 dnf install gcc pcre-devel zlib-devel openssl-devel -y

下载源码

  1. 下载 Nginx 源码
    • 访问 Nginx 官方网站或 GitHub 仓库获取最新版本的源代码。
    • 例如,下载最新稳定版:
[root@Nginx nginx]# tar zxf nginx-1.24.0.tar.gz
[root@Nginx nginx-1.24.0]# useradd -s /sbin/nologin -M nginx
[root@Nginx nginx]# cd nginx-1.24.0/
[root@Nginx nginx-1.24.0]# ls
auto CHANGES.ru configure html Makefile objs src
CHANGES conf contrib LICENSE man README

配置编译选项

  1. 编译前配置

    • 进入源码目录后,可以通过 ./configure 脚本来指定编译选项。
    • 常见的编译选项包括启用第三方模块、设置安装路径等。

    例如,配置 Nginx 以启用 gzip 压缩、PCRE 支持和 SSL/TLS 支持:

[root@Nginx nginx-1.24.0]# ./configure --prefix=/usr/local/nginx \
--user=nginx \ # 指定nginx运行用户
--group=nginx \ # 指定nginx运行组
--with-http_ssl_module \ # 支持https://
--with-http_v2_module \ # 支持http版本2
--with-http_realip_module \ # 支持ip透传
--with-http_stub_status_module \ # 支持状态页面
--with-http_gzip_static_module \ # 支持压缩
--with-pcre \ # 支持正则
--with-stream \ # 支持tcp反向代理
--with-stream_ssl_module \ # 支持tcp的ssl加密
--with-stream_realip_module # 支持tcp的透传ip

./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --add-module=/root/echo-nginx-module-0.63 --with-http_ssl_module --with-http_v2_module --with-http_realip_module --with-http_stub_status_module --with-http_gzip_static_module --with-pcre --with-stream --with-stream_ssl_module \

编译与安装

  1. 编译 Nginx

    • 执行 make 命令来编译 Nginx。
    make
    
  2. 安装 Nginx

    • 使用 make install 命令来安装 Nginx 到指定位置。
     make install
    

验证安装

启动 Nginx

  • 在安装目录下启动 Nginx,或者根据系统的初始化脚本启动 Nginx。
/usr/local/nginx/sbin/nginx

验证 Nginx

  • 检查 Nginx 是否正在运行。
ps aux | grep nginx
[root@Nginx nginx-1.24.0]# ls /usr/local/nginx/
conf html logs sbin #nginx完成安装以后,有四个主要的目录

conf:保存nginx所有的配置文件,其中nginx.conf是nginx服务器的最核心最主要的配置文件,其他
的.conf则是用来配置nginx相关的功能的,例如fastcgi功能使用的是fastcgi.conf和fastcgi_params
两个文件,配置文件一般都有一个样板配置文件,是以.default为后缀,使用时可将其复制并将default后缀
去掉即可。
html目录中保存了nginx服务器的web文件,但是可以更改为其他目录保存web文件,另外还有一个50x的web
文件是默认的错误页面提示页面。
logs:用来保存nginx服务器的访问日志错误日志等日志,logs目录可以放在其他路径,比
如/var/logs/nginx里面。
sbin:保存nginx二进制启动脚本,可以接受不同的参数以实现不同的功能。

  • 访问 Nginx 的默认页面,确保 Nginx 正确安装并运行。
curl http://localhost

启动脚本与服务管理

  1. 创建启动脚本

    • 对于不同的 Linux 发行版,可能需要创建相应的系统服务文件(如 systemd 单元文件)以便管理 Nginx。
    • 将 Nginx 添加到开机启动列表。
  2. 配置防火墙

    • 如果系统有防火墙,需要打开相应的端口(通常是 80 和 443)。
  3. 配置 SELinux 或 AppArmor

    • 如果系统启用了 SELinux 或 AppArmor,可能需要调整策略以允许 Nginx 正常工作。

4.验证版本及编译参数

[root@Nginx ~]# vim ~/.bash_profile
export PATH=$PATH:/usr/local/nginx/sbin
[root@Nginx ~]# source ~/.bash_profile
[root@Nginx ~]# nginx -V
nginx version: nginx/1.24.0
built by gcc 11.4.1 20231218 (Red Hat 11.4.1-3) (GCC)
built with OpenSSL 3.0.7 1 Nov 2022
TLS SNI support enabled
configure arguments: --group=nginx --with-http_ssl_module --with-http_v2_module -
-with-http_realip_module --with-http_stub_status_module --withhttp_gzip_static_module --with-pcre --with-stream --with-stream_ssl_module --
with-stream_realip_module

编译了nginx环境变量就能够使用nginx命令

[root@Nginx ~]# nginx -v
nginx version: nginx/1.18.0
Usage: nginx [-?hvVtTq] [-s signal] [-c filename] [-p prefix] [-g directives]
Options:
-?,-h : this help
-v : show version and exit
-V : show version and configure options then exit #显示版本和编译参数
-t : test configuration and exit #测试配置文件是否异
-T : test configuration, dump it and exit #测试并打印
-q : suppress non-error messages during configuration testing #静默
模式
-s signal : send signal to a master process: stop, quit, reopen, reload #
发送信号,reload信号 会生成新的worker,但master不会重新生成
-p prefix : set prefix path (default: /etc/nginx/) #指定Nginx 目录
-c filename : set configuration file (default: /etc/nginx/nginx.conf) #
配置文件路径
-g directives : set global directives out of configuration file #设置全局指令,注意和
配置文件不要同时配置,否则冲突

示例
在这里插入图片描述

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Spring MVC Controller返回json日期格式配置失效的解决办法
  • CUDA编程07 - 卷积的优化
  • TikTok达人营销与品牌建设:长期视角下的策略布局
  • Zookeeper服务注册及心跳机制详解
  • 【操作系统】什么是进程?什么是线程?两者有什么区别(面试常考!!!)
  • 设计模式---构建者模式(Builder Pattern)
  • 详解线索分层的目的、维度与创新实践
  • 【Java】了解线程 Thread 类的使用,如何创建、终止、等待一个线程,一文读懂不迷路
  • 【论文学习与撰写】快捷搜索指令filetype:pdf,搜索引擎关键词搜索pdf格式文件或者word格式文件。文献搜索方法大全。
  • 26 slave写入数据解决与GTIDS主从复制搭建
  • 白骑士的C#教学实战项目篇 4.4 游戏开发
  • 《向量数据库指南》——解决方案:采用安全、高性能的Milvus Cloud向量数据库,赋能Dopple AI的创新与发展
  • 速盾:博客主机租用怎么提高访问速度呢?
  • “LOCAL_LISTENER”参数导致业务无法连接数据库,文末附Oracle连接故障检查监听的排查流程
  • 如何高效的利用低代码技术进行数据建模
  • [PHP内核探索]PHP中的哈希表
  • 【附node操作实例】redis简明入门系列—字符串类型
  • 【挥舞JS】JS实现继承,封装一个extends方法
  • Electron入门介绍
  • electron原来这么简单----打包你的react、VUE桌面应用程序
  • Git初体验
  • HashMap ConcurrentHashMap
  • JavaScript-Array类型
  • Java程序员幽默爆笑锦集
  • java中具有继承关系的类及其对象初始化顺序
  • Redash本地开发环境搭建
  • SQLServer之索引简介
  • Terraform入门 - 1. 安装Terraform
  • vue-cli在webpack的配置文件探究
  • vuex 笔记整理
  • 看图轻松理解数据结构与算法系列(基于数组的栈)
  • 配置 PM2 实现代码自动发布
  • 容器服务kubernetes弹性伸缩高级用法
  • 为物联网而生:高性能时间序列数据库HiTSDB商业化首发!
  • 智能网联汽车信息安全
  • Unity3D - 异步加载游戏场景与异步加载游戏资源进度条 ...
  • 回归生活:清理微信公众号
  • 京东物流联手山西图灵打造智能供应链,让阅读更有趣 ...
  • 我们雇佣了一只大猴子...
  • ​直流电和交流电有什么区别为什么这个时候又要变成直流电呢?交流转换到直流(整流器)直流变交流(逆变器)​
  • ## 临床数据 两两比较 加显著性boxplot加显著性
  • #laravel部署安装报错loadFactoriesFrom是undefined method #
  • #免费 苹果M系芯片Macbook电脑MacOS使用Bash脚本写入(读写)NTFS硬盘教程
  • (1/2) 为了理解 UWP 的启动流程,我从零开始创建了一个 UWP 程序
  • (12)Linux 常见的三种进程状态
  • (2024,Vision-LSTM,ViL,xLSTM,ViT,ViM,双向扫描)xLSTM 作为通用视觉骨干
  • (Charles)如何抓取手机http的报文
  • (delphi11最新学习资料) Object Pascal 学习笔记---第14章泛型第2节(泛型类的类构造函数)
  • (翻译)terry crowley: 写给程序员
  • (附源码)SSM环卫人员管理平台 计算机毕设36412
  • (附源码)计算机毕业设计SSM疫情居家隔离服务系统
  • (转)Linux整合apache和tomcat构建Web服务器
  • (转)linux自定义开机启动服务和chkconfig使用方法
  • (转)菜鸟学数据库(三)——存储过程
  • (转载)深入super,看Python如何解决钻石继承难题