基于 Nginx 的网站服务器与 LNMP 平台搭建指南

news2024/12/23 10:43:25

一,Nginx概述

(一)Nginx的作用

Nginx在网络服务器架构中扮演着多面的角色。其初始设定专注于静态网络数据的处理,能高效地为用户提供诸如HTML,CSS,JavaScript等静态资源。当面对动态数据时,借助php - fpm模块,Nginx能够解析php源代码,实现动态页面的生成与展示。在处理动态网络数据的策略上,动静分离是一大亮点。通过合理配置,静态资源由Nginx直接处理,而涉及动态数据处理的请求则被转发至专门的后端服务器,如Apache,如此一来,既充分发挥了Nginx在处理静态资源方面的优势,又借助后端服务器的动态处理能力,实现整个网站系统的搞笑运作。此外,Nginx的反向代理功能结合正则表达式,不仅能够精准地实现动静分离,还能对数据流量进行限速,有效防止恶意流量攻击或因流量过大导致服务器过载,确保服务器的稳定运行与数据的安全传输。

(二)Nginx优势

在高并发处理能力方面,Nginx表现卓越,每秒可处理30000至50000个并发请求。这得益于其高效的事件驱动模块和异步非堵塞的处理机制。与传统的服务器架构相比,当面对大量并发连接时,Nginx无需为每个连接创建独立的线程或者进程,而是通过少量的进程或线程高效地处理众多连接事件,极大地减少了系统资源的消耗。从硬件资源占用角度来看,Nginx极为“节俭”。它在运行过程中对CPU,内存等硬件资源的需求相对较低,能够在有限的硬件资源条件下,稳定地运行并提供优质的服务,这使得企业在搭建网站服务器时,可以在不投入大量昂贵硬件设备的情况下,依然能够应对高流量的访问需求,降低了运营成本。响应速度快是Nginx的又一显著优势。无论是处理静态资源请求还是动态页面的生成与响应,Nginx都能迅速地将数据返回给客户端。其内部优化的算法和高效的缓存机制,使得在面对重复请求时,能够快速地从缓存中获取数据,减少了数据处理和传输的时间,为用户带来流畅的浏览体验。

二,Nginx配置文件组成

(一)全局配置文件

全局配置文件犹如Nginx服务器的“总纲”,其中国所设定的参数会在整个服务器运行期间发挥基础性的作用,影响着服务器的核心运行逻辑与整体性能表现。例如,配置文件中的用户权限设置,日志记录的基本路径与级别等参数,会贯穿于服务器的各个操作环节,从启动时的资源初始化到运行过程中的数据处理与交互,都受到全局配置文件的制约与引导。

(二)I/O事件配置

I/O时间配置是Nginx性能优化的关键所在。在这部分配置中,可以精细地调整与输入输出操作相关的参数,如连接超时时间,缓冲区大小等。通过合理地设置这些参数,能够使Nginx更好地适应不同网络环境和业务需求。例如,在高延迟的网络环境中,,可以适当增大连接超时时间,以避免网络波动导致链接终端;而在处理大量小文件传输的场景下,优化缓冲区大小则可以提高数据传输效率,减少数据拷贝次数,从而显著提升服务器的数据处理吞吐量与响应速度。

(三)http配置

http配置主要聚焦于虚拟主机的架构与管理。在这一区域内,可以为不同的域名,IP地址或端口定义独立的虚拟主机配置。每个虚拟主机就像是一个独立的网站服务器,拥有自己的域名解析,网站根目录,访问日志设置等。通过这种灵活的配置方法,一台物理服务器可以轻松地承载多个网站应用,实现资源的高效利用与网站的隔离管理,满足企业多站点运营的需求。

三,安装配置Nginx服务器

(一)创建管理Nginx服务组和用户

在CentOS系统环境下,构建Nginx服务的第一步是创建专门的服务组和用户。执行以下命令:

[root@centos01 ~]# groupadd nginx
[root@centos01 ~]# useradd -M -s /sbin/nologin -g nginx nginx

(二)安装依赖程序

Nginx的正确编译与运行依赖于一些特定的程序库,使用yum命令安装这些依赖程序:

[root@centos01 ~]# yum -y install pcre-devel zlib-devel

pcre - devel 库为Nginx提供了强大的正则表达式支持,使其在处理URL重写,访问控制等功能是更加灵活高效;zlib - devel库则用于实现数据的压缩与解压缩功能,在网络传输过程中们可以对数据进行压缩,减少传输宽带的占用,提高数据传输效率。

(三)解压Nginx

将Nginx安装包解压到指定的目录,并进入解压后的源文件目录:

