私有云基础架构与运维(二)

二.私有云基础架构

【项目概述】

经过云计算基础知识及核心技术的学习后,希望进一步了解 IT 基础架构的演变过

程,通过学习传统架构、集群架构以及私有云基础架构的相关知识,认识企业从传统 IT

础架构到私有云基础架构转型的必要性。

【项目实施】

任务2.1 传统架构下应用的部署

本 任 务 的 目 标 为 在 传 统 架 构 下 搭 建 LAMP

Linux+Apache+MySQL/MariaDB+PHP,流行的开源软件组合)环境并部署

WordPress 服务,为了方便演示,本书在项目 1 安装好的单台 openEuler 22.09

统虚拟机中模拟。节点基础配置见表 2-1

虚拟机版本

主机名

IP地址

安装服务

openEuler 22.09

web01

192.168.213.133

Apache、PHP、MariaDB

2.1.1基础环境准备

(1)配置静态IP地址

修改网卡配置文件,示例修改内容如下。

[root@web01 ~]#  vi /etc/sysconfig/network-scripts/ifcfg-ens33

TYPE=Ethernet

PROXY_METHOD=none

BROWSER_ONLY=no

BOOTPROTO=static

DEFROUTE=yes

IPV4_FAILURE_FATAL=no

IPV6INIT=yes

IPV6_AUTOCONF=yes

IPV6_DEFROUTE=yes

IPV6_FAILURE_FATAL=no

IPV6_ADDR_GEN_MODE=stable-privacy

NAME=ens33

UUID=a8c477c5-fdf7-46a2-b8ae-306495bc96dc

DEVICE=ens33

ONBOOT=yes

IPADDR="192.168.213.133"

NETMASK="255.255.255.0"

GATEWAY="192.168.213.2"

DNS1="192.168.213.2"

(2)配置yum源

打开/etc/yum.repos.d/openEuler.repo文件

把下面这段放进去

[root@web01 ~]# vi /etc/yum.repos.d/openEuler.repo

[OS]

name=OS

baseurl=https://archives.openeuler.openatom.cn/openEuler-22.09/OS/$basearch/

enabled=1

gpgcheck=1

gpgkey=https://archives.openeuler.openatom.cn/openEuler-22.09/OS/$basearch/RPM-GPG-KEY-openEuler

[everything]

name=everything

baseurl=https://archives.openeuler.openatom.cn/openEuler-22.09/everything/$basearch/

enabled=1

gpgcheck=1

gpgkey=https://archives.openeuler.openatom.cn/openEuler-22.09/everything/$basearch/RPM-GPG-KEY-openEuler

[EPOL]

name=EPOL

baseurl=https://archives.openeuler.openatom.cn/openEuler-22.09/EPOL/main/$basearch/

enabled=1

gpgcheck=1

gpgkey=https://archives.openeuler.openatom.cn/openEuler-22.09/OS/$basearch/RPM-GPG-KEY-openEuler

[debuginfo]

name=debuginfo

baseurl=https://archives.openeuler.openatom.cn/openEuler-22.09/debuginfo/$basearch/

enabled=1

gpgcheck=1

gpgkey=https://archives.openeuler.openatom.cn/openEuler-22.09/debuginfo/$basearch/RPM-GPG-KEY-openEuler

[source]

name=source

baseurl=https://archives.openeuler.openatom.cn/openEuler-22.09/source/

enabled=1

gpgcheck=1

gpgkey=https://archives.openeuler.openatom.cn/openEuler-22.09/source/RPM-GPG-KEY-openEuler

[update]

name=update

baseurl=https://archives.openeuler.openatom.cn/openEuler-22.09/update/$basearch/

enabled=1

gpgcheck=1

gpgkey=https://archives.openeuler.openatom.cn/openEuler-22.09/OS/$basearch/RPM-GPG-KEY-openEuler

清理yum缓存,并出现生成即可

[root@controller ~]# yum clean all

[root@controller ~]# yum makecache

[root@controller ~]# yum update

(3)关闭防火墙

[root@web01 ~]# systemctl stop firewalld

(4)关闭 SELinux

[root@web01 ~]# setenforce 0

2.1.2安装Apache服务

具体操作如下。

[root@web01 ~]# dnf install -y httpd

[root@web01 ~]# systemctl enable --now httpd

[root@web01 ~]# apachectl -v

Server version: Apache/2.4.51 (Unix)

Server built:   Sep  7 2022 00:00:00

