Nginx的安装及负载均衡搭建

一.Nginx的安装

1)准备安装环境

yum install -y make gcc gcc-c++ pcre-devel pcre zlib zlib-devel openssl openssl-devel
  •  PERE

PCRE(Perl Compatible Regular Expressions)是一个Perl库,包括 perl 兼容的正则表达式库。

nginx的http模块使用pcre来解析正则表达式,所以需要在linux上安装pcre库。

注:pcre-devel是使用pcre开发的一个二次开发库。nginx也需要此库

  •  zlib

zlib库提供了很多种压缩和解压缩的方式,nginx使用zlib对http包的内容进行gzip,所以需要在linux上安装zlib库。

  • openssl

OpenSSL 是一个强大的安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及SSL协议,

并提供丰富的应用程序供测试或其它目的使用。

nginx不仅支持http协议,还支持https(即在ssl协议上传输http),所以需要在linux安装openssl库。

2)下载安装包

下载地址:nginx: download

Nginx官网提供了三个类型的版本

  • Mainline version:是 Nginx 目前主力在做的版本,可以说是开发版
  • Stable version:最新稳定版,生产环境上建议使用的版本
  • Legacy versions:遗留的老版本的稳定版

3)上传安装包并解压

tar xvf nginx-1.24.0.tar.gz -C /usr/local/

设置软链接

ln -s /usr/local/nginx-1.24.0/ /usr/local/nginx

4)创建用户和组

groupadd -r nginx
useradd nginx -u 666 -r -g nginx -c "nginx user"
  • groupadd -r nginx: 这个命令用于创建一个名为“nginx”的用户组,并将其添加到系统中。选项 -r 表示创建系统组。

  • useradd nginx -u 666 -r -g nginx -c "nginx user": 这个命令用于创建一个名为“nginx”的用户,并将其添加到组“nginx”中。选项 -u 666 表示将用户的UID设置为666。选项 -r 表示创建系统账户。选项 -g nginx 表示将用户添加到组“nginx”中。选项 -c "nginx user" 表示为用户指定一个自定义的描述信息,这里是“nginx user”。

5)编译安装

./configure \ 
> --user=nginx --group=nginx \
> --prefix=/usr/local/nginx \
> --with-http_stub_status_module \
> --with-http_ssl_module
  • ./confire 用于对将安装的软件进行配置,检查当前的环境是否满足安装软件( Nginx )的依赖关系 。
  •  --prefix 选项用于设置 Nginx 安装目录,默认值是 usr / local/ nginx ,因而也可以省略此选项或指定到其位置,
  • --with-http_ssl_module 选项用于设置在 Nginx 中允许使用 http_ss modu 模块的相关功能。
  • 行尾的 '\'表示未结束需要换到下一行书写。
  • "--with-"选项用于添加模块,Nginx中有很多模块,需要安装时只需要重新编译在通过选项添加模块即可
make && make install

        "&&"符号根据前一个命令的返回值决定是否执行后一个命令,前一个成功执行就会执行后面这个命令,这样可以减少手动操作,当然也可以一次执行命令。

6)启动Nginx:

进入Nginx的目录的sbin下

cd /usr/local/nginx/sbin/
./nginx

执行成功不会有任何信息返还,使用ps命令查看

ps aux | grep nginx

 7)停止Nginx:

1.立即停止服务:

./nginx -s stop

 注意:这种停止方法不管当前工作进程是否在处理工作,立即停止工作,使用这种需注意。

 2.从容停止服务:

./nginx -s quit

这种停止方法会在进程处理完后再停止服务

3.使用kill命令关闭进程

 通过ps命令获取Nginx进程的PID,使用kill命令关闭进程或使用killall命令

kill nginx PID
killall nginx

注意:nginx启动后会自动监听80端口,如80端口被占用则会启动失败。

 netstat -tlnp查看端口占用

 Nginx 的主进程正在监听 TCP 协议 80 端口 ,说明 Nginx目前已经启动。另外,netstat 命令的四个选项:t、l、n、p分别表示查看tcp协议、查看监听服务、不解析名称以及显示进程名和 PID。

8)添加服务脚本:

由于每次启动nginx都需要到安装目录下启动,十分麻烦所以添加服务脚本可以大大的减少这种操作。

在CentOS 7中,服务的systemctl脚本被存放在/usr/lib/systemd/目录下。这个目录下有system和user两个子目录,分别存放系统服务和用户服务的相关脚本。

如果你想要开机就能运行的程序,即:不需要登录即可运行的服务。最好将其作为系统服务来管理。对于系统服务,你可以将相关的脚本文件放置在/usr/lib/systemd/system目录下。

每一个服务脚本一般包含三个部分:[Unit]、[Service]和[Install]。这些部分分别定义了服务的单位(Unit)、服务本身的配置(Service)以及服务的安装相关设置(Install)。

  • [Unit]部分包含关于服务的元数据,例如服务的描述、依赖关系等信息。
  • [Service]部分定义了服务的具体配置,包括服务的运行命令、工作目录、环境变量等。
  • [Install]部分定义了服务的安装设置,例如服务的启动级别、所属用户等。