[root@centos01 ~]# tar zxf /mnt/nginx-1.6.0.tar.gz -C /usr/src/
[root@centos01 ~]# cd /usr/src/nginx-1.6.0/

此操作将Nignx的安装包解压到/usr/src/目录下,为后续的编译和安装操作做好准备。进入解压后的目录,方便执行后续的配置命令。

(四)配置Nginx服务

执行配置命令:

[root@centos01 nginx-1.6.0]#./configure --prefix=/usr/local/nginx/ --user=nginx --group=nginx --with-http_stub_status_module

”--prefix=/usr/local/nginx/“参数明确了Nginx的安装路径,将其安装在/usr/local/nginx/目录下,便于统一管理和维护;”--user=nginx“和”--group=nginx“参数指定了Nginx运行时所使用的用户和组,确保服务以专门的用户身份运行,遵循最小权限原则,提高系统安全性;”--with-http_status_module“模块,该模块能够提供Nginx的运行状态信息,如当前连接数,请求处理情况等,方便管理员实时监控服务器的运行状态并进行性能分析与故障排查。

(六)优化Nginx命令

通过创建符号链接来优化Nginx命令的使用便捷性:

[root@centos01 nginx-1.6.0]# ln -s /usr/local/sbin/* /usr/local/sbin/
[root@centos01 nginx-1.6.0]# cd

这一操作使得在系统的任意路径下都能够直接使用 Nginx 命令,无需输入完整的命令路径,提高了操作效率,尤其是在进行脚本编写或命令行快速操作时,更为便捷。

(七)Nginx命令的基础使用

查看Nginx版本:

[root@centos01 ~]# nginx -v

此命令简洁地输出 Nginx 的版本信息,帮助管理员快速确认当前服务器所安装的 Nginx 版本,以便在进行升级或故障排查时参考。

查看主配值文件是否存在错误:

[root@centos01 ~]# nginx -t

在对 Nginx 配置文件进行修改后,使用该命令可以在不启动或重启服务的情况下,快速检查配置文件的语法正确性。如果配置文件存在错误,命令会输出详细的错误信息,提示管理员进行修正,避免因配置错误导致服务启动失败或运行异常。

(八)Nginx目录作用

查看Nginx安装根目录:

[root@centos01 ~]# ls -ld /usr/local/nginx/

该命令展示了 Nginx 安装根目录的详细信息,包括权限设置、所有者等。在 Nginx 安装根目录下,包含了几个重要的子目录:

conf:存放主配置文件,如 nginx.conf。此文件是 Nginx 服务器的核心配置文件,包含了全局配置、虚拟主机配置、http 模块配置等众多关键信息。管理员通过编辑该文件,可以实现对 Nginx 服务器的全方位定制,从服务器的基本运行参数到各个虚拟主机的详细设置,都在这个文件中进行定义。

html:作为默认网站根目录,在初始状态下,存放着 Nginx 的默认页面文件。当用户访问服务器的根域名且未指定具体的页面路径时,Nginx 会从这个目录中查找并返回默认的页面文件。管理员可以将自己的网站文件放置在此目录下,或者根据虚拟主机的配置,将不同虚拟主机的网站文件放置在对应的目录中,并在配置文件中指定相应的根目录路径。

logs:用于存储 Nginx 的各类日志文件,如 access.log(访问日志)、error.log(错误日志)等。访问日志记录了用户对服务器的访问请求信息,包括访问时间、访问的 URL、客户端 IP 地址等,这些信息对于分析用户行为、统计流量数据以及安全审计都具有重要价值;错误日志则记录了 Nginx 在运行过程中遇到的各种错误信息,如配置错误、模块加载失败、文件读取错误等,管理员通过查看错误日志,可以快速定位和解决服务器运行过程中出现的问题。

sbin:包含 Nginx 服务命令,如启动、停止、重启等操作的可执行文件。这些命令是管理员对 Nginx 服务进行日常管理的重要工具,通过在命令行中执行相应的命令,可以灵活地控制 Nginx 服务的运行状态,实现服务器的启动与停止、配置文件的重新加载等操作。

四,配置虚拟机主机

(一)Nginx服务:

启动Nginx服务:

[root@centos01 ~]# nginx

此命令启动 Nginx 服务,在启动过程中,Nginx 会读取配置文件中的参数,初始化服务器资源,创建监听套接字,准备接收客户端的连接请求。如果配置文件正确且系统资源充足,服务将顺利启动并开始处理用户请求。

查看Nginx服务运行状态:

[root@centos01 ~]# netstat -anptu | grep nginx

