网站改版数据来源表改怎么做,如何卸载和重装wordpress,苏州网站优化公司,装修公司网站建设设计作品主要内容#xff1a;
网站架构演变、LNPMariadb数据库分离、Web服务器集群#xff08;部署Nginx后端web服务器、部署NFS共享存储服务器、部署Haproxy代理服务器、部署DNS域名解析服务器#xff09; 一、网站架构演变#xff1a;
随着网站访问量和业务复杂度的增加#x…主要内容
网站架构演变、LNPMariadb数据库分离、Web服务器集群部署Nginx后端web服务器、部署NFS共享存储服务器、部署Haproxy代理服务器、部署DNS域名解析服务器 一、网站架构演变
随着网站访问量和业务复杂度的增加网站架构需要不断演变以应对更高的性能、可用性和扩展性需求。以下是常见的网站架构演变过程
1、单机版LNMP 架构描述一台WEB服务器部署单机版LNMP Linux 操作系统Nginx Web 服务器MySQL 或 MariaDB 数据库PHP 应用服务器 特点 简单易用适合小型网站或初创项目。所有服务Web、数据库、应用运行在同一台服务器上。性能和扩展性有限无法应对高并发和大数据量。 问题 单点故障服务器宕机会导致整个网站不可用。性能瓶颈无法应对高并发请求。 2、独立数据库服务器LNMPMariadb 架构描述 Linux 操作系统Nginx Web 服务器MySQL 或 MariaDB 数据库PHP 应用服务器 特点 将数据库服务从 Web 服务器中分离出来提高数据库性能和安全性。数据库服务器可以独立扩展增加存储和计算资源。 问题 Web 服务器仍然是单点故障。数据库服务器可能成为性能瓶颈。 该架构将网站静态文件、代码文件等资料与数据库分离LNMP架构当访问用户量增加时单机的处理能力及资源有限PHP或JAVA代码的解析和执行需要消耗大量CPU资源数据库的增删改查需要调用大量的内存资源将两者分离可以减轻服务器的压力Web服务器和数据库服务器的压力得到有效改善的同时但依然存在单点故障问题
3、Web服务器集群代理与Session保持 架构描述 Linux 操作系统Nginx 或 Apache 作为反向代理服务器MySQL 或 MariaDB 数据库PHP 应用服务器集群 特点 使用反向代理服务器如 Nginx 或 HAProxy将请求分发到多个 Web 服务器。通过负载均衡提高网站的并发处理能力。使用 Session 保持机制如 Redis、Memcached确保用户会话在集群中的连续性。 问题 数据库服务器仍然是单点故障。需要解决 Session 同步和一致性问题。 通过Nginx、Haproxy代理服务器实现Web负载均衡集群也可使用LVS调度器实现Web负载均衡集群。部署完Web集群后还需要考虑如何进行Session会话保持方法很多如根据源IP保持代理服务器重写Cookie信息共享文件系统保存session使用数据库共享session等等
但是如果只有一台调度器依然会导致单点故障的问题因此还需要使用Keepalived或Heartbeat之类的软件进行高可用配置 对于网站内容而言可以分离为动态页面和静态页面静态页面就需要数据文件动态页面则需要CPU解析代码需要消耗大量的CPU资源因此可以将静态和动态分离为两组服务器动态页面有脚本代码组成是一种基于网页的应用程序因此这一组服务器也称为应用服务器 4、动静分离、数据库集群 架构描述 Linux 操作系统Nginx 或 Apache 作为反向代理服务器MySQL 或 MariaDB 数据库集群PHP 应用服务器集群静态资源服务器如 CDN、Nginx 特点 使用数据库集群如主从复制、主主复制、分片提高数据库的可用性和性能。通过读写分离、分片等技术分散数据库的负载。提高数据库的扩展性和容错能力。 问题 数据库集群的配置和管理复杂。需要解决数据一致性和同步问题。 随着服务器的增加虽然性能与并发量得到了明显的提升但是数据的一致性、管理的便利性成为了新的问题因此就需要增加统一的存储服务器实现数据的同步一致可以使用NFSGlusterFS、Ceph等软件实现该功能此时所有应用服务器都连接一台数据库服务器进行读写操作而且后期随着数据库中的数据不断增加会导致数据库成为整个网站的瓶颈这就需要我们对数据进行分库分表创建数据库主从或者数据库集群实现读写分离 5、缓存服务器与业务模型
对于静态数据我们可以通过varnish、squid或者nginx进行缓存将数据缓存到距离用户更近的位置构建CDN内容分发网络架构对于传统的SQL数据库而言我们也可以通过增加NoSQL数据库实现数据缓存的功能提升数据库的访问速度 架构描述 Linux 操作系统Nginx 或 Apache 作为反向代理服务器MySQL 或 MariaDB 数据库集群PHP 应用服务器集群静态资源服务器如 CDN、Nginx缓存服务器如 Redis、Memcached 特点 使用缓存服务器如 Redis、Memcached缓存频繁访问的数据和计算结果。通过缓存减少数据库的访问压力提高网站的响应速度。根据业务模型设计缓存策略如缓存预热、缓存失效、缓存更新等。 问题 缓存服务器的配置和管理复杂。需要解决缓存一致性和失效问题。 二、网站架构进阶项目案例
案例1LNPMariadb数据库分离
部署LNPMariadb实现数据库与Web服务器分离实现以下目标
1将旧的数据库备份迁移到新的服务器延续DAY1案例2修改配置调用新的数据库服务器
实验拓扑图 主机配置表 步骤1部署数据库服务器database主机操作
1准备一台独立的服务器安装数据库软件包
[rootdatabase ~]# yum -y install mariadb mariadb-server mariadb-devel
[rootdatabase ~]# systemctl start mariadb
[rootdatabase ~]# systemctl enable mariadb
[rootdatabase ~]# firewall-cmd --set-default-zonetrusted
[rootdatabase ~]# setenforce 0
[rootdatabase ~]# sed -i /SELINUX/s/enforcing/permissive/ /etc/selinux/config
2将web1单机版的LNMP网站中的数据库迁移到新的数据库服务器
登陆192.168.2.11主机备份数据库并拷贝给新的服务器关闭旧的数据库服务
[rootweb1 ~]# mysqldump wordpress wordpress.bak //备份数据库到文件备份的文件名和扩展名任意
[rootweb1 ~]# scp wordpress.bak 192.168.2.21:/root/ //拷贝备份文件到远程主机
[rootweb1 ~]# systemctl stop mariadb
[rootweb1 ~]# systemctl disable mariadb
登陆192.168.2.21主机创建空数据库使用备份文件还原数据库
[rootdatabase ~]# mysql
MariaDB [(none)] create database wordpress character set utf8mb4; //创建数据库wordpress该数据库支持中文
MariaDB [(none)] exit
使用备份文件还原数据
[rootdatabase ~]# mysql wordpress wordpress.bak //使用备份文件导入数据到wordpress数据库
重新创建账户并授权访问
[rootdatabase ~]# mysql
MariaDB [(none)] grant all on wordpress.* to wordpress% identified by wordpress;
MariaDB [(none)] flush privileges; //刷新权限
MariaDB [(none)] show databases;
--------------------
| Database |
--------------------
| information_schema |
| mysql |
| performance_schema |
| test |
| wordpress |
--------------------
5 rows in set (0.00 sec)
MariaDB [(none)] exit
解释说明 # 格式grant权限 on数据库名.表名 to用户名客户端主机 identified by密码 # 创建用户并授权用户名为wordpress该用户对wordpress数据库下的所有表有所有权限 # wordpress用户的密码是wordpress授权该用户可以从localhost主机登录数据库服务器 # all代表所有权限wordpress用户可以对wordpress数据库中所有表有所有权限 # wordpress.*代表wordpress数据库中的所有表 # 在MySQL和MariaDB中%代表所有这里是授权任何主机都可以连接数据库。 3修改wordpress网站配置文件调用新的数据库服务器
Wordpress在第一次初始化操作时会自动生产配置文件wp-config.php登陆192.168.2.11修改该文件即可调用新的数据库服务。
[rootweb1 ~]# vim /usr/local/nginx/html/wp-config.php
# 修改前内容如下
define(DB_HOST, 192.168.2.11); //将原指定2.11本机配置修改为DB主机2.21
# 修改后内容如下
define(DB_HOST, 192.168.2.21);
...
步骤2客户端真机验证测试
1客户端使用浏览器访问wordpress网站http://192.168.2.11 案例2Web服务器集群
使用HAProxy部署Web服务器集群实现以下目标
1部署三台Web服务器包含DAY1的web1部署相同web2、web32迁移网站数据使用NFS实现数据共享3部署HAProxy代理服务器实现负载均衡4部署DNS域名解析服务器
实验拓扑图 主机配置表 步骤1部署LNP架构
1安装LNP软件包web2、web3操作
[rootweb2 ~]# yum -y install gcc pcre-devel openssl-devel
[rootweb2 lnmp_soft]# tar -xf nginx-1.12.2.tar.gz
[rootweb2 lnmp_soft]# cd nginx-1.12.2/
[rootweb2 nginx-1.12.2]# ./configure --usernginx --prefix/usr/local/nginx --with-http_ssl_module --with-http_stub_status_module
[rootweb2 nginx-1.12.2]# make make install
[rootweb2 ~]# yum -y install php php-fpm php-mysql mariadb-devel[rootweb3 ~]# yum -y install gcc pcre-devel openssl-devel
[rootweb3 lnmp_soft]# tar -xf nginx-1.12.2.tar.gz
[rootweb3 lnmp_soft]# cd nginx-1.12.2/
[rootweb3 nginx-1.12.2]# ./configure --usernginx --prefix/usr/local/nginx --with-http_ssl_module --with-http_stub_status_module
[rootweb3 nginx-1.12.2]# make make install
[rootweb3 ~]# yum -y install php php-fpm php-mysql mariadb-devel 案例1延续Mariadb数据库服务已分离到另一台数据库服务器上无需再安装数据库服务 2修改nginx配置实现动静分离web2、web3操作
web2修改默认首页index.php配置两个location实现动静分离
[rootweb2 ~]# vim /usr/local/nginx/conf/nginx.conf
location / {root html;index index.php index.html index.htm;}
location ~ \.php$ {root html;fastcgi_pass 127.0.0.1:9000;fastcgi_index index.php;include fastcgi.conf;}
web3修改默认首页index.php配置两个location实现动静分离。
[rootweb3 ~]# vim /usr/local/nginx/conf/nginx.conf
location / {root html;index index.php index.html index.htm;}
location ~ \.php$ {root html;fastcgi_pass 127.0.0.1:9000;fastcgi_index index.php;include fastcgi.conf;}
3启动LNP所有相关服务、设置防火墙和SELinux
[rootweb2 ~]# echo /usr/local/nginx/sbin/nginx /etc/rc.local
[rootweb2 ~]# chmod x /etc/rc.local
[rootweb2 ~]# /usr/local/nginx/sbin/nginx
[rootweb2 ~]# systemctl start php-fpm
[rootweb2 ~]# systemctl enable php-fpm
[rootweb2 ~]# firewall-cmd --set-default-zonetrusted
[rootweb2 ~]# setenforce 0
[rootweb2 ~]# sed -i /SELINUX/s/enforcing/permissive/ /etc/selinux/config[rootweb3 ~]# echo /usr/local/nginx/sbin/nginx /etc/rc.local
[rootweb3 ~]# chmod x /etc/rc.local
[rootweb3 ~]# /usr/local/nginx/sbin/nginx
[rootweb3 ~]# systemctl start php-fpm
[rootweb3 ~]# systemctl enable php-fpm
[rootweb3 ~]# firewall-cmd --set-default-zonetrusted
[rootweb3 ~]# setenforce 0
[rootweb3 ~]# sed -i /SELINUX/s/enforcing/permissive/ /etc/selinux/config
扩展知识Service文件存储路径为/usr/lib/systemd/system/目录
[rootweb1 ~]# cp /usr/lib/systemd/system/httpd.service /usr/lib/systemd/system/nginx.service
[rootweb1 ~]# vim /usr/lib/systemd/system/nginx.service
[Unit]
DescriptionThe Nginx HTTP Server //描述信息
Afternetwork.target remote-fs.target nss-lookup.target //指定启动nginx之前需要其他的其他服务如network.target等[Service]
Typeforking
ExecStart/usr/local/nginx/sbin/nginx
ExecReload/usr/local/nginx/sbin/nginx -s reload
ExecStop/bin/kill -s QUIT ${MAINPID}[Install]
WantedBymulti-user.target
[rootweb1 ~]# systemctl start nginx
[rootweb1 ~]# ss -nlptu | grep :80
步骤2部署NFS将Wordpress网站数据迁移至NFS共享服务器
1部署NFS共享服务器
[rootnfs ~]# yum install nfs-utils rpcbind
[rootnfs ~]# mkdir /web_share //创建NFS共享目录
[rootnfs ~]# vim /etc/exports
/web_share 192.168.2.0/24(rw,no_root_squash)
[rootnfs ~]# systemctl restart rpcbind
[rootnfs ~]# systemctl enable rpcbind
[rootnfs ~]# systemctl restart nfs
[rootnfs ~]# systemctl enable nfs
[rootnfs ~]# firewall-cmd --set-default-zonetrusted
[rootnfs ~]# setenforce 0
[rootnfs ~]# sed -i /SELINUX/s/enforcing/permissive/ /etc/selinux/config 补充NFS使用的是随机端口启动NFS都需要将自己的随机端口注册到rpcbind服务当客户端访问NFS时先到rpcbind查询端口信息得到端口信息后再访问NFS服务 补充/etc/exports配置文件的no_root_squashsquash压缩压扁的意思 no_root_squash登入NFS的主机使用共享目录的使用者如果是root时那么对于这个目录来说该主机就具有root的权限root_squash登入NFS主机使用共享目录的使用者如果是root时那么使用者的权限将被压缩成为NFS系统账号nfs匿名身份UID与GID都会变成nfsnobody [rootnfs ~]# id nfsnobody
uid65534(nfsnobody) gid65534(nfsnobody) 组65534(nfsnobody)
2迁移旧的网站数据到NFS共享服务器
将web1192.168.2.11上的wordpress代码拷贝到NFS共享
[rootweb1 ~]# cd /usr/local/nginx/html/
[rootweb1 html]# tar -czpf html.tar.gz ./* // [-p]代表打包时保留文件的权限
[rootweb1 html]# scp html.tar.gz 192.168.2.31:/web_share/
[rootweb1 html]# rm -rf /usr/local/nginx/html/* //清空本机的网页目录
登录nfs192.168.2.31将压缩包解压
[rootnfs ~]# cd /web_share/
[rootnfs web_share]# ls
html.tar.gz
[rootnfs web_share]# tar -xf html.tar.gz
[rootnfs web_share]# ls
html.tar.gz wp-activate.php wp-config.php wp-includes wp-mail.php xmlrpc.php
index.php wp-admin wp-config-sample.php wp-links-opml.php wp-settings.php
license.txt wp-blog-header.php wp-content wp-load.php wp-signup.php
readme.html wp-comments-post.php wp-cron.php wp-login.php wp-trackback.php
3所有web服务器访问挂载NFS共享数据web1、web2、web3
[rootweb1 ~]# yum -y install nfs-utils
[rootweb1 ~]# showmount -e 192.168.2.31
Export list for 192.168.2.31:
/web_share 192.168.2.0/24
[rootweb1 ~]# echo 192.168.2.31:/web_share /usr/local/nginx/html/ nfs defaults 0 0 /etc/fstab
[rootweb1 ~]# mount -a
[rootweb1 ~]# ls /usr/local/nginx/html
html.tar.gz wp-activate.php wp-config.php wp-includes wp-mail.php xmlrpc.php
index.php wp-admin wp-config-sample.php wp-links-opml.php wp-settings.php
license.txt wp-blog-header.php wp-content wp-load.php wp-signup.php
readme.html wp-comments-post.php wp-cron.php wp-login.php wp-trackback.php[rootweb2 ~]# yum -y install nfs-utils
[rootweb2 ~]# echo 192.168.2.31:/web_share/html /usr/local/nginx/html/ nfs defaults 0 0 /etc/fstab
[rootweb2 ~]# mount -a[rootweb3 ~]# yum -y install nfs-utils
[rootweb3 ~]# echo 192.168.2.31:/web_share/html /usr/local/nginx/html/ nfs defaults 0 0 /etc/fstab
[rootweb3 ~]# mount -a
4使用浏览器测试访问每个web服务器查看是否有相同的网页数据结果 解释当前所有的WEB服务器已部署LNP架构每台WEB服务器能提供动静态的页面解析然后分离出的database服务器部署Mariadb服务并备份及恢复原web1数据库的数据并提供了wordpress网站访问数据库的用户和所有权限其次将网站的数据存放在NFS服务器的共享目录中并把每台WEB服务器挂载了共享目录实现网页数据访问 步骤3部署HAProxy代理服务器
1部署HAProxy80端口
[rootproxy ~]# yum -y install haproxy
[rootproxy ~]# vim /etc/haproxy/haproxy.cfg
listen wordpress *:80 //监听80端口balance roundrobin //轮询算法server web1 192.168.2.11:80 check inter 2000 rise 2 fall 3server web2 192.168.2.12:80 check inter 2000 rise 2 fall 3server web3 192.168.2.13:80 check inter 2000 rise 2 fall 3
[rootproxy ~]# systemctl start haproxy
[rootproxy ~]# systemctl enable haproxy
[rootproxy ~]# ss -nlptu | grep :80
tcp LISTEN 0 128 *:80 *:* users:((haproxy,pid981,fd7))
[rootproxy ~]# firewall-cmd --set-default-zonetrusted
[rootproxy ~]# setenforce 0
[rootproxy ~]# sed -i /SELINUX/s/enforcing/permissive/ /etc/selinux/config
2使用浏览器测试访问proxy代理服务器查看网页数据结果 步骤4部署DNS域名服务器
1安装DNS相关软件
[rootdns ~]# yum -y install bind bind-chroot
2修改主配置文件添加zone
[rootdns ~]# vim /etc/named.conf
options {listen-on port 53 { any; }; //服务监听的地址与端口directory /var/named; //数据文件路径allow-query { any; }; //允许任何主机访问DNS服务
... ...
};
zone lab.com IN { //定义正向区域type master;file lab.com.zone;
};
#include /etc/named.rfc1912.zones; //注释掉改行
#include /etc/named.root.key; //注释掉改行
[rootdns ~]# named-checkconf /etc/named.conf //检查配置文件语法
3修改正向解析记录文件
[rootdns ~]# cp -p /var/named/named.localhost /var/named/lab.com.zone
[rootdns ~]# vim /var/named/lab.com.zone
$TTL 1DIN SOA rname.invalid. (0 ; serial1D ; refresh1H ; retry1W ; expire3H ) ; minimumNS dns.lab.com.
dns A 192.168.2.10
www A 192.168.2.10
4启动DNS服务
[rootdns ~]# systemctl start named
[rootdns ~]# systemctl enable named
[rootdns~]# firewall-cmd --set-default-zonetrusted
[rootdns ~]# setenforce 0
[rootdns ~]# sed -i /SELINUX/s/enforcing/permissive/ /etc/selinux/config
5修改DNS解析文件
[rootdns ~]# vim /etc/resolv.conf
nameserver 192.168.2.10
— 验证
[rootdns ~]# nslookup www.lab.com
Server: 192.168.2.10
Address: 192.168.2.10#53Name: www.lab.com
Address: 192.168.2.10
备注
如果不做DNS也可直接修改hosts解析文件如果是Linux客户端则修改/etc/hosts文件如何客户端是Windows则需要在图形中配置网卡的DNS服务器 步骤5修改wordpress配置文件
1修改wp-config.php
在define(DB_NAME, wordpress)这行前面添加如下两行内容
[rootnfs ~]# vim /usr/local/nginx/html/wp-config.php
define(WP_SITEURL, http://www.lab.com);
define(WP_HOME, http://www.lab.com);
... 补充如果不添加这两行配置浏览器访问网站某个子页面后URL会固定到某一台后端服务器不轮询。 警告添加的这两行必须与前面的域名解析一致 小结
本篇章节为【第三阶段】PROJECT1-DAY2 的学习笔记这篇笔记可以初步了解到 网站架构演变、LNPMariadb数据库分离、Web服务器集群部署Nginx后端web服务器、部署NFS共享存储服务器、部署Haproxy代理服务器、部署DNS域名解析服务器 Tip毕竟两个人的智慧大于一个人的智慧如果你不理解本章节的内容或需要相关笔记、视频可私信小安请不要害羞和回避可以向他人请教花点时间直到你真正的理解