到浏览器输入虚拟机 IP 地址进行 Apache 访问测试,测试成功界面如图 2-5

所 示

2.1.3安装PHP服务

  1. 安装PHP及其模块

[root@web01 ~]# dnf -y install php php-common php-cli php-gd php-pdo php-devel php-xml php-mysqlnd

  1. 编写测试界面文件

[root@web01 ~]# vi /var/www/html/php-test.php

<?php

phpinfo();

?>

重启 Apache 服务,并到浏览器中访问 http://192.168.213.133/php-test.phpPHP

测试成功界面如图 2-6 所示。

[root@web01 ~]# systemctl restart httpd

2.1.4 安装并配置数据库服务

(1)安装软件包

[root@web01~]# dnf install mysql-config mariadb mariadb-server python3-PyMySQL

(2)新增配置文件/etc/my.cnf.d/openstack.cnf,内容如下

[root@web01 ~]# cat /etc/my.cnf.d/openstack.cnf

[mysqld]

bind-address = 192.168.213.133

default-storage-engine = innodb

innodb_file_per_table = on

max_connections = 4096

collation-server = utf8_general_ci

character-set-server = utf8

(3)启动服务器

[root@web01 ~]# systemctl start mariadb

(4)初始化数据库

[root@web01 ~]# mysql_secure_installation

NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB

      SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!

In order to log into MariaDB to secure it, we'll need the current

password for the root user. If you've just installed MariaDB, and

haven't set the root password yet, you should just press enter here.

Enter current password for root (enter for none):

OK, successfully used password, moving on...

Setting the root password or using the unix_socket ensures that nobody

can log into the MariaDB root user without the proper authorisation.

You already have your root account protected, so you can safely answer 'n'.

Switch to unix_socket authentication [Y/n] n

 ... skipping.

You already have your root account protected, so you can safely answer 'n'.

Change the root password? [Y/n] y

New password: 000000

Re-enter new password: 000000

Password updated successfully!

Reloading privilege tables..

 ... Success!

By default, a MariaDB installation has an anonymous user, allowing anyone

to log into MariaDB without having to have a user account created for

them.  This is intended only for testing, and to make the installation

go a bit smoother.  You should remove them before moving into a

production environment.

Remove anonymous users? [Y/n] y

 ... Success!

Normally, root should only be allowed to connect from 'localhost'.  This

ensures that someone cannot guess at the root password from the network.

Disallow root login remotely? [Y/n] y

 ... Success!

By default, MariaDB comes with a database named 'test' that anyone can

access.  This is also intended only for testing, and should be removed

before moving into a production environment.

Remove test database and access to it? [Y/n] y

 - Dropping test database...

 ... Success!

 - Removing privileges on test database...

 ... Success!

Reloading the privilege tables will ensure that all changes made so far

will take effect immediately.

Reload privilege tables now? [Y/n] y

 ... Success!

Cleaning up...

All done!  If you've completed all of the above steps, your MariaDB

installation should now be secure.

Thanks for using MariaDB!

(5)验证,根据设置的密码,检查是否能登录mariadb

[root@web01 ~]# mysql -uroot -p

(6)创建数据库

创建WordPress数据库并开启root用户远程访问的权限。

MariaDB [(none)]> create database wordpress;

Query OK, 1 row affected (0.000 sec)

#创建用户(如果不存在)

MariaDB [(none)]> CREATE USER 'root'@'%' IDENTIFIED BY 'secure_password123';

Query OK, 0 rows affected (0.001 sec)

#授予权限

MariaDB [(none)]> GRANT ALL PRIVILEGES ON wordpress.* TO 'root'@'%';

Query OK, 0 rows affected (0.001 sec)

#刷新权限

MariaDB [(none)]> FLUSH PRIVILEGES;

Query OK, 0 rows affected (0.000 sec)

#开启root用户远程访问的权限

MariaDB [(none)]> grant all privileges on wordpress.* to root@'%' identified by '000000';

Query OK, 0 rows affected (0.001 sec)

2.1.5 安装WordPress

将从官网下载的 wordpress-6.7-zh_CN.zip文件传输到/root 目录下,然后

将压缩包解压到 Apache 网页文件夹中。

#安装unzip(仅限Centos/RHEL)

[root@web01 ~]# yum install unzip -y

#解压到Apache目录

[root@web01 ~]# unzip /root/wordpress-6.7-zh_CN.zip -d /var/www/html/

#验证解压结果

