nginx源码编译

news2024/9/20 19:24:12

华子目录

  • 准备
    • 下载nginx源码包
    • 关闭firewalld和selinux
    • 安装依赖环境
  • 安装
    • 解压
    • 关闭`nginx`的`debug`功能
    • 执行`./configure`进行环境检测
    • 添加nginx系统用户
    • 使用`make`编译
    • 使用`make install`安装
  • 进入到`prefix`指定的目录中查看
  • 启动nginx服务
  • 关闭nginx
  • 添加nginx环境变量
  • 卸载nginx

准备

下载nginx源码包

  • 在源码编译之前,我们得先下载nginx的源码包
  • https://nginx.org/download/

在这里插入图片描述

  • 这里我下载的是nginx-1.24.0.tar.gz版本
  • 下载完之后,我们使用mobaxtermnginx-1.24.0.tar.gz上传到我们的Linux服务器/root/目录下
[root@nginx ~]# ls
公共  视频  文档  音乐  anaconda-ks.cfg      vmset-rhel9-mountYum.sh
模板  图片  下载  桌面  nginx-1.24.0.tar.gz

关闭firewalld和selinux

[root@nginx ~]# systemctl is-active firewalld
inactive
[root@nginx ~]# getenforce
Disabled

安装依赖环境

[root@nginx ~]# yum install gcc gcc-g++ pcre-devel openssl-devel zlib-devel make -y

安装

解压

[root@nginx ~]# tar -zxvf nginx-1.24.0.tar.gz

[root@nginx ~]# ls
公共  视频  文档  音乐  anaconda-ks.cfg  nginx-1.24.0.tar.gz
模板  图片  下载  桌面  nginx-1.24.0     vmset-rhel9-mountYum.sh

关闭nginxdebug功能

[root@nginx ~]# vim nginx-1.24.0/auto/cc/gcc

在这里插入图片描述

执行./configure进行环境检测

  • 先进入到解压好的nginx目录中
[root@nginx ~]# cd nginx-1.24.0/
[root@nginx nginx-1.24.0]# ls
auto  CHANGES  CHANGES.ru  conf  configure  contrib  html  LICENSE  man  README  src
[root@nginx nginx-1.24.0]# ./configure --prefix=/usr/local/nginx \   #--prefix表示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加密
  • configure用来进行环境检测
  • 检测通过会生成Makefile文件和objs目录
[root@nginx nginx-1.24.0]# ls
auto     CHANGES.ru  configure  html     Makefile  objs    src
CHANGES  conf        contrib    LICENSE  man       README
  • 如果想重新检测,可以使用make clean,他就会删除Makefileobjs
[root@nginx nginx-1.24.0]# make clean
rm -rf Makefile objs

添加nginx系统用户

  • 由于我们在./configure的时候,指定了user运行用户group运行组,所以我们要添加nginx用户
[root@nginx ~]# useradd -s /sbin/nologin -M nginx

使用make编译

[root@nginx nginx-1.24.0]# ls
auto     CHANGES.ru  configure  html     Makefile  objs    src
CHANGES  conf        contrib    LICENSE  man       README
[root@nginx nginx-1.24.0]# make
  • 使用make执行编译后,objs目录里面就会出现编译后生成的文件,这些文件才是我们软件运行时真正需要的文件
  • 编译的过程nginx中的源文件系统中C语言的头文件进行对接
  • 编译完成会在objs目录下生成nginx的启动脚本nginx所需要的模块。其中启动脚本为nginx,模块放在objs/src目录下

在这里插入图片描述

  • 当然,我们在make编译时也可以使用-j指定cpu的核心数提高编译速率
[root@nginx nginx-1.24.0]# make -j2   #表示使用2个cpu核心(处理器),不加j2默认使用一个核心

使用make install安装

  • make install本质:将objs目录中的文件复制到prefix指定的目录中
[root@nginx nginx-1.24.0]# make install

进入到prefix指定的目录中查看

[root@nginx ~]# cd /usr/local/nginx/
[root@nginx nginx]# ls
conf  html  logs  sbin

启动nginx服务

[root@nginx sbin]# ./nginx
[root@nginx sbin]# ps -aux | grep nginx
avahi        771  0.0  0.1  15524  6280 ?        Ss   00:43   0:00 avahi-daemon: running [nginx.                      local]
root       39425  0.0  0.0   9832   928 ?        Ss   01:33   0:00 nginx: master process ./nginx
nginx      39426  0.0  0.1  13720  4572 ?        S    01:33   0:00 nginx: worker process
root       39428  0.0  0.0 221812  2320 pts/0    S+   01:33   0:00 grep --color=auto nginx

