分布式架构搭建博客网站
目录
- 运行环境
- 基础配置
- 需求
- 准备工作
- 配置静态ip
- 修改主机名及host映射
- 开启防火墙
- 时间同步
- 配置免密ssh登录
- 环境搭建
- Server-Web端安装LNMP环境软件
- Server-NFS-DNS端上传博客软件
- Server-NFS-DNS端设置NFS共享
- Server-Web设置
- 挂载远程共享目录
- nginx设置
- 在数据库中创建数据库和用户
- 重启数据库和http
- 测试
- 在Server-NFS-DNS端配置DNS
- 实现(截图)
运行环境
| 主机 | 主机名 | 系统 | 服务 |
|---|---|---|---|
| 192.168.160.137 | Server-Web | Linux | Web |
| 192.168.160.138 | Server-NFS-DNS | Linux | NFS/DNS |
基础配置
- 配置主机名
- 开启防火墙并配置
- 部分开启Selinux并配置
- 服务器之间使用相同ntp.aliyun.com进行时间同步
- 服务器之间实现SSH免密登录
需求
- Server-NFS-DNS主机配置NFS服务器,将博客网站资源共享给Server-Web主机,Server-NFS-DNS主机配置DNS
- Server-Web主机配置web服务,通过域名www.openlab.com可以访问到自建的博客网站
准备工作
恢复快照
配置静态ip
# 在192.168.160.137配置
[root@server ~]# nmcli c modify ens32 ipv4.method manual ipv4.addresses '192.168.160.137/24' ipv4.gateway '192.168.160.2' ipv4.dns '114.114.114.114'
[root@server ~]# nmcli c reload
[root@server ~]# nmcli c up ens32 # 注意在RHEL9系统中是ens160#在192.168.160.138配置
[root@node ~]# nmcli c modify ens32 ipv4.method manual ipv4.addresses '192.168.160.138/24' ipv4.gateway '192.168.160.2' ipv4.dns '114.114.114.114'
[root@node ~]# nmcli c reload
[root@node ~]# nmcli c up ens32
修改主机名及host映射
# 在192.168.160.137配置
[root@server ~]# hostnamectl set-hostname Server-Web
[root@server ~]# vim /etc/hosts
127.0.0.1 Server-Web
192.168.160.137 Server-Web
192.168.160.138 Server-NFS-DNS
[root@server ~]# reboot# 在192.168.160.138配置
[root@node ~]# hostnamectl set-hostname Server-NFS-DNS
[root@node ~]# vim /etc/hosts
127.0.0.1 Server-NFS-DNS
192.168.160.137 Server-Web
192.168.160.138 Server-NFS-DNS
[root@node ~]# reboot
开启防火墙
# 在两台机子上操作
systemctl start firewalld
systemctl enable firewalld
时间同步
# 在两台机子上操作
vim /etc/chrony.conf
server ntp.aliyun.com iburst # 第三行修改
systemctl restart chronyd #重启时间服务器
chronyc sources -v # 查询是否同步成功
timedatectl status # 同上
配置免密ssh登录
# 在192.168.160.137(Server-Web)配置
[root@Server-Web ~]# ssh-keygen -t rsa #一路回车
[root@Server-Web ~]# ssh-copy-id 192.168.160.138 # 会有输入138主机密码的步骤
[root@Server-Web ~]# ssh 192.168.160.138
[root@Server-NFS-DNS ~]# exit# 在192.168.160.138(Server-NFS-DNS)配置
[root@Server-NFS-DNS ~]# ssh-keygen -t rsa
[root@Server-NFS-DNS ~]# ssh-copy-id 192.168.160.137
[root@Server-NFS-DNS ~]# ssh 192.168.160.137
[root@Server-Web ~]# exit
环境搭建
Server-Web端安装LNMP环境软件
[root@Server-Web ~]# yum install nginx mariadb-server php* -y
Server-NFS-DNS端上传博客软件
-
网址:https://cn.wordpress.org/,下载后为zip压缩文件
-
将wordpress上传到192.168.160.138(Server-NFS-DNS)端的/目录下
[root@Server-NFS-DNS ~]# cd /
[root@Server-NFS-DNS /]# ls
afs etc lost+found proc srv var
bin home media root sys wordpress-6.0.1-zh_CN.zip
boot lib mnt run tmp
dev lib64 opt sbin usr
[root@Server-NFS-DNS /]# unzip wordpress-6.0.1-zh_CN.zip
[root@Server-NFS-DNS /]# cd wordpress
[root@Server-NFS-DNS wordpress]# ls
Server-NFS-DNS端设置NFS共享
- 目的:将Server-NFS-DNS端的/wordpress目录共享到192.168.160.137(Server-Web)
[root@Server-NFS-DNS wordpress]# cd
[root@Server-NFS-DNS ~]# yum install rpcbind -y
[root@Server-NFS-DNS ~]# yum install nfs-utils -y[root@Server-NFS-DNS ~]# vim /etc/exports #编辑配置文件
/wordpress 192.168.160.137(rw,sync,all_squash) #添加[root@Server-NFS-DNS ~]# chmod -Rf 777 /wordpress
[root@Server-NFS-DNS ~]# cd /
[root@Server-NFS-DNS /]# ll #可以查看一下是否777[root@Server-NFS-DNS ~]# firewall-cmd --permanent --zone public --add-service=mountd
[root@Server-NFS-DNS ~]# firewall-cmd --permanent --zone public --add-service=rpc-bind
[root@Server-NFS-DNS ~]# firewall-cmd --permanent --zone public --add-service=nfs
[root@Server-NFS-DNS ~]# firewall-cmd --reload#启动服务
[root@Server-NFS-DNS ~]# systemctl start rpcbind
[root@Server-NFS-DNS ~]# systemctl start nfs-server
Server-Web设置
挂载远程共享目录
[root@Server-Web ~]# yum install rpcbind -y[root@Server-Web ~]# yum install nfs-utils -y[root@Server-Web ~]# showmount -e 192.168.160.138 #查询[root@Server-Web ~]# mount -t nfs 192.168.160.138:/wordpress /wp # 挂载[root@Server-Web ~]# cd /wp[root@Server-Web wp]# ls # 查看目录文件
nginx设置
[root@Server-Web ~]# firewall-cmd --permanent --zone public --add-service=http
[root@Server-Web ~]# firewall-cmd --reload
[root@Server-Web ~]# vim /etc/nginx/nginx.conf # 编辑nginx配置文件root /wp;
在数据库中创建数据库和用户
[root@Server-Web ~]# systemctl start mariadb[root@Server-Web ~]# mysqlMariaDB [(none)]> create database wordpress; #创建数据库,尾部有分号MariaDB [(none)]> create user 'test1'@'localhost' identified by '123456';
# 第一个''为数据库账号,@后面的''内容为数据库可以登录的地址,1ocalhost意为只能本机登录。用户和密码与wordpress配置文件一样MariaDB [(none)]> grant all on wordpress.* to 'test1'@'localhost';MariaDB [(none)]> exit
重启数据库和http
[root@Server-Web ~]# systemctl restart mariadb
[root@Server-Web ~]# systemctl restart nginx
测试
- 在Windows端输入192.168.160.137继续完成wordpress配置(邮箱必须设置)