脚本如下:

[root@localhost sbin]# cat /usr/lib/systemd/system/nginx.service
[Unit]
description=nginx - high performance web server
Documentation=http://nginx.org/en/docs/
After=network.target remote-fs.target nss-lookup.target[Service]
Type=forking
ExecStartPre=/usr/local/nginx/sbin/nginx -t -c /usr/local/nginx/conf/nginx.conf
ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true[Install]
WantedBy=multi-user.target

 注意:添加完毕后需运行"systemctl daemon-reload "

"systemctl daemon-reload "是用于重新加载systemd的配置文件和单位文件的命令

[Unit]:服务的说明
Description:描述服务
After:描述服务类别
 
[Service]服务运行参数的设置
Type=forking是后台运行的形式
ExecStart为服务的具体运行命令
ExecReload为重启命令
ExecStop为停止命令
PrivateTmp=True表示给服务分配独立的临时空间
注意:启动、重启、停止命令全部要求使用绝对路径
 
[Install]服务安装的相关设置,可设置为多用户

报错:

[root@localhost sbin]# ./nginx
nginx: [alert] could not open error log file: open() "/usr/local/nginx/logs/error.log" failed (2: No such file or directory)
2023/08/15 19:23:23 [emerg] 22354#0: open() "/usr/local/nginx/logs/access.log" failed (2: No such file or directory) 

 原因分析:Nginx目录下无logs文件

解决办法:创建logs文件

#创建logs目录
mkdir logs
#赋予权限
chmod 700 logs/

验证:

/usr/local/nginx/sbin/nginx -t

正常情况会输出一下信息: 

nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful

二.nginx的负载均衡搭建

 1)准备服务器

准备三台虚拟机,一台安装了nginx,两台web服务器

2)修改配置文件

引入文件

 编写配置文件

