tulip notes
首页
  • 学习笔记

    • 《Vue》
  • 踩坑日记

    • JavaScript
  • MQ
  • Nginx
  • IdentityServer
  • Redis
  • Linux
  • Java
  • SpringBoot
  • SpringCloud
  • MySql
  • docker
  • 算法与设计模式
  • 踩坑与提升
  • Git
  • GitHub技巧
  • Mac
  • 网络
  • 项目构建合集
  • 一些技巧
  • 面试
  • 一些杂货
  • 友情链接
  • 项目发布
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

Star-Lord

希望一天成为大师的学徒
首页
  • 学习笔记

    • 《Vue》
  • 踩坑日记

    • JavaScript
  • MQ
  • Nginx
  • IdentityServer
  • Redis
  • Linux
  • Java
  • SpringBoot
  • SpringCloud
  • MySql
  • docker
  • 算法与设计模式
  • 踩坑与提升
  • Git
  • GitHub技巧
  • Mac
  • 网络
  • 项目构建合集
  • 一些技巧
  • 面试
  • 一些杂货
  • 友情链接
  • 项目发布
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • 各种MQ

  • Nginx

    • 初识nginx
      • 认识nginx
      • 安装nginx
        • 配置环境
        • 一个问题
        • 编译
        • 安装
        • 检查是否安装
        • 重新编译的问题
        • 环境变量配置
        • Linux 查找命令的机制
        • 解决方法之一:永久添加到 PATH
      • 启动
        • 启动命令
        • 查看进程
        • 通过systemctl查看
        • 停止跟重新启动
    • Nginx的其它功能
    • Nginx的一些问题
    • 使用踩坑记录
  • IdentityServer

  • Redis

  • Linux

  • 中间件
  • Nginx
EffectTang
2023-10-19
目录

初识nginx

# 初始nginx

# 认识nginx

# 安装nginx

在linux系统中,通过手动方式,安装nginx并启动。

  • 首先你,需要下载对应文件。

  • 接着你需要进行解压

 tar -xvf nginx-1.26.3.tar.gz
 # 解压到当前文件夹下
1
2

如果你想将文件解压到特定目录,可以使用 -C 参数。例如:

tar -xvf nginx-1.26.3.tar.gz -C /path/to/directory
1

如果你没有对当前目录或文件的访问权限,可能会导致解压失败。在这种情况下,可以使用 sudo 提升权限:

sudo tar -xvf nginx-1.26.3.tar.gz
1

# 配置环境

  • 安装命令,通过configure文件进行安装,
 ./configure --prefix=/usr/local/nginx

1
2

./configure 是一个非常重要的步骤。它用于配置 Nginx 的编译环境,检查系统环境和依赖项,并生成后续编译和安装所需的 Makefile 文件。

  • ./configure:检查环境并生成 Makefile。
  • make:根据 Makefile 编译源代码,生成可执行文件。
  • make install:将编译好的文件安装到指定路径。
  • 验证和使用:启动 Nginx 并测试其功能。

# 一个问题

问题 为什么 不加 ./ 会无法执行

上述问题的答案:

  • 不加 ./ 时,系统会在 PATH 环境变量中查找 configure 文件,而当前目录(.)通常不在 PATH 中,因此会报错。
  • 加上 ./ 后,明确指定了当前目录下的 configure 文件,系统可以直接找到并执行它。
  • 出于安全性和最佳实践的考虑,建议始终显式使用 ./ 来运行当前目录下的可执行文件。

执行过程中,如果提示

./configure: error: the HTTP rewrite module requires the PCRE library.
You can either disable the module by using --without-http_rewrite_module
option, or install the PCRE library into the system, or build the PCRE library
statically from the source with nginx by using --with-pcre=<path> option.
1
2
3
4

这表明 Nginx 的 HTTP rewrite 模块 需要依赖 PCRE(Perl Compatible Regular Expressions)库,而你的系统中尚未安装该库。Nginx 使用 PCRE 库来支持正则表达式功能(如 URL 重写规则)。

也就是说,系统需要额外的文件

如果你使用的是基于 RPM 的 Linux 发行版(如 CentOS、RHEL 或 Fedora),可以通过 yum 包管理器安装 PCRE 库及其开发文件:

sudo yum install pcre pcre-devel
1
  • pcre:提供 PCRE 运行时库。
  • pcre-devel:提供编译 Nginx 所需的头文件和静态库。

安装完成后,再执行安装命令即可。