在Server-NFS-DNS端配置DNS
- 原则:
www.openlab.com正向解析为192.168.160.137 - 192.168.160.138端(Server-NFS-DNS)
- 安装
[root@Server-NFS-DNS ~]# yum install bind -y[root@Server-NFS-DNS ~]# firewall-cmd --permanent --zone public --add-service=dns #防火墙放行[root@Server-NFS-DNS ~]# firewall-cmd --reload[root@Server-NFS-DNS ~]# systemctl start named
- 编辑主配置文件
[root@Server-NFS-DNS ~]# vim /etc/named.conf
# 第11 19行修改为any任意主机listen-on port 53 { any; };allow-query { any; };
- 修改区域配置文件,清空添加:
[root@Server-NFS-DNS ~]# vim /etc/named.rfc1912.zones
zone "openlab.com" IN {type master;file "openlab.com.zone";allow-update { none; };
};
- 新建区域数据文件并配置解析
[root@Server-NFS-DNS ~]# cd /var/named
[root@Server-NFS-DNS named]# cp -a named.localhost openlab.com.zone
[root@Server-NFS-DNS named]# vim openlab.com.zone
$TTL 1D
@ IN SOA openlab.com. admin.oplab.com. (0 ; serial1D ; refresh1H ; retry1W ; expire3H ) ; minimumNS ns.openlab.com.
ns IN A 192.168.160.137
www IN A 192.168.160.137
bbs IN A 192.168.160.137
- 启动服务
[root@Server-NFS-DNS named]# systemctl restart named
- 测试:
192.168.160.137端(Server-Web) - 将Server-Web端的DNS改为192.168.48.131后并输入www.openlab.com域名访问
- 第一种
[root@Server-Web ~]# nmcli con modify ens32 ipv4.dns '192.168.160.138' [root@Server-Web ~]# nmcli con up ens32[root@Server-Web ~]# cat /etc/resolv.conf
nameserver 192.168.160.138 # 查看确保其中有这个[root@Server-Web ~]# nslookup www.openlab.com # 测试
Server: 192.168.160.138
Address: 192.168.160.138#53Name: www.openlab.com
Address: 192.168.160.137
- 第二种
#openeuler网络ens32配置地址
[root@Server-Web ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens32 # 将DNS改为192.168.160.138(Server-NFS-DNS)
[root@Server-Web ~]# nslookup www.openlab.com # 测试
Server: 192.168.160.138
Address: 192.168.160.138#53Name: www.openlab.com
Address: 192.168.160.137
实现(截图)
-
两边都先配置静态IP


-
192.168.160.137端


-
192.168.160.138端(两边做完都要reboot)


-
防火墙


-
时间同步
- vim /etc/chrony.conf(两端都做)

-
192.168.160.137端

-
192.168.160.138端

-
相互免密登录
-
192.168.160.137



-
192.168.160.138



-
环境搭建
- 在Server-Web端

- 上传wordpress到Server-NFS-DNS端

-
Server-NFS-DNS端设置NFS共享


-
挂载




-
nginx设置


-
数据库中创建数据库和用户

-
重启数据库和nginx

-
DNS服务
-
192.168.160.138端







-
192.168.160.137端

-
相关文章:
分布式架构搭建博客网站
目录 运行环境基础配置需求准备工作配置静态ip修改主机名及host映射开启防火墙时间同步配置免密ssh登录 环境搭建Server-Web端安装LNMP环境软件Server-NFS-DNS端上传博客软件Server-NFS-DNS端设置NFS共享Server-Web设置挂载远程共享目录nginx设置在数据库中创建数据库和用户重启…...
python-opencv给图片或视频去水印
文章目录 引言inpaint函数的使用方法鼠标事件回调函数cv2.setMouseCallback介绍去水印步骤实现代码 引言 本文主要基于cv2.inpaint函数实现图片的水印去除。 inpaint函数基于图像修复算法,通过对缺陷区域周围像素的分析和插值,生成合适的像素值来填充缺…...
免费送源码:Java+ssm+Springboot Springboot手办定制销售系统 计算机毕业设计原创定制
Springboot手办定制销售系统 摘 要 随着人们生活水平的提高和互联网的发展,人们消费思想和消费方式的逐渐改变,使得消费者开始追求自身品味和个性。手办定制就是在这种条件下应运而生。手办定制是基于客户需求来定制产品,满足客户对其功能、结…...
卡夫卡的使用
关于消息队列的使用 一、消息队列概述 消息队列中间件是分布式系统中重要的组件,主要解决应用解耦,异步消息,流量削锋等问题,实现高性能,高可用,可伸缩和最终一致性架构。目前使用较多的消息队列有ActiveM…...
mac|maven项目在idea中连接redis
安装maven brew install maven idea-setting导入redis插件 idea新建maven项目 构建系统选择maven 项目右侧数据库图标导入redis 新建一个数据库,名称必须为数字,测试一下是否可以连接,连接成功后选择确定 pom.xml导入redis <depende…...
Python基础学习------第一天
print("hello world") 1.括号和引号,必须使用的是英文 被双引号包围起来的称为字符串。 python注释:单行注释:1.井号# 2.多行注释 :""" """ print输出多个内容是中间用逗号隔开就好…...
MySQL的SQL语句之触发器和存储过程的应用
触发器 Trigger 一.触发器 作用:当检测到某种数据表发生数据变化时,自动执行操作,保证数据的完整性。 1.创建一个触发器 如上图所示,查看这个create的帮助信息的时候,这个create trigger就是创建触发器的意思。 如…...
【MD5】密码加密之加盐算法
哈喽,哈喽,大家好~ 我是你们的老朋友:保护小周ღ 本期主要是给大家分析一下, 密码的如果加密存储的, 学习加盐算法的思想, 通过一个简单的案例, 即可快速学习. 一起来看看叭~ 适用于编程初学者,感兴趣的朋友们可以订阅&…...
服务器虚拟化
前言 服务器虚拟化是一种技术,它通过将一台物理服务器的软件环境分割成多个独立分区,使每个分区都能模拟出一台完整的虚拟服务器。这种技术利用虚拟化技术充分发挥服务器的硬件性能,提高运营效率,节约能源并降低经济成本。 通过…...
贪心算法理论基础和习题【算法学习day.17】
前言 ###我做这类文档一个重要的目的还是给正在学习的大家提供方向(例如想要掌握基础用法,该刷哪些题?)我的解析也不会做的非常详细,只会提供思路和一些关键点,力扣上的大佬们的题解质量是非常非常高滴&am…...
爬虫ip技术未来发展趋势
各位朋友,大家好!有伙伴问爬虫技术未来会有更好的发展么,那今天小蝌蚪来跟大家聊聊爬虫技术未来的发展趋势分享一下行业咨询。 大家在日常工作和生活中,都希望事情能更省心、高效吧?未来的爬虫技术就朝着这个方向发展…...
推荐一款功能强大的文字处理工具:Atlantis Word Processor
Atlantis word proCEssor是一款功能强大的文字处理工具。该软件可以让用户放心的去设计文档,并且软件的界面能够按用户的意愿去自定义,比如工具栏、字体选择、排版、打印栏等等,当然还有更多的功能,比如你还可以吧软件界面中的任何…...
语言≠思维,大模型学不了推理:一篇Nature让AI社区炸锅了
转自:机器之心 大语言模型(LLM)为什么空间智能不足,GPT-4 为什么用语言以外的数据训练,就能变得更聪明?现在这些问题有 「标准答案」了。 近日,一篇麻省理工学院(MIT)等…...
Ubuntu 安装 npm
1. 升级apt sudo apt-get update 2. 安装nodejs sudo apt install nodejs 3. 安装npm sudo apt-get install npm 4. 查看版本 node -v npm -v 完成安装!...
Go:package
文章目录 标准库概述regexp包锁和sync包自定义包和可见性基本格式导入外部安装包包的初始化 自定义包使用godoc自定义包的目录结构 标准库概述 在之前的部分已经用了很多和标准库有关的内容,比如有fmt,os这种功能 unsafe: 包含了一些打破 Go 语言“类型…...
大数据之微服务注册、发现与熔断方案
大数据微服务注册、发现与熔断方案 介绍实现框架利用Spring Cloud实现微服务注册,发现,熔断实例? 一,介绍 大数据微服务注册、发现与熔断是微服务架构中的关键概念,它们各自在微服务架构中扮演着重要的角色。以下是对这…...
最新出炉!2024年邮件营销平台综合盘点
随着数字化营销的不断发展,邮件营销依然是企业与客户保持联系的重要渠道之一。2024年,邮件营销平台市场竞争激烈,各大平台纷纷推出新功能,以满足企业日益增长的需求。在众多平台中,Zoho Campaigns作为一款成熟的邮件营…...
Qgis 开发初级 《ToolBox》
Qgis 有个ToolBox 的,在Processing->ToolBox 菜单里面,界面如下。 理论上Qgis这里面的工具都是可以用脚本或者C 代码调用的。界面以Vector overlay 为例子简单介绍下使用方式。Vector overlay 的意思是矢量叠置分析,和arcgis软件类似的。点…...
Apache HttpClient 和 OkHttpClient 的使用
概述 Apache HttpClient Apache HttpClient是一个开源的HTTP客户端库,提供了丰富的HTTP通信功能。它支持HTTP/1.1和HTTPS协议,具有连接池管理、重试机制、代理设置等高级特性。HttpClient的API设计虽然相对繁琐,但提供了高度的可配置性和灵…...
文本列的性能优化?深入Oracle全文索引
一.什么是全文索引? 全文索引通过分析和处理文本,将文档中的单词分解为词条(tokens),然后存储词条与其所在文档的映射关系。这使得数据库可以快速定位包含特定关键字的记录,而不必对所有文本逐字匹配。 二…...
未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?
编辑:陈萍萍的公主一点人工一点智能 未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战,在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…...
C++初阶-list的底层
目录 1.std::list实现的所有代码 2.list的简单介绍 2.1实现list的类 2.2_list_iterator的实现 2.2.1_list_iterator实现的原因和好处 2.2.2_list_iterator实现 2.3_list_node的实现 2.3.1. 避免递归的模板依赖 2.3.2. 内存布局一致性 2.3.3. 类型安全的替代方案 2.3.…...
linux 错误码总结
1,错误码的概念与作用 在Linux系统中,错误码是系统调用或库函数在执行失败时返回的特定数值,用于指示具体的错误类型。这些错误码通过全局变量errno来存储和传递,errno由操作系统维护,保存最近一次发生的错误信息。值得注意的是,errno的值在每次系统调用或函数调用失败时…...
AI编程--插件对比分析:CodeRider、GitHub Copilot及其他
AI编程插件对比分析:CodeRider、GitHub Copilot及其他 随着人工智能技术的快速发展,AI编程插件已成为提升开发者生产力的重要工具。CodeRider和GitHub Copilot作为市场上的领先者,分别以其独特的特性和生态系统吸引了大量开发者。本文将从功…...
VM虚拟机网络配置(ubuntu24桥接模式):配置静态IP
编辑-虚拟网络编辑器-更改设置 选择桥接模式,然后找到相应的网卡(可以查看自己本机的网络连接) windows连接的网络点击查看属性 编辑虚拟机设置更改网络配置,选择刚才配置的桥接模式 静态ip设置: 我用的ubuntu24桌…...
嵌入式学习笔记DAY33(网络编程——TCP)
一、网络架构 C/S (client/server 客户端/服务器):由客户端和服务器端两个部分组成。客户端通常是用户使用的应用程序,负责提供用户界面和交互逻辑 ,接收用户输入,向服务器发送请求,并展示服务…...
Linux nano命令的基本使用
参考资料 GNU nanoを使いこなすnano基础 目录 一. 简介二. 文件打开2.1 普通方式打开文件2.2 只读方式打开文件 三. 文件查看3.1 打开文件时,显示行号3.2 翻页查看 四. 文件编辑4.1 Ctrl K 复制 和 Ctrl U 粘贴4.2 Alt/Esc U 撤回 五. 文件保存与退出5.1 Ctrl …...
HubSpot推出与ChatGPT的深度集成引发兴奋与担忧
上周三,HubSpot宣布已构建与ChatGPT的深度集成,这一消息在HubSpot用户和营销技术观察者中引发了极大的兴奋,但同时也存在一些关于数据安全的担忧。 许多网络声音声称,这对SaaS应用程序和人工智能而言是一场范式转变。 但向任何技…...
在 Spring Boot 项目里,MYSQL中json类型字段使用
前言: 因为程序特殊需求导致,需要mysql数据库存储json类型数据,因此记录一下使用流程 1.java实体中新增字段 private List<User> users 2.增加mybatis-plus注解 TableField(typeHandler FastjsonTypeHandler.class) private Lis…...
Modbus RTU与Modbus TCP详解指南
目录 1. Modbus协议基础 1.1 什么是Modbus? 1.2 Modbus协议历史 1.3 Modbus协议族 1.4 Modbus通信模型 🎭 主从架构 🔄 请求响应模式 2. Modbus RTU详解 2.1 RTU是什么? 2.2 RTU物理层 🔌 连接方式 ⚡ 通信参数 2.3 RTU数据帧格式 📦 帧结构详解 🔍…...