该命令通过 netstat 工具查看当前系统中与 Nginx 相关的网络连接信息。输出结果包括 Nginx 监听的端口、连接的客户端 IP 地址以及对应的进程 ID 等信息。管理员可以根据这些信息判断 Nginx 服务是否正常运行,是否有客户端连接,以及连接的数量和状态等,从而及时发现潜在的问题或异常情况。

停止Nginx服务:

[root@centos01 ~]# killall nginx

或者使用更优雅的停止方式:

[root@centos01 ~]# killall -s QUIT nginx

“killall nginx” 命令直接向 Nginx 进程发送终止信号,强制停止服务。这种方式适用于需要立即停止服务的紧急情况,但可能会导致一些正在处理的请求中断。而 “killall -s QUIT nginx” 命令则向 Nginx 进程发送 QUIT 信号,使 Nginx 进程在处理完当前的请求后再停止服务,相对更加 “温和”,能够避免数据丢失或请求中断带来的不良影响。

重启Nginx服务:

[root@centos01 ~]# killall -s HUP nginx

此命令向 Nginx 进程发送 HUP 信号,促使 Nginx 重新加载配置文件并重启服务。在修改了 Nginx 配置文件后,使用该命令可以使新的配置生效,而无需完全停止和重新启动服务,从而减少服务中断的时间,提高服务器的可用性。

(二)Nginx服务控制脚本

创造脚本:

[root@centos01 ~]# vim /etc/init.d/nginx

脚本内容如下:

#!/bin/bash
# chkconfig: 35 80 21
# description: Nginx Service Control Script

# Nginx 可执行文件路径
NGINX_CMD="/usr/local/nginx/sbin/nginx"
# Nginx 进程 PID 文件路径
NGINX_PID="/usr/local/nginx/logs/nginx.pid"

# 检查 Nginx 是否已经在运行
is_running() {
    if [ -f "$NGINX_PID" ]; then
        pid=$(cat "$NGINX_PID")
        if ps -p $pid > /dev/null 2>&1; then
            return 0
        end
    end
    return 1
}

# 启动 

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

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

相关文章

web复习(五)

一、补零 二、打印出五行五列的星星 三、用户输入行数和列数并打印相应行数和列数的⭐ 四、打印倒三角星星(第一行一个,第二行两个...,以此类推) 五、用户输入秒数,可以自动转换为时分秒 六、随机点名

法规标准-C-NCAP评测标准解析(2024版)

文章目录 什么是C-NCAP?C-NCAP 评测标准C-NCAP评测维度三大维度的评测场景及对应分数评星标准 自动驾驶相关评测场景评测方法及评测标准AEB VRU——评测内容(测什么?)AEB VRU——评测方法(怎么测?)车辆直行与前方纵向行走的行人测试场景&…

XRP价格跌破2.20美元 1.94美元是否下一波牛市的关键支撑?

原文转自:XRP价格跌破2.20美元 1.94美元是否下一波牛市的关键支撑? - 币热网 - 区块链数字货币新闻消息资讯 XRP价格经历剧烈波动后强势反弹,$1.94或成新牛市关键支撑 在过去24小时内,XRP价格经历了一场过山车式的剧烈波动。价…

centos-stream9系统安装docker

如果之前安装过docker需要删除之前的。 sudo dnf -y remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine 安装yum-utils工具: dnf -y install yum-utils dnf-plugin…

H264编解码标准码流分析:SPS语法

H264编解码标准 SPS 语法解析 解释:H264编解码标准中的SPS(Sequence Parameter Set,序列参数集)是一组编码视频序列的全局参数,包含了视频编码序列的基本属性和配置信息。分析工具:elecard streamEye、elecard StreamAnalyzer、h264Visa 等elecard StreamAnalyzer 展示形…

使用 AI 辅助开发一个开源 IP 信息查询工具:一

本文将分享如何借助当下流行的 AI 工具,一步步完成一个开源项目的开发。 写在前面 在写代码时,总是会遇到一些有趣的机缘巧合。前几天,我在翻看自己之前的开源项目时,又看到了 DDNS 相关的讨论。虽然在 2021 年我写过两篇相对详细的教程&am…

门控循环单元(GRU):深度学习中的序列数据处理利器

目录 ​编辑 引言 GRU的诞生背景 GRU的核心机制 GRU的计算过程 GRU的数学公式 GRU的应用领域 代码示例:PyTorch中的GRU GRU与LSTM的比较 参数比较 GRU的技术发展 BiGRU(双向GRU) BiGRU的实现示例 GRU与CNN的结合 GRU的应用案例…

Sui 基金会任命 Christian Thompson 为新任负责人