more mytest.conf upstream backend {server 192.168.136.135:80 weight=1;server 192.168.136.134:80 weight=1;
}server {listen 80;server_name www.myname.com;location / {proxy_pass http://backend;}}
[root@localhost conf]# 

3)重启nginx服务后配置本地解析文件即可

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

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

相关文章

Vue-8.集成(.editorconfig、.eslintrc.js、.prettierrc)

介绍 同时使用 .editorconfig、.prettierrc 和 .eslintrc.js 是很常见的做法,因为它们可以在不同层面上帮助确保代码的格式一致性和质量。这种组合可以在开发过程中提供全面的代码维护和质量保证。然而,这也可能增加一些复杂性,需要谨慎配置…

Coreutils工具包,Windows下使用Linux命令

之前总结过两篇有关【如何在Windows系统下使用Linux的常用命令】的文章: GnuWin32,Windows下使用Linux命令 UnxUtils工具包,Windows下使用Linux命令 今天再推荐一个类似的工具包Coreutils 一、简介 GNU core utilities是GNU操作系统基本…

(学习笔记-进程管理)怎么避免死锁?

死锁的概念 在多线程编程中,我们为了防止多线程竞争共享资源而导致数据错乱,都会在操作共享资源之前加上互斥锁,只有成功获得到锁的线程,才能操作共享资源,获取不到锁的线程就只能等待,直到锁被释放。 那…

创建一个简单的HTML Viewer应用程序

使用wxPython和内嵌浏览器来创建一个简单的HTML Viewer应用程序。 在本篇文章中,我们将使用Python和wxPython模块来创建一个简单的HTML Viewer应用程序。这个应用程序可以让用户输入HTML内容,并在内嵌浏览器中显示该内容的效果。 准备工作 在开始之前…

QT:定时器事件

定时器第一种办法: 1.利用事件timerEvent,在帮助文档中找到该字段:[override virtual protected] void QTimer::timerEvent(QTimerEvent *e) 重写该虚函数 //重写定时器事件void timerEvent(QTimerEvent *e);2.启动定时器startTimer(1000); …

区间预测 | MATLAB实现QRGRU门控循环单元分位数回归时间序列区间预测

区间预测 | MATLAB实现QRGRU门控循环单元分位数回归时间序列区间预测 目录 区间预测 | MATLAB实现QRGRU门控循环单元分位数回归时间序列区间预测效果一览基本介绍模型描述程序设计参考资料 效果一览 基本介绍 MATLAB实现QRGRU门控循环单元分位数回归时间序列区间预测。基于分位…

[GitOps]微服务版本控制:使用ArgoCD 部署Grafana Loki

背景介绍 请回答:你们是如何保证线上部署的服务,从服务版本到参数配置,都是和测试通过的版本是一致的呢? 本文将介绍GitOps的基本原理以及ArgoCD的使用:ArgoCD部署Grafana Loki 到k8s集群。 本文项目地址&#xff1…

Nginx 解决api跨域问题

环境: nginx 1.22.1 宝塔8.0 php lavarel 在nginx里加入下面的设置 #这里填*就是任何域名都允许跨域add_header Access-Control-Allow-Origin "*";#CORS请求默认不发送Cookie和HTTP认证信息。但是如果要把Cookie发到服务器,要服务器同意&#xff0c…

538页21万字数字政府智慧政务大数据云平台项目建设方案WORD

导读:原文《538页21万字数字政府智慧政务大数据云平台项目建设方案WORD》(获取来源见文尾),本文精选其中精华及架构部分,逻辑清晰、内容完整,为快速形成售前方案提供参考。 根据业务的不同属性&#xff0c…

深入解析 Axios Blob 的使用方法及技巧

在 Web 开发中,处理文件传输是一个常见的需求。Blob(二进制对象)是一种表示二进制数据的方式,常用于处理文件和多媒体数据。本文将介绍如何使用 Axios 和 Blob 来处理文件传输。 Axios Blob 概念 在开始之前,让我们先…

IC流程中 DFT 学习笔记(1)

引言 DFT是ASIC芯片设计流程中不可或缺的环节。其主要目的是在芯片前端设计验证完成后插入一些诸如寄存器链等可供测试的逻辑,算是IC后端设计的范畴。主要是在ASIC芯片流片完成后,通过这些已插入的逻辑,检测流片得到的芯片的制造质量。检测一…

Go framework-Beego

一、Beego Beego用于在Go中快速开发企业应用程序,包括RESTful API、web应用程序和后端服务。 Beego 源码地址 Beego 官方站点 Beego 官方说明 Beego的特性 RESTful支持MVC架构模块化自动API文档注释路由命名空间开发工具集合Full stack for Web & API Bee…

Java并发编程(四)线程同步 中 [AQS/Lock]

概述 Java中可以通过加锁,来保证多个线程访问某一个公共资源时,资源的访问安全性。Java提出了两种方式来加锁 第一种是我们上文提到的通过关键字synchronized加锁,synchronized底层托管给JVM执行的,并且在java 1.6 以后做了很多…

一百五十二、Kettle——Kettle9.3.0本地连接Hive3.1.2(踩坑,亲测有效,附截图)

一、目的 由于先前使用的kettle8.2版本在Linux上安装后&#xff0c;创建共享资源库点击connect时页面为空&#xff0c;后来采用如下方法&#xff0c;在/opt/install/data-integration/ui/menubar.xul文件里添加如下代码 <menuitem id"file-openZiyuanku" label&…

音视频学习-音视频基础

文章目录 一、 音视频录制原理二、音视频播放原理三、图像基础概念1.像素2.分辨率3.位深4.帧率5.码率6.Stride跨距 四、RGB、YUV1.RGB2.YUV1. 4:4:4格式2. 4:2:2格式3. 4:2:0格式4. 4:2:0数据格式对比 3.RGB和YUV的转换4.YUV Stride对齐问题 五、视频的主要概念1.基本概念2.I P…

数据结构:栈和队列(超详细)

目录 ​编辑 栈&#xff1a; 栈的概念及结构&#xff1a; 栈的实现&#xff1a; 队列&#xff1a; 队列的概念及结构&#xff1a; 队列的实现&#xff1a; 扩展知识&#xff1a; 以上就是个人学习线性表的个人见解和学习的解析&#xff0c;欢迎各位大佬在评论区探讨&#…

基于YOLOv8模型和Caltech数据集的行人检测系统(PyTorch+Pyside6+YOLOv8模型)

摘要 基于YOLOv8模型和Caltech数据集的行人检测系统可用于日常生活中检测与定位行人&#xff0c;利用深度学习算法可实现图片、视频、摄像头等方式的行人目标检测&#xff0c;另外本系统还支持图片、视频等格式的结果可视化与结果导出。本系统采用YOLOv8目标检测算法训练数据集…

频繁full gc 调参

Error message from spark is:java.lang.Exception: application_1678793738534_17900289 Driver Disassociated [akka.tcp://sparkDriverClient11.71.243.117:37931] <- [akka.tcp://sparkYarnSQLAM9.10.130.149:38513] disassociated! 日志里频繁full gc &#xff0c;可以…

Python Opencv实践 - 图像金字塔

import cv2 as cv import numpy as np import matplotlib.pyplot as pltimg cv.imread("../SampleImages/pomeranian.png", cv.IMREAD_COLOR) print(img.shape)#图像上采样 #cv.pyrUp(src, dstNone, dstsizeNone, borderTypeNone) #参考资料&#xff1a;https://blo…

AD域控制器将辅域控制器角色提升为主域控制器

背景 域控服务器迁移&#xff0c;已将新机器添加为该域的辅域控制器。 主域控制器&#xff1a;test-dc-01 辅域控制器&#xff1a;test-dc-02 需求将主辅域的角色进行互换&#xff0c;test-dc-01更换为辅域&#xff0c;test-dc-02更换为主域。 操作步骤 方法1 命令行修改AD域…