部署LNMP动态网站及网站架构变迁

1:网站架构演变

学习从单机架构到集群架构的演变之路:

  1. 单机版LNMP
  2. 独立数据库服务器
  3. Web服务器集群与Session保持
  4. 动静分离、数据库集群
  5. 各种缓存服务器
  6. 业务模型
单机版LNMP

单机版网站,拓扑如图所示。
在这里插入图片描述
单机版网站服务器用户量少时使用,简单、成本低、存在单点故障。

独立数据库服务器

独立数据库服务器是将网站静态文件、代码文件等资料与数据库分离的架构,当用户量增加时单机的处理能力有限,PHP或JAVA代码的执行需要消耗大量CPU资源,数据库的增删改查需要调用大量的内存资源,将两者分离可以减轻服务器的压力,其拓扑结构如图所示。
在这里插入图片描述
web服务器与数据库分离
Web服务器和数据库服务器的压力都可以得到有效改善,访问量有所增加。但是服务器依然存在单点故障问题。

Web服务器集群与Session保持

我们可以通过Nginx、HAproxy代理服务器实现Web负载均衡集群,也可以使用LVS调度器实现Web负载均衡集群。部署完Web集群后还需要考虑如何进行Session会话保持,方法很多,如:根据源IP保持,代理服务器重写Cookie信息,共享文件系统保存session,使用数据库共享session等等。
该架构拓扑如图所示。
在这里插入图片描述
但是如果只有一台调度器依然会导致单点故障的问题,因此还需要使用Keepalived或Heartbeat之类的软件进行高可用配置,如图所示。
在这里插入图片描述
对于网站内容而言可以分离为动态页面和静态页面,静态页面就需要数据文件,动态页面则需要CPU解析代码,需要消耗大量的CPU资源,因此可以将静态和动态分离为两组服务器,动态页面有脚本代码组成,是一种基于网页的应用程序,因此这一组服务器也称为应用服务器,其架构如图所示。
在这里插入图片描述

动静分离、数据库集群

随着服务器的增加,虽然性能与并发量得到了明显的提升,但是数据的一致性、管理的便利性成为了新的问题,因此就需要增加统一的存储服务器,实现数据的同步一致,可以使用NFS,GlusterFS、Ceph等软件实现该功能,其架构如图所示。
在这里插入图片描述

此时所有应用服务器都连接一台数据库服务器进行读写操作,而且后期随着数据库中的数据不断增加,会导致数据库成为整个网站的瓶颈!这就需要我们对数据进行分库分表,创建数据库主从或者数据库集群,实现读写分离,其拓扑如图所示。
在这里插入图片描述

缓存服务器与业务模型

对于静态数据我们可以通过varnish、squid或者nginx进行缓存,将数据缓存到距离用户更近的位置,构建CDN(内容分发网络)架构。
对于传统的SQL数据库而言,我们也可以通过增加NoSQL数据库,实现数据缓存的功能,提升数据库的访问速度。
备注:数据库相关知识在第三阶段课程有详细介绍,第二阶段项目暂时不做数据库优化。
最后,基于前面的架构,我们还可以将网站按照公司的业务进行分离,每个业务都可以是一个独立的集群,如图所示。
在这里插入图片描述

案例1:部署LNMP动态网站

部署LNMP动态网站,实现以下目标:

安装LNMP平台相关软件
配置Nginx实现动静分离
配置数据库,创建账户与密码
上线Wordpress代码
使用Wordpress后台管理界面,调整Wordpress版式

实验拓扑如图所示,做具体实验前请先配置好环境。
在这里插入图片描述

步骤一:安装部署LNMP软件

备注:mariadb(数据库客户端软件)、mariadb-server(数据库服务器软件)、mariadb-devel(其他客户端软件的依赖包)、php(解释器)、php-fpm(进程管理器服务)、php-mysql(PHP的数据库扩展包)。

  1. 安装软件包