如果安装成功,之后你能看到输出结果如下的信息:

  nginx path prefix: "/usr/local/nginx"
  nginx binary file: "/usr/local/nginx/sbin/nginx"
  nginx modules path: "/usr/local/nginx/modules"
  nginx configuration prefix: "/usr/local/nginx/conf"
# .....
# 包各种路径
1
2
3
4
5
6

# 编译

接下来的步骤是 -编译,成功编译后就会生成可执行的二进制文件。

make
1

大概率会看到如下输出:

sed -e "s|%%PREFIX%%|/usr/local/nginx|" \
        -e "s|%%PID_PATH%%|/usr/local/nginx/logs/nginx.pid|" \
        -e "s|%%CONF_PATH%%|/usr/local/nginx/conf/nginx.conf|" \
        -e "s|%%ERROR_LOG_PATH%%|/usr/local/nginx/logs/error.log|" \
        < man/nginx.8 > objs/nginx.8
make[1]: Leaving directory '/usr/local/nginx/ggg'

1
2
3
4
5
6
7

# 安装

最后执行安装命令

make install
1

# 检查是否安装

nginx -v
1

# 重新编译的问题

如果你在初次编译 Nginx 时没有启用 HTTPS(SSL/TLS)支持,那么需要重新编译 Nginx 并添加相关模块(如 --with-http_ssl_module)。这是因为 Nginx 的功能模块是在编译阶段静态链接到可执行文件中的,无法动态加载。

以下是详细说明和操作步骤:

为什么需要重新编译?

Nginx 的模块分为两类:

  • 静态模块:在编译时链接到 Nginx 可执行文件中。
  • 动态模块:从 Nginx 1.9.11 开始支持,可以在运行时加载。

HTTPS 支持依赖于 ngx_http_ssl_module 模块。如果在初次编译时未启用该模块,则需要重新编译 Nginx,并显式地添加 --with-http_ssl_module 选项。

# 环境变量配置

在安装 Nginx 后,如果你直接运行 nginx -v 提示命令未找到,而必须使用完整路径 /usr/local/nginx/sbin/nginx -V 才能执行,这是因为系统的 PATH 环境变量中没有包含 Nginx 的可执行文件路径(即 /usr/local/nginx/sbin)

# Linux 查找命令的机制

  • 当你在终端输入一个命令(如 nginx)时,系统会根据 PATH 环境变量中列出的目录顺序查找对应的可执行文件。
  • 你可以通过以下命令查看当前的 PATH
echo $PATH
1
  • 输出可能类似于:
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
1
  • 如果 /usr/local/nginx/sbin 不在 PATH 中,系统就无法找到 nginx 命令。

# 解决方法之一:永久添加到 PATH

为了永久生效,可以将 /usr/local/nginx/sbin 添加到全局或用户级的环境变量配置文件中。

全局配置(所有用户可用)

编辑 /etc/profile 或 /etc/environment 文件:

在文末添加以下配置:

export PATH=$PATH:/usr/local/nginx/sbin
1

之后刷新配置

source /etc/profile
1

之后,你的nginx命令,就不用再加前缀了

# 启动

# 启动命令

直接nginx

nginx
1

# 查看进程

ps -ef|grep nginx
1

之后大概率会看到如下信息,你会发现有一个master进程和一个worker进程

root     1281394       1  0 22:35 ?        00:00:00 nginx: master process nginx
nobody   1281395 1281394  0 22:35 ?        00:00:00 nginx: worker process
root     1281669 1057667  0 22:35 pts/0    00:00:00 grep --color=auto nginx
1
2
3

# 通过systemctl查看

# systemctl status nginx
Unit nginx.service could not be found.
1
2

这表明系统中没有找到名为 nginx.service 的服务单元文件。可能的原因包括:

  1. Nginx 是手动编译安装的 如果你是通过源码手动编译安装的 Nginx,那么默认情况下不会生成 nginx.service 文件。systemctl 只能管理由包管理器(如 yum 或 apt)安装的服务,或者手动创建的服务单元文件。

  2. 你的nginx未成功安装

# 停止跟重新启动

nginx -s stop

nginx -s reload
1
2
3
上次更新: 2025/04/23, 16:23:16
SpringBoot中使用kafka
Nginx的其它功能

← SpringBoot中使用kafka Nginx的其它功能→

最近更新
01
面向切面跟自定义注解的结合
05-22
02
时间跟其他数据的序列化
05-19
03
数据加密与安全
05-17
更多文章>
Theme by Vdoing | Copyright © 2023-2025 EffectTang
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式