关闭nginx

[root@nginx sbin]# ./nginx -s stop
[root@nginx sbin]# ps -aux | grep nginx
root       39437  0.0  0.0 221812  2316 pts/0    S+   01:35   0:00 grep --color=auto nginx

添加nginx环境变量

[root@nginx ~]# vim ~/.bash_profile
# .bash_profile

# Get the aliases and functions
if [ -f ~/.bashrc ]; then
        . ~/.bashrc
fi

# User specific environment and startup programs
export PATH=$PATH:/usr/local/nginx/sbin   #在最后一行添加
[root@nginx ~]# source ~/.bash_profile   #重新加载
[root@nginx ~]# echo $PATH
/root/.local/bin:/root/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/usr/local/nginx/sbin

卸载nginx

[root@nginx ~]# rm -rf /usr/local/nginx/
[root@nginx ~]# cd nginx-1.24.0/
[root@nginx nginx-1.24.0]# make clean
rm -rf Makefile objs

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2092775.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

猫头虎 分享:Python库 SciPy 的简介、安装、用法详解入门教程

🐯 猫头虎 分享:Python库 SciPy 的简介、安装、用法详解入门教程 今天猫头虎带您深入探索SciPy,一个在数据科学和人工智能领域必不可少的Python库! 📝 摘要 在数据科学和人工智能领域,SciPy 是一个关键的…

【电脑小白】告别蓝屏恐慌:一步步教你排查和解决蓝屏问题,从此告别蓝屏烦恼!

在日常学习和工作中,电脑已经成为我们日常生活和工作中不可或缺的一部分。然而,电脑的蓝屏问题却成为许多朋友,尤其是电脑小白们的噩梦。一旦遭遇蓝屏,大多数人一时都会感到手足无措。 因此,本文将向各位朋友介绍遇到蓝…

迁移学习之领域泛化

对目标领域一无所知,并不是要适应到某一个特定的领域上的问题通常称为领域泛化。领 域泛化可又分成两种情况。一种情况是训练数据非常丰富,包含了各种不同的领域,测试数据 只有一个领域。如图1(a)所示,比如…

2024年8月30日(docker部署project-exam-system系统 并用Dockerfile构建java镜像)

一、回顾 1.使用harbao仓库 1. Python -- version 2. yum -y update 3. yum -y install python2-pip 4. pip install -- upgrade pip 20.3 -i https://mirrors.aliyun.com/pypi/simple 5. pip install docker-compose -i https://mirrors.aliyun.com/pypi/simple 6. source do…

向量、数量积、向量积

目录 一、向量的定义二、向量是有序的数字列表三、向量的基本分类四、向量的运算律五、向量的基本运算1、向量加法2、向量乘法(数乘)3、向量减法4、点积(内积或数量积)5、叉积(外积或向量积)6、向量的模&am…

RTA-OS Port Guide学习(一)-基于S32K324 OS

文章目录 前言OS Port的安装Port CharacteristicsParameters of ImplementationConfiguration ParametersStack used for C-startup(SpPreStartOS)Stack used when idle (SpStartOS)Stack overheads for ISR activation (SpIDisp)Stack overheads for ECC tasks (SpECC)Stack o…

LLM的范式转移:RL带来新的 Scaling Law

从几周前 Sam Altman 在 X 上发布草莓照片开始,整个行业都在期待 OpenAI 发布新模型。根据 The information 的报道,Strawberry 就是之前的 Q-star,其合成数据的方法会大幅提升 LLM 的智能推理能力,尤其体现在数学解题、解字谜、代…

<Rust>egui学习之小部件(三):如何为窗口UI元件设置布局(间隔、水平、垂直排列)?

前言 本专栏是关于Rust的GUI库egui的部件讲解及应用实例分析,主要讲解egui的源代码、部件属性、如何应用。 环境配置 系统:windows 平台:visual studio code 语言:rust 库:egui、eframe 概述 本文是本专栏的第三篇博…

TWRP 使用帮助 第三方Recovery

简介 TWRP 是国外安卓爱好者开发的一款工具全称为:Team Win Recovery Project。是一个由Omnirom开源团队中的Dees Troy主导开发,旨在打造最完美第三方recovery的开源项目。目前主要由包括Dees Troy在内的4个人共同维护。 主要作用包括刷机、备份、救砖 …

