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服务后配置本地解析文件即可

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

常见期权策略类型有哪些?

这几天在做一个期权策略类型的整理分类,怎么解释期权策略,期权策略是现代金融市场中运用非常广泛、变化非常丰富、结构非常精妙的金融衍生产品;同时也是一种更为复杂也更为灵活的投资工具,下文介绍常见期权策略类型有哪些&#xf…

使用mysql、java开发的平台软件一键安装

前言 一般web项目会使用mysql数据库、java开发应用程序打包成jar包。 有些项目会需要导入初始化的行政区域信息。 流程图 说明 1. 脚本中提供变量去配置当前项目的区域 2. 安装包里需要包含全国所有的区域信息 3. 运行程序的时候就可以根据配置 ,调用接口&am…

在本地搭建WAMP服务器并通过端口实现局域网访问(无需公网IP)

文章目录 前言1.Wamp服务器搭建1.1 Wamp下载和安装1.2 Wamp网页测试 2. Cpolar内网穿透的安装和注册2.1 本地网页发布2.2 Cpolar云端设置2.3 Cpolar本地设置 3. 公网访问测试4. 结语 前言 软件技术的发展日新月异,各种能方便我们生活、工作和娱乐的新软件层出不穷&a…

一百六十、Kettle——Linux上安装的Kettle9.2.0连接Hive3.1.2

一、目标 Kettle9.2.0在Linux上安装好后,需要与Hive3.1.2数据库建立连接 之前已经在本地上用kettle9.2.0连上Hive3.1.2 二、各工具版本 (一)kettle9.2.0 kettle9.2.0安装包网盘链接 链接:https://pan.baidu.com/s/15Zq9w…

python爬虫数据解析xpath、jsonpath,bs4

数据的解析 解析数据的方式大概有三种 xpathJsonPathBeautifulSoup xpath 安装xpath插件 打开谷歌浏览器扩展程序,打开开发者模式,拖入插件,重启浏览器,ctrlshiftx,打开插件页面 安装lxml库 安装在python环境中的Scri…

NeuralNLP-NeuralClassifier的使用记录(一),训练预测自己的【英文文本多分类】

NeuralNLP-NeuralClassifier的使用记录,训练预测自己的英文文本多分类 NeuralNLP-NeuralClassifier是腾讯开发的一个多层多分类应用工具,支持的任务包括,文本分类中的二分类、多分类、多标签,以及层次多标签分类。支持的文本编码…

在 React 中获取数据的6种方法

一、前言 数据获取是任何 react 应用程序的核心方面。对于 React 开发人员来说,了解不同的数据获取方法以及哪些用例最适合他们很重要。 但首先,让我们了解 JavaScript Promises。 简而言之,promise 是一个 JavaScript 对象,它将…

【宝藏系列】嵌入式 C 语言代码优化技巧【超详细版】

【宝藏系列】嵌入式 C 语言代码优化技巧【超详细版】 文章目录 【宝藏系列】嵌入式 C 语言代码优化技巧【超详细版】前言整形数除法和取余数合并除法和取余数通过2的幂次进行除法和取余数取模的一种替代方法使用数组下标全局变量使用别名变量的生命周期分割变量类型局部变量指针…

开源,微信小程序 美食便签地图(FoodNoteMap)的设计与开发

目录 0 前言 1 美食便签地图简介 2 美食便签地图小程序端开发 2.1技术选型 2.2前端UI设计 2.3主页界面 2.4个人信息界面 2.5 添加美食界面 2.6美食便签界面 2.8 美食好友界面 2.9 美食圈子界面 2.10 子页面-店铺详情界面 2.11 后台数据缓存 2.12 订阅消息通知 2.1…

UI自动化测试常见的Exception

一. StaleElementReferenceException: - 原因:引用的元素已过期。原因是页面刷新了,此时当然找不到之前页面的元素。- 解决方案:不确定什么时候元素就会被刷新。页面刷新后重新获取元素的思路不变,这时可以使用python的…