[root@centos7 ~]# yum -y install gcc openssl-devel pcre-devel 
[root@centos7 ~]# useradd -s /sbin/nologin  nginx
[root@centos7 ~]# tar -xvf nginx-1.12.2.tar.gz
[root@centos7 ~]# cd nginx-1.12.2
[root@centos7 nginx-1.12.2]# ./configure --user=nginx --group=nginx --with-http_ssl_module --with-http_stub_status_module
[root@centos7 nginx-1.12.2]# make && make install
[root@centos7 ~]# yum -y install   mariadb   mariadb-server   mariadb-devel
[root@centos7 ~]# yum -y install   php        php-mysql        php-fpm
  1. 启动服务(nginx、mariadb、php-fpm)
[root@centos7 ~]# /usr/local/nginx/sbin/nginx                 #启动Nginx服务
[root@centos7 ~]# echo "/usr/local/nginx/sbin/nginx" >> /etc/rc.local
[root@centos7 ~]# chmod +x /etc/rc.local
[root@centos7 ~]# ss -utnlp | grep :80                        #查看端口信息
[root@centos7 ~]# systemctl start   mariadb                   #启动mariadb服务器
[root@centos7 ~]# systemctl enable  mariadb               
[root@centos7 ~]# systemctl start  php-fpm                   #启动php-fpm服务
[root@centos7 ~]# systemctl enable php-fpm

附加知识:systemd!!!
源码安装的软件默认无法使用systemd管理,如果需要使用systemd管理源码安装的软件需要手动编写服务的service文件(编写是可以参考其他服务的模板文件)。以下是nginx服务最终编辑好的模板。
Service文件存储路径为/usr/lib/system/system/目录。

[root@centos7 ~]# vim /usr/lib/systemd/system/nginx.service
[Unit]
Description=The Nginx HTTP Server
#描述信息
After=network.target remote-fs.target nss-lookup.target
#指定启动nginx之前需要其他的其他服务,如network.target等
[Service]
Type=forking
#Type为服务的类型,仅启动一个主进程的服务为simple,需要启动若干子进程的服务为forking
ExecStart=/usr/local/nginx/sbin/nginx
#设置执行systemctl start nginx后需要启动的具体命令.
ExecReload=/usr/local/nginx/sbin/nginx -s reload
#设置执行systemctl reload nginx后需要执行的具体命令.
ExecStop=/bin/kill -s QUIT ${
   MAINPID}
#设置执行systemctl stop nginx后需要执行的具体命令.
[Install]
WantedBy=multi-user.target
  1. 修改Nginx配置文件,实现动静分离

修改配置文件,通过两个location实现动静分离,一个location匹配动态页面,一个loation匹配其他所有页面。
注意修改默认首页为index.php!

[root@centos7 ~]# 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;
        }
...省略部分配置文件内容...
[root@centos7 ~]# /usr/local/nginx/sbin/nginx -s reload            #重新加载配置
  1. 配置数据库账户与权限

为网站提前创建一个数据库、添加账户并设置该账户有数据库访问权限。

[root@centos7 ~]# mysql
MariaDB [(none)]> create database wordpress character set utf8mb4;
MariaDB [(none)]> grant all on wordpress.* to wordpress@'localhost' identified by 'wordpress';
MariaDB [(none)]> grant all on wordpress.* to wordpress@'192.168.2.11' identified by 'wordpress';
MariaDB [(none)]> flush privileges;
MariaDB [(none)]> exit

提示:在mysql和mariadb中%代表匹配所有,这里是授权wordpress用户可以从任意主机连接数据库服务器,生产环境建议仅允许特定的若干主机访问数据库服务器。

步骤二:上线wordpress代码
  1. 上线PHP动态网站代码
[root@centos7 ~]# yum -y install unzip
[root@centos7 ~]# unzip wordpress.zip
[root@centos7 ~]# cd wordpress
[root@centos7 wordpress]# tar -xf wordpress-5.0.3-zh_CN.tar.gz
[root@centos7 wordpress]# cp -r  wordpress/*  /usr/local/nginx/html/
[root@centos7 wordpress]# chown -R apache.apache  /usr/local/nginx/html/
提示:动态网站运行过程中,php脚本需要对网站目录有读写权限,而php-fpm默认启动用户为apache。
  1. 初始化网站配置(使用客户端访问web服务器IP)