确保解压后生成wordpress子目录,且路径为/var/www/html/wordpress;

[root@web01 ~]# ls -l /var/www/html/wordpress

# 应看到 WordPress 的核心文件(如 wp-config-sample.php, wp-admin 等)

对解压出来的 wordpress 文件夹赋予权限。

# 设置 http 根目录/var/www/的所有组为 apache

[root@web01 ~]# chown -R :apache /var/www//

# 设置 http 根目录/var/www 的所有者为 apache

[root@web01 ~]# chown -R apache /var/www/

# 设置 http 根目录/var/www 的组下的所有用户具有读写权限

[root@web01 ~]# chmod -R 775 /var/www/

#重启服务

[root@web01 html]#  systemctl restart httpd

在浏览器中访问 http://192.168.213.133/wordpress 界面查看,可以访问到如图 2-

7 所示的 WordPress 测试界面。

图 2-7 WordPress 测试界面

接下来,输入数据库相关配置信息即可完成数据库连接,如图 2-8 所示。

图 2-8 连接数据库

数据库主机填这个 localhost

图 2-9 WordPress 数据库连接成功

自定义站点相关的表单,例如登录用户名及密码等,如图 2-10 所示。

图 2-10 WordPress 站点配置

至此,WordPress 部署成功,如图 2-11 所示。

图 2-11 WordPress 部署成功界面

任务2.2 集群架构下应用部署

为了进一步说明集群架构相较于传统架构的优越性,本任务在任务 2.1

基础上,安装三台 openEuler22.09 系统的虚拟机,拓展集群架构,完成

WordPress 应用部署。每台虚拟机所安装的服务及节点基础配置情况见表 2-2

2-2 节点基础配置

虚拟机版本

主机名

IP地址

安装服务

openEuler 22.09

Web01

192.168.213.133

Apache、PHP

openEuler 22.09

database

192.168.213.134

MariaDB

openEuler 22.09

web02

192.168.213.135

Apache、PHP

2.2.1基础环境准备

参照任务 2.1.1 中基础环境准备的部分,完成三台虚拟机基础环境配置,此

处不再赘述。

2.2.2服务安装

  1. 安装Mariadb服务

在 “ database” 节 点 安 装 MariaDB 服 务 并 设 置 root 用 户 密 码 , 创 建

wordpress”数据库,具体操作参考任务 2.1 中的 2.1.4 小节配置数据库服务的

操作步骤,此处不再赘述。

2.安装WordPress

web01 节点、web02 节点安装 ApachePHP 服务,然后部署 WordPress

具体操作步骤参考任务 2.1 中的 2.1.5 小节中安装 WordPress 的内容,此处不再赘述。

3.部署 WordPress 时需要注意的一处是,在 web01 节点和 web02 节点数据库

连接信息的设置界面中,数据库主机均填写 database 节点的 IP,完整的填写示

例如图 2-12 所示。

图 2-12 配置数据库信息

上面数据库主机填写的是database节点的IP地址

3. web02 节点验证

在完成 web02 节点 WordPress 的部署后,使用浏览器进入 WordPress 界面, 同样进行数据库连接,会发现网页提示已安装过,如图 2-13 所示,这说明 web02 节点已经连接上了 database 节点的 MariaDB 数据库。

web02 节点验证成功,直接单击“登录”便可以正常访问站点,如图 2-14

所示。

即使把 web01 节点的 Apache 服务关闭,web02 节点的 WordPress 仍然正常

工作,如图 2-15 所示。

图 2-15 关闭 web01 节点后 web02 节点的测试界面

4. database 节点验证

database 节点,登录 MariaDB 数据库,查看数据库列表信息,如下所示。

[root@database ~]# mysql -uroot -p000000

MariaDB [(none)]> show databases;

+--------------------+

| Database           |

+--------------------+

| information_schema |

| mysql              |

| performance_schema |

| wordpress          |

+--------------------+

4 rows in set (0.000 sec)

进入“wordpress”数据库查看表单详情,结果如下所示,发现 web01

web02 的用户数据已经录入数据库中,说明在集群架构下部署 WordPress 应用

是有效的。

MariaDB [(none)]> use wordpress;

MariaDB [wordpress]> select * from wp_users;

+----+------------+------------------------------------+---------------+------------------+----------------------------------+---------------------+---------------------+-------------+--------------+

| ID | user_login | user_pass                          | user_nicename | user_email       | user_url                         | user_registered     | user_activation_key | user_status | display_name |