Sui 基金会是专注于推动 Sui 蓬勃发展的生态增长与采用的机构。近日,基金会宣布任命 Christian Thompson 为新任负责人。在 Sui 主网发布的开创性一年里,Sui 凭借其无与伦比的速度、可扩展性和效率,迅速崛起为领先的 Layer 1 区块链之一&…

Vue2五、商品分类:My-Tag表头组件,My-Table整个组件

准备: 安包 npm less less-loader。拆分:一共分成两个组件部分: 1:My-Tag 标签一个组件。2:My-Table 整体一个组件(表头不固定,内容不固定(插槽)) 一&…

mysql运维篇笔记——日志,主从复制,分库分表,读写分离

目录 日志 错误日志 二进制日志 查询日志 慢查询日志 主从复制 概念: 优点: 原理: 搭建: 1,服务器准备 2,主库配置 3,从库配置 4,测试 分库分表: 介绍 问题分析 中心思想…

【JavaEE初阶】线程 和 thread

本节⽬标 认识多线程 掌握多线程程序的编写 掌握多线程的状态 一. 认识线程(Thread) 1概念 1) 线程是什么 ⼀个线程就是⼀个 "执⾏流". 每个线程之间都可以按照顺序执⾏⾃⼰的代码. 多个线程之间 "同时" 执⾏着多份代码. 还…

设计模式期末复习

一、设计模式的概念以及分类 二、设计模式的主题和意图 设计模式的主题是关于软件设计中反复出现的问题以及相应的解决方案。这些主题是基于长期实践经验的总结,旨在提供一套可复用的设计思路和框架,以应对软件开发中的复杂性和变化性。 三、面向对象程…

【小白51单片机专用教程】protues仿真AT89C51入门

课程特点 无需开发板0基础教学软件硬件双修辅助入门 本课程面对纯小白,因此会对各个新出现的知识点在实例基础上进行详细讲解,有相关知识的可以直接跳过。课程涉及protues基本操作、原理图设计、数电模电、kell使用、C语言基本内容,所有涉及…

MFC用List Control 和Picture控件实现界面切换效果

添加List Control 和Picture控件 添加 3个子窗体 把子窗体边框设置为None, 样式设为Child 声明 CListCtrl m_listPageForm;void ShowForm(int nIndex);void CreatFormList();void CMFCApplication3Dlg::DoDataExchange(CDataExchange* pDX) {CDialogEx::DoDataExchange(pDX);DD…

Linux高并发服务器开发 第五天(压缩解压缩/vim编辑器)

目录 1.压缩和解压缩 1.1压缩 1.2解压缩 2.vim编辑器 2.1vim的3种工作模式 2.2切换编辑模式 2.3保存和退出 2.4光标移动 1.压缩和解压缩 - Linux 操作系统,默认支持的 压缩格式:gzip、bzip2。 默认,这两种压缩格式,只能…

接口测试Day-02-安装postman项目推送Gitee仓库

postman安装 下载 Postman(已提供安装包,此步可以跳过) https://www.postman.com/downloads/安装 Postman 安装Postman插件newman 要想给 postman 安装 newman 插件,必须 先 安装 node.js。 这是前提! 安装node.js 可能…

虚拟地址空间 -- 虚拟地址,虚拟内存管理

1. C/C语言的内存空间分布 用下列代码来观察各种区域的地址&#xff1a; #include <stdio.h> #include <unistd.h> #include <stdlib.h>int g_unval; int g_val 100;int main(int argc, char *argv[], char *env[]) {const char *str "helloworld&qu…

【数字化】华为数字化转型架构蓝图-2

目录 1、客户联结的架构思路 1.1 ROADS体验设计 1.2 具体应用场景 1.3 统一的数据底座 1.4 案例与成效 2、一线作战平台的架构思路 2.1 核心要素 2.2 关键功能 2.3 实施路径 2.4 案例与成效 3、能力数字化的架构思路 3.1 能力数字化的核心目标 3.2 能力数字化的实…

【优选算法】—移动零(双指针算法)

云边有个稻草人-CSDN博客 想当一名牛的程序员怎么能少的了练习算法呢&#xff1f;&#xff01; 今天就立即开启一个新专栏&#xff0c;专干算法&#xff0c;提高算法能力&#xff08;废柴的我也在准备蓝桥杯哈哈&#xff09;—— 目录 1.【 283. 移动零 - 力扣&#xff08;Lee…

AI的进阶之路:从机器学习到深度学习的演变(三)

&#xff08;承接上集&#xff1a;AI的进阶之路&#xff1a;从机器学习到深度学习的演变&#xff08;二&#xff09;&#xff09; 四、深度学习&#xff08;DL&#xff09;&#xff1a;机器学习的革命性突破 深度学习&#xff08;DL&#xff09;作为机器学习的一个重要分支&am…