搭建discuz论坛(lvs+nginx+http+mysql+nfs)8台服务器
搭建discuz论坛(lvs+nginx+http+mysql+nfs)
一、IP规划
| 服务名 | IP地址 | 服务 |
|---|---|---|
| LVS1 | 192.168.100.110 | keepalived+ipvsadm |
| LVS2 | 192.168.100.111 | keepalived+ipvsadm |
| nginx1 | 192.168.100.113 | nginx |
| nginx2 | 192.168.100.114 | nginx |
| nfs | 192.168.100.116 | nfs-util |
| web1 | 192.168.100.118 | httpd+php+nfs-util |
| web2 | 192.168.100.119 | httpd+php+nfs-util |
| mysql | 192.168.100.121 | mysql |
虚拟IP
| 服务名 | IP地址 | 服务 |
|---|---|---|
| 虚拟ip | 192.168.100.100 | nginx+keepalived |
二、配置
1.LVS1
关闭防护墙,selinux
# 关闭防火墙
systemctl stop firewalld# 关闭selinux
setenforce 0
设置ip:192.168.100.110
# 编辑网卡信息
vi /etc/sysconfig/network-scripts/ifcfg-ens33# 修改
BOOTPROTO=static
ONBOOT=yes# 写入
IPADDR=192.168.100.110
NETMASK=255.255.255.0
GATEWAY=192.168.100.2
下载keepalived和ipvsadm
yum -y install keepalived ipvsadm
备份默认配置文件
cp -p /etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf.bak
删除原有文件,创建新内容
# 删除原有文件
rm -rf /etc/keepalived/keepalived.conf # 创建新文件
vi /etc/keepalived/keepalived.conf
添加以下内容
! Configuration File for keepalived# 配置双机热备(主)
lobal_defs {router_id 1
}
vrrp_instance VI_1 {state MASTERinterface ens33virtual_router_id 1priority 120advert_int 1authentication {auth_type PASSauth_pass 123456}virtual_ipaddress {192.168.100.100}
}# 虚拟服务器ip及mysql地址
virtual_server 192.168.100.100 80 {delay_loop 15lb_algo rrlb_kind DRprotocol TCPreal_server 192.168.100.113 80 {weight 1TCP_CHECK {connect_port 80connect_timeout 3nb_get_retry 3delay_before_retry 4}}real_server 192.168.100.114 80 {weight 1TCP_CHECK {connect_port 80connect_timeout 3nb_get_retry 3delay_before_retry 4}}
}
启动keepalived
systemctl start keepalived
服务模块
# 加载系统内核的服务模块
modprobe ip_vs# 查看运行状态
lsmod | grep ip_vs
下载net网络工具
yum -y install net-tools
查看网卡信息
# 停用物理网卡
ifconfig ens33 down# 启动物理网卡(如在连接工具上,需到虚拟机上启动)
ifconfig ens33 up# 查看网卡信息(在ens33网卡下是否有ip:192.168.100.100)
ip a# 查看LVS-DR群集策略规则
ipvsadm -ln
LVS-DR群集策略
# 查看策略
ipvsadm -ln
2.LVS2
关闭防护墙,selinux
# 关闭防火墙
systemctl stop firewalld# 关闭selinux
setenforce 0
设置ip:192.168.100.111
# 编辑网卡信息
vi /etc/sysconfig/network-scripts/ifcfg-ens33# 修改
BOOTPROTO=static
ONBOOT=yes# 写入
IPADDR=192.168.100.111
NETMASK=255.255.255.0
GATEWAY=192.168.100.2
下载keepalived和ipvsadm
yum -y install keepalived ipvsadm
备份默认配置文件
cp -p /etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf.bak
删除原有文件,创建新内容
# 删除原有文件
rm -rf /etc/keepalived/keepalived.conf # 创建新文件
vi /etc/keepalived/keepalived.conf
添加以下内容
! Configuration File for keepalived# 配置双机热备(备)
lobal_defs {router_id 2
}
vrrp_instance VI_1 {state BACKUPinterface ens33virtual_router_id 1priority 100advert_int 1authentication {auth_type PASSauth_pass 123456}virtual_ipaddress {192.168.100.100}
}# 虚拟服务器ip及mysql地址
virtual_server 192.168.100.100 80 {delay_loop 15lb_algo rrlb_kind DRprotocol TCPreal_server 192.168.100.113 80 {weight 1TCP_CHECK {connect_port 80connect_timeout 3nb_get_retry 3delay_before_retry 4}}real_server 192.168.100.114 80 {weight 1TCP_CHECK {connect_port 80connect_timeout 3nb_get_retry 3delay_before_retry 4}}
}
启动keepalived
systemctl start keepalived
服务模块
# 加载系统内核的服务模块
modprobe ip_vs# 查看运行状态
lsmod | grep ip_vs
下载net网络工具
yum -y install net-tools
查看网卡信息
# 停用物理网卡
ifconfig ens33 down# 启动物理网卡(如在连接工具上,需到虚拟机上启动)
ifconfig ens33 up# 查看网卡信息(在ens33网卡下是否有ip:192.168.100.100)
ip a# 查看LVS-DR群集策略规则
ipvsadm -ln
LVS-DR群集策略
# 查看策略
ipvsadm -ln
3.nginx1
关闭防火墙,selinux
# 关闭防火墙
systemctl stop firewalld# 关闭selinux
setenforce 0
设置ip:192.168.100.113
# 编辑网卡信息
vi /etc/sysconfig/network-scripts/ifcfg-ens33# 修改
BOOTPROTO=static
ONBOOT=yes# 写入
IPADDR=192.168.100.113
NETMASK=255.255.255.0
GATEWAY=192.168.100.2
下载nginx,keepalived环境
# 配置nginx下载源
cat >> /etc/yum.repos.d/nginx.repo << EOF
[nginx-stable]
name="nginx stable repo"
baseurl=http://nginx.org/packages/centos/$releasever/$basearch
enabled=1
gpgcheck=0
EOF# 下载环境
yum -y install nginx keepalived
配置nginx
[root@localhost ~]# vi /etc/nginx/nginx.conf
# 在http {}内添加upstream apache{server 192.168.100.118:80;server 192.168.100.119:80;}[root@localhost ~]# vi /etc/nginx/conf.d/default.conf
# 在location / {}内添加proxy_pass http://apache;proxy_redirect default;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;# 重启
[root@localhost ~]# systemctl restart nginx
启动nginx
systemctl start nginx
虚拟网卡
# 添加虚拟网卡(回环地址)
cat >> /etc/sysconfig/network-scripts/ifcfg-lo:0 << EOF
DEVICE=lo:0
IPADDR=192.168.100.100
NETMASK=255.255.255.255
ONBOOT=yes
EOF# 重启网络
systemctl restart network# 查看是否有虚拟ip
ip a
写入路由指向
# 下载网络工具
yum -y install net-tools# 添加路由信息
route add -host 192.168.100.100 dev lo:0
调整/proc内核参数,关闭ARP响应
cat >> /etc/sysctl.conf << EOF
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.default.arp_ignore = 1
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
EOFsysctl -p
4.nginx2
关闭防火墙,selinux
# 关闭防火墙
systemctl stop firewalld# 关闭selinux
setenforce 0
设置ip:192.168.100.114
# 编辑网卡信息
vi /etc/sysconfig/network-scripts/ifcfg-ens33# 修改
BOOTPROTO=static
ONBOOT=yes# 写入
IPADDR=192.168.100.114
NETMASK=255.255.255.0
GATEWAY=192.168.100.2
下载nginx,keepalived环境
# 配置nginx下载源
cat >> /etc/yum.repos.d/nginx.repo << EOF
[nginx-stable]
name="nginx stable repo"
baseurl=http://nginx.org/packages/centos/$releasever/$basearch
enabled=1
gpgcheck=0
EOF# 下载环境
yum -y install nginx keepalived
配置nginx
[root@localhost ~]# vi /etc/nginx/nginx.conf
# 在http {}内添加upstream apache{server 192.168.100.118:80;server 192.168.100.119:80;}[root@localhost ~]# vi /etc/nginx/conf.d/default.conf
# 在location / {}内添加proxy_pass http://apache;proxy_redirect default;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;# 重启
[root@localhost ~]# systemctl restart nginx
启动nginx
systemctl start nginx
写入路由指向
# 下载网络工具
yum -y install net-tools# 添加路由信息
route add -host 192.168.100.100 dev lo:0
调整/proc内核参数,关闭ARP响应
cat >> /etc/sysctl.conf << EOF
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.default.arp_ignore = 1
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
EOFsysctl -p
5.nfs
关闭防火墙,selinux
# 关闭防火墙
systemctl stop firewalld# 关闭selinux
setenforce 0
设置ip:192.168.100.116
# 编辑网卡信息
vi /etc/sysconfig/network-scripts/ifcfg-ens33# 修改
BOOTPROTO=static
ONBOOT=yes# 写入
IPADDR=192.168.100.116
NETMASK=255.255.255.0
GATEWAY=192.168.100.2
创建nfs目录
# 创建共享目录
mkdir /luntan
下载nfs环境
yum -y install nfs-utils*
上传论坛包到/opt
# 下载unzip解压软件
yum -y install unzip# 解压论坛软件
unzip /opt/Discuz_X3.2_SC_UTF8.zip -d /luntan# 给予论坛文件权限
chmod -R 757 /luntan/upload/{config,data,uc_*}cp -rf /luntan/upload/* /luntan/
配置进程
# 启动nfs进程守护
systemctl start rpcbind
systemctl start nfs
共享
# 编辑nfs共享配置文件
vi /etc/exports# 写入以下内容
/luntan 192.168.100.118(rw,sync,no_root_squash) 192.168.100.119(rw,sync,no_root_squash)# 刷新nfs文件权限
exportfs -r
6.web1
关闭防火墙,selinux
# 关闭防火墙
systemctl stop firewalld# 关闭selinux
setenforce 0
设置ip:192.168.100.118
# 编辑网卡信息
vi /etc/sysconfig/network-scripts/ifcfg-ens33# 修改
BOOTPROTO=static
ONBOOT=yes# 写入
IPADDR=192.168.100.118
NETMASK=255.255.255.0
GATEWAY=192.168.100.2
安装环境
# 安装httpd,php,nfs环境
yum -y install httpd php php-mysql nfs-utils*
挂载并启动
# 将nfs共享目录挂载到apache下
mount 192.168.100.116:/luntan /var/www/html# 启动服务
systemctl start httpd
7.web2
关闭防火墙,selinux
# 关闭防火墙
systemctl stop firewalld# 关闭selinux
setenforce 0
设置ip:192.168.100.119
# 编辑网卡信息
vi /etc/sysconfig/network-scripts/ifcfg-ens33# 修改
BOOTPROTO=static
ONBOOT=yes# 写入
IPADDR=192.168.100.119
NETMASK=255.255.255.0
GATEWAY=192.168.100.2
安装环境
# 安装httpd,php,nfs环境
yum -y install httpd php php-mysql nfs-utils*
挂载并启动
# 将nfs共享目录挂载到apache下
mount 192.168.100.116:/luntan /var/www/html# 启动服务
systemctl start httpd
8.mysql
关闭防护墙,selinux
# 关闭防火墙
systemctl stop firewalld# 关闭selinux
setenforce 0
设置ip:192.168.100.121
# 编辑网卡信息
vi /etc/sysconfig/network-scripts/ifcfg-ens33# 修改
BOOTPROTO=static
ONBOOT=yes# 写入
IPADDR=192.168.100.121
NETMASK=255.255.255.0
GATEWAY=192.168.100.2
下载mariadb
yum -y install mariadb mariadb-server
修改完成重启服务
# 重启服务
systemctl restart mariadb# 配置mysql密码,123456
mysql_secure_installation
授权
# 进入mysql
mysql -uroot -p123456# 授权
grant all privileges on *.* to 'root'@'%' identified by '123456';# 刷新权限
flush privileges;
三、安装
进入浏览器,输入http://192.168.100.100/upload,开始安装
相关文章:
搭建discuz论坛(lvs+nginx+http+mysql+nfs)8台服务器
搭建discuz论坛(lvsnginxhttpmysqlnfs) 一、IP规划 服务名IP地址服务LVS1192.168.100.110keepalivedipvsadmLVS2192.168.100.111keepalivedipvsadmnginx1192.168.100.113nginxnginx2192.168.100.114nginxnfs192.168.100.116nfs-utilweb1192.168.100.11…...
就业平台小程序的设计
管理员账户功能包括:系统首页,个人中心,学生管理,企业管理,企业类型管理,留言板管理,系统管理 微信端账号功能包括:系统首页,招聘信息,简历,我的 …...
hid-ft260驱动学习笔记 5 - ft260_i2c_probe
目录 1. 保存ft260_device到私有数据 2. 初始化I2C设备分配属性 3. 添加I2C适配器 4. 初始化GPIO 5. ft260_i2c_algo 5.1 ft260_functionality 5.2 ft260_i2c_xfer 5.3 ft260_smbus_xfer 6. ft260_i2c_quirks 这个函数是i2c的接口probe函数。 1. 保存ft260_device到私…...
Android上如何使用perfetto分析systrace
Android上如何使用perfetto分析systrace Perfetto 是一个用于性能分析的工具,提供了对 Android 系统内部工作情况的详细视图。它可以用来替代传统的 systrace 工具,提供更加全面的性能分析功能。以下是如何使用 Perfetto 分析 Systrace 数据的详细指南&…...
React Hooks学习笔记
一、usestate的使用方法-初始化state函数 import React, { useState } from "react"; function App() {const [count, setCount] useState(0);return (<div><p>点击{count}次</p><button onClick{() > setCount(count 1)}>点击</bu…...
BGP第二日
上图为今日所用拓扑 ,其中R1和R4,R3和R5为EBGP邻居,R1和R3为IBGP邻居,AS200区域做OSPF动态路由 一.BGP建立邻居的六种状态 1.idle 空闲状态:建立邻居最初的状态 2.Connect 连接状态:在…...
rabbitmq集群创建admin用户之后,提示can access virtual hosts是No access状态
问题描述: 因业务需要使用的rabbitmq是3.7.8版本的,rabbitmq在3.3.0之后就允许使用guest账号的权限了,所以需要创建一个administrator标签的用户。 如下操作创建的用户: 创建完成之后就提示如下的报错: 注:…...
ARM功耗管理之多核处理器启动
安全之安全(security)博客目录导读 思考:SecureBoot?多核处理器启动流程?PSCI启动方式? 一般嵌入式系统使用的都是对称多处理器(Symmetric Multi-Processor, SMP)系统,包含了多个cpu, 这几个cp…...
java使用easypoi模版导出word详细步骤
文章目录 第一步、引入pom依赖第二步、新建导出工具类WordUtil第三步、创建模版word4.编写接口代码5.导出结果示例 第一步、引入pom依赖 <dependency><groupId>cn.afterturn</groupId><artifactId>easypoi-spring-boot-starter</artifactId><…...
Android 内部保持数据的方式
Android内部保持数据的方式主要有五种,每种方式都有其特定的用途和优点。以下是详细的介绍: SQLite数据库 定义:SQLite是一个轻量级的、跨平台的数据库,所有的信息都存储在单一文件内,占用内存小,并且支持…...
uniapp 表格,动态表头表格封装渲染
1.接口表格数据: {"headers": [{"label": "实例名","name": "v1","order": 1,"hide": false,"dateTypeValue": null},{"label": "所属科室","name&quo…...
beyond Compare连接 openWrt 和 VsCode
连接步骤总结 1. 新建会话 -> 文件夹比较 2.点击浏览文件夹 3.在弹出页面 配置 ftp 3.1)选中ftp 配置文件 3.2)选中ssh2 3.3)填写我们需要远端连接的主机信息 先点击连接并浏览 得到下方文件夹 弹出无效登录,说明需要密码 我们返回右键刚刚创建的新 …...
量化机器人能否识别市场机会?
量化机器人的设计和应用是为了通过高级算法和大数据分析,精确地识别和把握市场中的交易机会。这些机器人的能力不仅仅局限于执行预定的交易策略,更包括在复杂和快速变化的市场环境中识别利润机会。 首先,量化机器人能够处理和分析大量的市场…...
香橙派AIpro开发板评测:部署yolov5模型实现图像和视频中物体的识别
OrangePi AIpro 作为业界首款基于昇腾深度研发的AI开发板,自发布以来就引起了我的极大关注。其配备的8/20TOPS澎湃算力,堪称目前开发板市场中的顶尖性能,实在令人垂涎三尺。如此强大的板子,当然要亲自体验一番。今天非常荣幸地拿到…...
MongoDB教程(二):mongoDB引用shell
💝💝💝首先,欢迎各位来到我的博客,很高兴能够在这里和您见面!希望您在这里不仅可以有所收获,同时也能感受到一份轻松欢乐的氛围,祝你生活愉快! 文章目录 引言一、MongoD…...
A133 Android10 root修改
1.前言 客户应用需求root相关的权限,我们需要修改系统的权限才可以满足客户需求 2.修改方法 frameworks层:注释掉 diff --git a/frameworks/base/core/jni/com_android_internal_os_Zygote.cpp b/frameworks/base/core/jni/com_android_internal_os_…...
实验场:在几分钟内使用 Bedrock Anthropic Models 和 Elasticsearch 进行 RAG 实验
作者:来自 Elastic Joe McElroy, Aditya Tripathi 我们最近发布了 Elasticsearch Playground,这是一个新的低代码界面,开发人员可以通过 A/B 测试 LLM、调整提示(prompt)和分块数据来迭代和构建生产 RAG 应用程序。今天…...
代理详解之静态代理、动态代理、SpringAOP实现
1、代理介绍 代理是指一个对象A通过持有另一个对象B,可以具有B同样的行为的模式。为了对外开放协议,B往往实现了一个接口,A也会去实现接口。但是B是“真正”实现类,A则比较“虚”,他借用了B的方法去实现接口的方法。A…...
Laravel - laravel-websockets 开发详解
1.我laravel-websockets 的开发环境 Laravel 9.0Laravel WebSockets (最新版)Laravel Vite 2. 安装服务器端包 beyondcode/laravel-websockets 运行以下命令安装laravel-websockets composer require beyondcode/laravel-websockets 安装完后&#…...
vue3 学习笔记04 -- axios的使用及封装
vue3 学习笔记04 – axios的使用及封装 安装 Axios 和 TypeScript 类型定义 npm install axios npm install -D types/axios创建一个 Axios 实例并封装成一个可复用的模块,这样可以在整个应用中轻松地进行 API 请求管理。 在 src 目录下创建一个 services 文件夹&…...
不只是“生成一张图“:2026年6款真正改变设计工作流的AI界面工具深度测评
AI界面生成工具正在经历从"生成单张界面"到"生成完整产品体验"的代际跃迁。本文深度拆解 UXbot、Figma Make、Google Stitch、Flowstep、Visily AI 和 Moonchild 共6款2026年代表性工具——从设计稿生成到原生代码输出,覆盖完整的产品交付能力谱…...
InnoDB REDO LOG 详解:从原理到实现(基于 MySQL 8.0)
在现代关系型数据库系统中,事务的 持久性(Durability)是 ACID 特性的关键一环。为了在系统崩溃后仍能恢复数据一致性,InnoDB 引擎引入了 REDO LOG(重做日志)机制。 本文将深入剖析 REDO LOG 的作用、设计思…...
高可用外卖返利 CPS 平台:Java 后端异步回调处理机制深度解析
高可用外卖返利 CPS 平台:Java 后端异步回调处理机制深度解析 在构建外卖返利(CPS)系统时,异步回调(Callback)机制是连接用户授权、订单同步与佣金结算的神经中枢。美团、饿了么等平台的用户授权与订单状态…...
番茄小说下载器:开源电子书工具全解析
番茄小说下载器:开源电子书工具全解析 【免费下载链接】Tomato-Novel-Downloader 番茄小说下载器不精简版 项目地址: https://gitcode.com/gh_mirrors/to/Tomato-Novel-Downloader 番茄小说下载器是一款基于Rust语言开发的开源工具,专为解决在线小…...
今天使用trae进行代码开发的一点点小感触
今天用trae搭建环境,之前项目是一个spring boot项目,用的是一个共公的nacos。因为大家一起测试不太方便,所以想改造一下,心血来潮打算用trae来做这件事,整了一天在使用trae的过程也有一些感受,记录下来与大…...
从PyTorch/Onnx、AIMET量化到 QNN GPU 部署全流程实战:GPU 推理 300FPS+
YOLOv8s 从 AIMET 量化到 QNN GPU 部署全流程实战、GPU 推理 3ms/帧 1. 环境准备 组件 版本/路径 QNN SDK v2.45.0.260326 Android NDK r26d 目标设备 Qualcomm SM8750 目标架构 aarch64-android export QNN_TARGET_ARCH="aarch64-android" export NDK_ROOT=/home/mi…...
毕业设计作品精选【芳芯科技】酒驾检测座椅设计
实物效果图:实现功能:有人的情况下,单片机实时采集周围的酒精浓度,如果超出,蜂鸣器报警,LED闪烁。检测座位重量和检测人体发射的红外,两者都满足认为座位有人,否则无人。配有显示屏进…...
网站 SEO 软件如何提高网站流量
了解网站 SEO 软件的重要性 在当今互联网时代,网站流量的重要性不言而喻。无论你经营的是一个电子商务网站,博客,还是企业官方网站,高流量意味着更多的曝光和潜在客户。如何有效地提高网站流量呢?这里,我们…...
Phi-4-mini-reasoning效果展示:国际奥赛风格数学题全自动分步求解演示
Phi-4-mini-reasoning效果展示:国际奥赛风格数学题全自动分步求解演示 1. 模型介绍 Phi-4-mini-reasoning是微软推出的3.8B参数轻量级开源模型,专为数学推理、逻辑推导和多步解题等强逻辑任务设计。这款模型主打"小参数、强推理、长上下文、低延迟…...
手机怎么把deepseek对话导出
手机端 DeepSeek 对话怎么导出?原生功能缺口与三方工具全景对比摘要:根据 QuestMobile 2025年数据,DeepSeek 日活用户于2月1日突破3000万,成为史上最快达成该里程碑的应用。用户量激增后,“对话如何导出”"记录怎…...