+----+------------+------------------------------------+---------------+------------------+----------------------------------+---------------------+---------------------+-------------+--------------+

|  1 | mys        | $P$BC4Kd7fziAPag6BZaevzXvuory4ICl/ | mys           | 445517363@qq.com | http://192.168.213.135/wordpress | 2025-02-28 07:34:04 |                     |           0 | mys          |

+----+------------+------------------------------------+---------------+------------------+----------------------------------+---------------------+---------------------+-------------+--------------+

1 row in set (0.000 sec)

喜欢的话给博主个一键三连呀,有问题可以一起交流学习呀,后续还有 

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

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

相关文章

Linux 系统不同分类的操作命令区别

Linux 系统有多种发行版,每种发行版都有其独特的操作命令和工具。以下是一些常见的分类及其操作命令的区别: 1. 基于 Red Hat 的发行版 (RHEL, CentOS, Fedora) 1.1 包管理 安装软件包: bash复制 sudo yum install <package> 更新软件包: bash复制 sudo yum update…

‌PLC数据类型和‌C#数据类型的数据类型映射表

数据类型映射表 ‌PLC数据类型‌C#数据类型读取方式‌补充说明BitboolDBX布尔值BytebyteDBB单字节无符号整数WordushortDBW16位无符号整数DWorduintDBD32位无符号整数Intshort16位有符号整数DIntint32位有符号整数RealfloatDBR单精度浮点数LRealdoubleDBL双精度浮点数Stringstr…

windows部署spleeter 版本2.4.0:分离音频的人声和背景音乐

windows部署spleeter 版本2.4.0&#xff1a;分离音频的人声和背景音乐 一、Spleeter 是什么&#xff1f; Spleeter 是由法国音乐流媒体公司 Deezer 开发并开源的一款基于深度学习的音频分离工具。它能够将音乐中的不同音轨&#xff08;如人声、鼓、贝斯、钢琴等&#xff09;分…

QTS单元测试框架

1.QTS单元测试框架介绍 目前QTS项目采用C/C语言,而CppUnit就是xUnit家族中的一员,它是一个专门面向C的单元测试框架。因此,QTS采用CppUnit测试框架是比较理想的选择。 CppUnit按照层次来管理测试,最底层的就是TestCase,当有了几个TestCase以后&#xff0c;可以将它们组织成Te…

dify + ollama + deepseek-r1+ stable-diffusion 构建绘画智能体

故事背景 stable-diffusion 集成进 dify 后&#xff0c;我们搭建一个小智能体&#xff0c;验证下文生图功能 业务流程 #mermaid-svg-6nSwwp69eMizP6bt {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-6nSwwp69eMiz…

分享几个论文校对相关的deepseek提示词

论文校对 1.检查这段文字是否有语法或风格错误&#xff1a;[在此处粘贴您的文本]。 2.审查我的[文件类型&#xff0c;例如&#xff0c;“论文”]中的这一段落是否有语法或风格错误&#xff1a;[在此处粘贴您的文本]。 3.请审查我关于[具体主题&#xff0c;例如&#xff0c;…

【极光 Orbit•STC8A-8H】02. STC8 单片机工程模板创建

【极光 Orbit•STC8A-8H】02. STC8 单片机工程模板创建 七律 单片机 小小芯片大乾坤&#xff0c;集成世界在其中。 初学虽感千重难&#xff0c;实践方知奥妙通。 今天的讲法和过去不同&#xff0c;直接来一个多文件模块化的工程模板创建&#xff0c;万事开头难&#xff0c;…

mac安装nvm=>node=>nrm

下载并安装 NVM 运行以下命令下载并安装 NVM&#xff1a; curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.4/install.sh | bash 配置环境变量 vim ~/.zshrc 按 i 将如下代码复制进去&#xff0c;controlc &#xff0c;再按 :wq完成编辑 export NVM_DIR…

K8S学习之基础十一:k8s中容器钩子

容器钩子 容器钩子分为post-start和pre-stop post-start&#xff1a;容器启动后执行的命令 pre-stop&#xff1a;容器关闭前执行的命令&#xff0c;可用于优雅关闭 # 分别定义两个钩子&#xff0c;启动pod后更新index.html&#xff0c;关闭pod前正常关闭服务 vi post-pre.…

K8s 1.27.1 实战系列(三)安装网络插件