[root@client ~]# firefox http://192.168.2.11/
第一次访问服务器会自动进入config配置页面,效果如图-31所示。
在这里插入图片描述
开发人员在写代码的时候并不知道未来数据库服务器的IP、端口、数据库名称、账户等信息,该配置页面主要的作用就是动态配置数据库信息,根据前面步骤配置的数据库信息填空即可,效果如图-32所示。
在这里插入图片描述
点击提交即可完成数据库的初始化工作,php动态脚本会自动在wordpress数据库中创建若干数据表,后期网站的数据都会写入对并的数据表中。效果如图-33所示。
在这里插入图片描述
第一次使用Wordpress需要给你的网站设置基本信息,如网站标题、网站管理员账户与密码等信息,配置完成后点击安装wordpress即可,如图-34所示。
在这里插入图片描述

步骤三:网站后台管理
  1. 访问192.168.2.11服务器,进入并熟悉后台管理界面

通常情况下,开发人员会开发一个后台管理界面,当代码上线后,普通用户就可以管理和配置网站页面(需要使用网站的超级管理员身份才可以进入后台界面)。

[root@client ~]# firefox http://192.168.2.11

访问首页后点击如图-35所示的登陆菜单,输入账户和密码进入后台管理界面。
在这里插入图片描述
或者直接在地址栏中输入后台管理界面的具体URL。

[root@client ~]# firefox  http://192.168.2.11/wp-login.php

输入管理员用户名和密码,效果如图-36所示。登陆后台管理界面效果如图-37所示。

在这里插入图片描述
在这里插入图片描述
2. 修改网站主题

Wordpress主题会影响网站的整体外观,我们可以使用默认自带的若干主题。
后台修改网站主题的菜单为<外观>–<主题>,使用默认主题,点击启用即可,如图所示。
在这里插入图片描述
如果需要更多更新的主题,则可以去官网下载更多新的主题,默认下载的主题格式为zip压缩包。
官方网站主题链接:(https://cn.wordpress.org/themes/browse/popular/)。
将主题下载到服务器本地后,可以在后台管理界面添加主题,<外观>–<主题>–<添加>–<上传主题>–<浏览>–<现在安装>,如图所示。
在这里插入图片描述
部署新主题的另一种方法是,直接将下载的zip主题包拷贝到wordpress代码的特定目录,如/usr/local/nginx/html/wp-content/themes/目录,然后使用unzip解压主题即可,效果如图-40所示。
在这里插入图片描述

  1. 修改网站小工具

小工具是首页中的各种常用功能菜单,可以添加和删除。
首先可以删除一些不需要的小工具,如最近文章、最近评论等,如图-41所示。
在这里插入图片描述
Right、Legt、Header代表的是小工具的位置,使用鼠标拖动小工具可以移动位置,如图-42所示。
在这里插入图片描述
可以通过小工具为网站添加导航功能,使用鼠标将导航菜单拖动到合适的位置即可,默认没有导航菜单,需要自定义创建,如图-43所示。
在这里插入图片描述
创建导航菜单后,可以继续创建页面,并将页面添加到导航菜单中。<页面>–<新建页面>即可添加新的页面,如图-44和图-45所示。新的页面内容可以是段落、图像、列表、引语等(每个人根据自己的需要自由发挥)。
在这里插入图片描述
图-44
在这里插入图片描述
图-45
新的页面添加完成后,可以将其添加到菜单中使用,如图-46所示。访问网站首页即可查看导航菜单的效果,如图-47所示。
在这里插入图片描述
图-46
在这里插入图片描述

案例2:LNP+Mariadb数据库分离

2.1 问题
部署LNP+Mariadb实现数据库与Web服务器分离,实现以下目标:

将旧的数据库备份,迁移到新的服务器
修改配置调用新的数据库服务器

2.2 方案

实验拓扑如图所示,做具体实验前请先配置好环境。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值