【GitLab私有仓库】如何在Linux上用Gitlab搭建自己的私有库并配置cpolar内网穿透?

文章目录 前言1. 下载Gitlab2. 安装Gitlab3. 启动Gitlab4. 安装cpolar5. 创建隧道配置访问地址6. 固定GitLab访问地址6.1 保留二级子域名6.2 配置二级子域名 7. 测试访问二级子域名 前言 GitLab 是一个用于仓库管理系统的开源项目,使用Git作为代码管理工具&#xf…

【Nginx17】Nginx学习:目录索引、字符集与浏览器判断模块

Nginx学习:目录索引、字符集与浏览器判断模块 今天要学习的内容有几个还是大家比较常见的,所以学习起来也不会特别费劲。对于目录的默认页设置大家都不会陌生,字符集的设置也比较常见,而浏览器的判断这一块,可能有同学…

XenDesktop5.6如何连接数据库

Citrix在数据库的连接方式上一直不统一,但是也还是有迹可循的。 经过了好长时间的下载以后,今天终于有时间来测试一下最新版本的XenDesktop 5 SP1,由于结合了其他组件和环境的需要,所以,选择了独立部署数据库&#xf…

【学习笔记之opcua】使用Python获取opcua数据

Python与OPC UA的应用 示例代码 将代码放入spyder中运行后,出现下面这个错误 没有‘opcua’,那我们就下载pip install opcua 之后出现下面这个错误 问问题大不,安装语句写错了 正经安装语句是 !pip install opcua 读取opcua协议数据测试 …

若依框架给字典字段新增color值,并且实现下拉列表选项进行颜色设置

首先获取所要新增的字典,并且根据字典的value值选取对应的颜色参数 this.getDicts("risk_level").then(response > {const color {mild:#F1F4BD,moderate:#EEC920,severe:#FF6C0D,very_severe:#FF0000,no_harm:green};const res response.data.map(…

深兰科技熊猫汽车牵手首恒出行,人工智能技术提升商用车运营服务

8月8日,深兰科技集团旗下熊猫新能源汽车(上海)有限公司(下称熊猫新能源汽车)与河南首恒出行服务有限公司(下称首恒出行)在深兰科技总部举行签约仪式,首恒出行将向熊猫新能源汽车年定向采购10000台商用车,双方将在汽车后市场领域进行技术合作。…

如何在出差期间远程访问企业ERP系统?内网穿透解决您的难题!

文章目录 概述1.查看象过河服务端端口2.内网穿透3. 异地公网连接4. 固定公网地址4.1 保留一个固定TCP地址4.2 配置固定TCP地址 5. 使用固定地址连接 概述 ERP系统对于企业来说重要性不言而喻,不管是财务、生产、销售还是采购,都需要用到ERP系统来协助。…

动画制作选择Blender还是Maya

Blender和Maya是两种最广泛使用的 3D 建模和动画应用程序。许多经验丰富的用户表示,Blender 在雕刻工具方面远远领先于 Maya,并且在 3D 建模方面达到了相同的质量水平。对于刚接触动画行业的人来说,您可能会问“我应该使用 Blender 还是 Maya…

【操作系统】24王道考研笔记——第一章 计算机系统概述

第一章 计算机系统概述 一、操作系统基本概念 1.1 定义 1.2 特征 并发 (并行:指两个或多个事件在同一时刻同时发生) 共享 (并发性指计算机系统中同时存在中多个运行着的程序,共享性指系统中的资源可供内存中多个并…

网络连接(3次握手和4次挥手)

在进行3次握手和4次挥手传输数据时,都可能会出现丢包的情况,推荐看出现丢包问题的情况以及解决方法 一.为什么要进行3次握手? 在进行网络连接时,需要3次握手 3次握手的初心就是两方面: 1.投石问路,验证通…