Kubernetes 的网络插件常见的有 Flannel 和 Calico ,这是两种主流的 CNI(容器网络接口)解决方案,它们在设计理念、实现方式、性能特征及适用场景上有显著差异。以下是两者的综合对比分析: 一、Flannel 和 Calico 1. 技术基础与网络实现 Flannel 核心机制:基于 Overlay …

【五.LangChain技术与应用】【24.LangChain RAG文本向量化与存储:智能检索的核心技术】

凌晨三点,北京中关村的某栋办公楼依然灯火通明。28岁的算法工程师小李盯着屏幕上的代码,突然拍案而起:"终于成了!"他开发的智能客服系统在连续失败78次后,首次准确识别出用户"我想换个能打游戏的便宜手机"的真实需求——需要兼顾游戏性能和价格的机型…

深度学习五大模型:CNN、Transformer、BERT、RNN、GAN详细解析

卷积神经网络&#xff08;Convolutional Neural Network, CNN&#xff09; 原理 &#xff1a;CNN主要由卷积层、池化层和全连接层组成。卷积层通过卷积核在输入数据上进行卷积运算&#xff0c;提取局部特征&#xff1b;池化层则对特征图进行下采样&#xff0c;降低特征维度&…

特征分解(Eigen decomposition)在深度学习中的应用与理解

特征分解在深度学习中的应用与理解 特征分解&#xff08;Eigendecomposition&#xff09;是线性代数中的一个核心工具&#xff0c;在深度学习领域有着广泛的应用&#xff0c;尤其是在涉及矩阵操作和概率模型时。对于研究者来说&#xff0c;理解特征分解不仅有助于掌握数学基础…

分布式ID生成方案:数据库号段、Redis与第三方开源实现

分布式ID生成方案&#xff1a;数据库号段、Redis与第三方开源实现 引言 在分布式系统中&#xff0c;全局唯一ID生成是核心基础能力之一。本文针对三种主流分布式ID生成方案&#xff08;数据库号段模式、Redis方案、第三方开源框架&#xff09;进行解析&#xff0c;从实现原理…

rabbitmq-amqp事务消息+消费失败重试机制+prefetch限流

1. 安装和配置 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-amqp</artifactId> </dependency><dependency> <groupId>com.fasterxml.jackson.core</groupId> <arti…

【Python】05、Python运算符

文章目录 1.算术运算符2.赋值运算符3.关系运算符4.逻辑运算符4.1 布尔值逻辑运算4.2 非布尔值的逻辑运算符 5.条件运算符6.运算符优先级 运算符也称为操作符&#xff0c;可以对一个或多个值进行运算或各种操作。比如、-、都属于运算符 1.算术运算符 加法 如果是两个字符串之间…

2025-03-06 学习记录--C/C++-PTA 习题6-6 使用函数输出一个整数的逆序数

合抱之木&#xff0c;生于毫末&#xff1b;九层之台&#xff0c;起于累土&#xff1b;千里之行&#xff0c;始于足下。&#x1f4aa;&#x1f3fb; 一、题目描述 ⭐️ 二、代码&#xff08;C语言&#xff09;⭐️ #include <stdio.h>int reverse( int number );int main…

简记_硬件系统设计之需求分析要点

目录 一、 功能需求 二、 整体性能需求 三、 用户接口需求 四、 功耗需求 五、 成本需求 六、 IP和NEMA防护等级需求 七、 认证需求 功能需求 供电方式及防护 供电方式&#xff1a;市电供电、外置直流稳压电源供电、电池供电、PoE&#xff08;Power Over Ether…

[原创](Modern C++)现代C++的关键性概念: 利用“概念(Concepts)“,可以优雅地约束模板参数

[作者] 常用网名: 猪头三 出生日期: 1981.XX.XX 企鹅交流: 643439947 个人网站: 80x86汇编小站 编程生涯: 2001年~至今[共24年] 职业生涯: 22年 开发语言: C/C、80x86ASM、PHP、Perl、Objective-C、Object Pascal、C#、Python 开发工具: Visual Studio、Delphi、XCode、Eclipse…

Self-Pro: A Self-Prompt and Tuning Framework for Graph Neural Networks

Self-Pro: A Self-Prompt and Tuning Framework for Graph Neural Networks ​#paper/GFM/GNN-BASED#​ #paper/⭐⭐⭐#​ 注意&#xff1a;这篇文章是每个图一个GCN模型&#xff0c;而不是所有图一个GCN 模型 算是最早的涉及异配图的prompt了 贡献和动机&#xff1a; 非对…