C++判断语句(基础速通)ac-wing

倍数 #include <iostream> using namespace std; int a, b; int main() {cin >> a >> b;if (a % b 0 || b % a 0) cout << "Sao Multiplos";else cout << "Nao sao Multiplos";return 0; }零食 #include <iostream>…

通用后台管理系统实战演示(Vue3 + element-plus)汇总篇一

天行健&#xff0c;君子以自强不息&#xff1b;地势坤&#xff0c;君子以厚德载物。 每个人都有惰性&#xff0c;但不断学习是好好生活的根本&#xff0c;共勉&#xff01; 文章均为学习整理笔记&#xff0c;分享记录为主&#xff0c;如有错误请指正&#xff0c;共同学习进步。…

菜鸟笔记-001 如何用JavaScript脚本在文字中实现向左或向右插入空格

这是一个网友在线上问我的一个问题&#xff1a; 如何用JavaScript脚本在文字中实现向左或向右插入空格 下图是在文字左边插入了1/2个空格的效果&#xff1a; 那么如何用javascript 实现向左向右插入空格&#xff1f; 其实这个功能&#xff0c;我在实际工作确实很少碰到&#xf…

【王树森】RNN模型与NLP应用(5/9):多层RNN、双向RNN、预训练(个人向笔记)

Stacked RNN&#xff08;多层RNN&#xff09; 1. 原理 多个全连接层可以堆叠&#xff0c;多个卷积层也可以堆叠。同理&#xff1a;RNN也可以堆叠形成多层RNN。 如下图所示&#xff1a;对于每一个时刻的输出 h t h_t ht​&#xff0c;它既会作为下一个时刻的输入&#xff0c;…

【C++ 第十八章】C++11 新增语法(1)

1. C11简介 在2003年C标准委员会曾经提交了一份技术勘误表(简称TC1)&#xff0c;使得C03这个名字已经取代了C98称为C11之前的最新C标准名称。不过由于C03(TC1)主要是对C98标准中的漏洞进行修复&#xff0c;语言的核心部分则没有改动&#xff0c;因此人们习惯性的把两个标准合并…

2016年系统架构师案例分析试题五

目录 案例 【题目】 【问题 1】(10 分) 【问题 2】(6 分) 【问题 3】(9 分) 【答案】 【问题 1】解析 【问题 2】解析 【问题 3】解析 相关推荐 案例 阅读以下关于 Scrum 敏捷开发过程的叙述&#xff0c;在答题纸上回答问题 1 至问题 3。 【题目】 Scrum 是一个增量…

C语言典型例题57

《C程序设计教程&#xff08;第四版&#xff09;——谭浩强》 例题4.9 判断整数是否为素数 代码&#xff1a; //《C程序设计教程&#xff08;第四版&#xff09;——谭浩强》 //例题4.9 判断整数是否为素数//【数学知识】素数&#xff1a;一个大于1的自然数&#xff0c;如果只…

我从obsidian 转入 语雀 了

遇到的问题倒是不多&#xff0c;这里记录一下&#xff1a; 1. wiki链接转markdown 用vscode打开ob工作区文件夹&#xff0c;利用正则表达式&#xff0c;替换链接 \[\[(.*?)\]\][$1](../_resources/$1) 我的图片都存在_resources文件夹里 其中ob的json&#xff0c;还有插件的…

JavaEE:多线程代码案例(定时器)

文章目录 定时器介绍Java标准库中的定时器定时器的实现 定时器 介绍 除了之前说过的单例模式,阻塞队列,线程池以外,定时器也是我们日常开发中常用的代码~ 定时器相当于"闹钟".在现实生活中,当闹钟响时,我们就需要去完成一些事情. 同理,在代码中,也经常需要"闹…

力扣406-根据身高重建队列(java详细题解)

题目链接&#xff1a;406. 根据身高重建队列 - 力扣&#xff08;LeetCode&#xff09; 前情提要&#xff1a; 因为本人最近都来刷贪心类的题目所以该题就默认用贪心方法来做。 贪心方法&#xff1a;局部最优推出全局最优。 如果一个题你觉得可以用局部最优推出全局最优&…

【自用16.】C++类

类的构成 类的设计 代码demo #include <iostream> #include <Windows.h> #include <string>using namespace std;// 定义一个“人类” class Human { public: //公有的&#xff0c;对外的void eat(); //方法&#xff0c; “成员函数”void sleep();void …