0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Nginx_LNMP架构拆分

冬至子 来源:运维库 作者:运维库 2023-05-22 17:44 次阅读

1、拆分LNMP数据库至独立服务器概念

(1)为什么要进行数据库的拆分

由于单台服务器运行LNMP架构会导致网站访问缓慢,当内存被吃满时,容易导致系统出现oom,从而kill掉MySQL数据库,所以需要将web和数据库进行独立部署。

(2)数据库拆分后解决了什么问题

1.缓解web网站的压力

2.增强数据库的读写性能

3.提高用户访问的速度

(3)数据库拆分架构演变过程
一体机
 客户端-------LNMP服务器

 拆分数据库
 客户端--------Nginx+PHP服务器--------MySQL服务器

2、拆分wordpress数据库至独立服务器

(1)数据库拆分环境规划
主机名称	         应用环境	  IP地址
Server-1	nginx+php	192.168.2.4	
client-1	mariadb		192.168.2.5
(2)备份192.168.2.4服务器上数据库的数据
[root@Server-1 ~]# mysqldump -uroot -pP@ssw0rd --all-databases --single-transaction >mariadb-all.sql

#一定要检查文件内是否有数据,因为失败了也会有文件产生。
[root@Server-1 ~]#cat mariadb-all.sql
(3)传输192.168.2.4的备份数据至192.168.2.5的服务器上
[root@Server-1 ~]# scp mariadb-all.sql root@192.168.2.5:/code
(4)需要先在192.168.2.5服务器上安装mariadb数据库,然后使用命令进行还原。
#安装mariadb数据库客户端和服务端
[root@Client-1 ~]# yum -y install mariadb mariadb-server

#启动并加入开机自启
[root@Client-1 ~]# systemctl enable mariadb
[root@Client-1 ~]# systemctl start mariadb

#导入数据库信息,重启数据库
[root@Client-1 ~]# mysql 
[root@Client-1 ~]# systemctl restart mariadb

#查看数据库是否导入成功
[root@Client-1 ~]# mysql -uroot -pP@ssw0rd
MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| edusoho            |
| mysql              |
| performance_schema |
| test               |
| wecenter           |
| wordpress          |
+--------------------+
7 rows in set (0.01 sec)
(5)将web程序连接的本地数据库修改到远程数据库上。
#先在本地192.168.2.4服务器上停止本地的数据库
[root@Server-1 ~]# systemctl disable mariadb
[root@Server-1 ~]# systemctl stop mariadb

#在192.168.2.5的服务器上授权远程主机能够能连接数据库
[root@Client-1 ~]# mysql -uroot -pP@ssw0rd
MariaDB [(none)]> grant all privileges on *.* to root@'%' identified by 'P@ssw0rd';
Query OK, 0 rows affected (0.02 sec)

#在192.168.2.4服务器上测试远程账户能否连接192.168.2.5的数据库
[root@Server-1 ~]# mysql -h 192.168.2.5 -uroot -pP@ssw0rd
MariaDB [(none)]>

#在192.168.2.4服务器上修改web程序wordpress连接数据库的配置文件
[root@Server-1 ~]# vim /code/wordpress/wp-config.php
 // ** MySQL 设置 - 具体信息来自您正在使用的主机 ** //
 /** WordPress数据库的名称 */
 define('DB_NAME', 'wordpress');

 /** MySQL数据库用户名 */
 define('DB_USER', 'root');

 /** MySQL数据库密码 */
 define('DB_PASSWORD', 'P@ssword');

 /** MySQL主机 */
 define('DB_HOST', '192.168.2.5');
#注:配置完直接访问wordpress.zxc.com查看

3、拆分wecenter和edusoho数据库至独立服务器

(1)在192.168.2.4服务器上修改web程序wordpress连接数据库的配置文件
#不知道数据库配置文件,可以使用grep查找数据库密码来查看数据库配置文件
[root@Server-1 wecenter]# grep -R "P@ssw0rd" *
 system/config/database.php:  'password' => 'P@ssw0rd',
[root@Server-1 wecenter]# vim system/config/database.php
?php'charset'] = 'utf8mb4';
$config['prefix'] = 'aws_';
$config['driver'] = 'MySQLi';
$config['master'] = array (
  'charset' => 'utf8mb4',
  'host' => '192.168.2.5',
  'username' => 'root',
  'password' => 'P@ssw0rd',
  'dbname' => 'wecenter',
);
$config['slave'] = false;
#注:配置完直接访问wecenter.zxc.com查看
(2)在192.168.2.4服务器上修改web程序edusoho连接数据库的配置文件
[root@Server-1 edusoho]# vim edusoho/app/config/parameters.yml
    database_driver: pdo_mysql
    database_host: 192.168.2.5
    database_port: 3306
    database_name: edusoho
    database_user: root
    database_password: 'P@ssw0rd'

#必须清理缓存
[root@Server-1 edusoho]# rm -rf /code/edusoho/edusoho/app/cache/*
#注:配置完直接访问edu.zxc.com查看

4、扩展多台web服务器集群

(1)为什么要扩展多台web节点

   单台web服务器能抗住的访问量是有限的,配置多台web服务器能提升更高的访问速度。

(2)扩展多台web解决了什么问题
1、单台web节点故障,会导致业务down机
2、多台web节点能够保证业务的持续稳定,扩展性高
3、多台web节点能有效的提升用户访问网站的速度
(3)多台web节点技术架构组成,如下图所示

图片图片

(4)快速扩展一台web
  ① 统一环境
#1、准备对应的www用户
[root@Server-2 ~]# groupadd -g666 www
[root@Server-2 ~]# useradd -u666 -g666 www

#2、拷贝Server-1上面的yum仓库
[root@Server-2 ~]# scp root@192.168.2.4:/etc/yum.repos.d/*.repo /etc/yum.repos.d/

#3、安装nginx和php
[root@Server-2 ~]# yum -y install nginx php71w php71w-cli php71w-common php71w-devel php71w-embedded php71w-gd php71w-mcrypt php71w-mbstring php71w-pdo php71w-xml php71w-fpm php71w-mysqlnd php71w-opcache php71w-pecl-memcached php71w-pecl-redis php71w-pecl-mongodb
  ② 统一配置(同步Server-1上面的配置到Server-2)
#1、同步nginx
[root@Server-2 ~]# rsync -avz --delete root@192.168.2.4:/etc/nginx/ /etc/nginx/
[root@Server-2 ~]# nginx -t
[root@Server-2 ~]# systemctl enable nginx
[root@Server-2 ~]# systemctl start nginx

#2、同步php(/etc/php-fpm.conf /etc/php-fpm.d  /etc/php.ini)
[root@Server-2 ~]# rsync  -avz --delete root@192.168.2.4:/etc/php* /etc/
[root@Server-2 ~]# systemctl enable php-fpm
[root@Server-2 ~]# systemctl start php-fpm

#3、统一代码
[root@Server-1 ~]# tar czf code.tar.gz /code    #在Server-1上打包站点
[root@Server-1 ~]# scp code.tar.gz root@192.168.2.6:/tmp  #在Server-1上将打包好的代码发送给Server-2
[root@Server-2 ~]# tar xf /tmp/code.tar.gz -C /    #在Server-2上进行解压,并解压到/目录下

#4、配置解析进行访问(把host上.4的注释,复制改成.6)

缺点: 就是当用户上传图片、视频附件等静态资源仅上传到一台web服务器上,那么其他的web服务器则无法访问到该图片。

5、拆分静态资源至独立服务器

(1)为什么拆分静态资源至独立存储服务器

    当后端的web节点出现多台时,会导致用户上传的图片、视频附件等内容仅上传到一台web服务器上,那么其他的web服务器则无法访问到该图片。

(2)新增一台NFS存储解决了什么问题
1、保证了多台web节点静态资源一致。
2、有效节省多台web节点的存储空间。
3、统一管理静态资源,便于后期推送至CDN进行静态资源加速。
(3)多台web节点技术架构组成,如下图所示

图片图片

(4)快速扩展一台web节点的环境规划
主机名       应用环境	     IP地址
Server-1     Nginx+PHP	   192.168.2.4
Server-2     Nginx+PHP	   192.168.2.6
NFS		NFS	   192.168.2.7
MySQL		MySQL	   192.168.2.5
(5)快速扩展一台web节点详细步骤
  ① 准备192.168.2.7共享存储服务器,规划目录,配置好权限
#1、创建用户
[root@nfs ~]# groupadd -g666 www
[root@nfs ~]# useradd -u666 -g666 www 
  
#2、安装
[root@nfs ~]# yum install nfs-utils -y
   
#3、配置
[root@nfs ~]# cat /etc/exports
/data/wordpress 192.168.2.0/24(rw,sync,all_squash,anonuid=666,anongid=666)
/data/wecenter 192.168.2.0/24(rw,sync,all_squash,anonuid=666,anongid=666)
/data/edu 192.168.2.0/24(rw,sync,all_squash,anonuid=666,anongid=666)

#4、根据配置,创建目录,准备用户,授权等等
[root@nfs ~]# rm -rf /data/
[root@nfs ~]# mkdir /data/{wordpress,wecenter ,edu} -p
[root@nfs ~]# chown -R www.www /data/
  
#5、启动
[root@nfs ~]# systemctl enable nfs-utils 
[root@nfs ~]# systemctl restart nfs-utils
  ② 将图片较多的Server-2服务器,推送到nfs共享存储上
#1、查看图片右键保存链接,可看见上传路径
http://wordpress.zxc.com/wp-content/uploads/2022/03/timg.jpg

#2、把上传文件夹推送到nfs共享存储上
[root@Server-2 ~]# cd /code/wordpress/wp-content
[root@Server-2 wp-content]# scp -r uploads/* root@192.168.2.7:/data/wordpress/
注意:需要上nfs服务器上进行重新的递归授权,否则会出现无法上传文件的错误
[root@nfs ~]# chown -R www.www /data/
  ③ Server-1和Server-2分别都进行挂载,此时图片进行实现了共享
mount -t nfs 192.168.2.7:/data/wordpress  /code/wordpress/wp-content/uploads/
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • PHP
    PHP
    +关注

    关注

    0

    文章

    452

    浏览量

    26652
  • MYSQL数据库
    +关注

    关注

    0

    文章

    95

    浏览量

    9383
  • CDN网络
    +关注

    关注

    0

    文章

    11

    浏览量

    6763
收藏 人收藏

    评论

    相关推荐

    在AvaotaA1全志T527开发板上使用AvaotaOS 部署 LNMP 服务

    !如仅需安装数据库在lnmp安装包目录下执行:./install.sh db 输入对应MySQL或MariaDB版本前面的序号,回车进入下一步. 如果选择MySQL/MariaDB如果有对应架构
    发表于 07-05 10:01

    nginx重启命令linux步骤是什么?

    ./nginx -s reload 即可   方法二:查找当前nginx进程号,然后输入命令:kill -HUP 进程号 实现重启nginx服务   Nginx的整体
    发表于 07-10 16:40

    nginx重启命令linux步骤是什么?

    ./nginx -s reload 即可   方法二:查找当前nginx进程号,然后输入命令:kill -HUP 进程号 实现重启nginx服务   Nginx的整体
    发表于 07-11 17:13

    【NanoPi NEO试用体验】之安装配置Nginx环境WEB网站详解

    本帖最后由 Q69693721 于 2016-10-18 13:54 编辑 LNMP(Linux+Nginx+Mysql+PHP)相信学过计算机编程和网站的人应该都知道他一直是Linux环境下
    发表于 10-18 12:25

    基于MYSQL,PHP和nginx的部署论坛

    LNMP架构的简单应用-----部署论坛
    发表于 03-19 16:41

    nginx错误页面配置

    16、nginx 错误页面配置nginx错误页面包括404 403 500 502 503 504等页面,只需要在server中增加以下配置即可: error_page404 403 500 502
    发表于 07-26 06:54

    玩转Firefly-RK3399资料汇总(一)

    窗口修改,参考第4点设置系统编码为[zh-CN.UTF-8]同样可以切换系统语言为中文更新系统源2、搭建LNMP服务环境LNMP代表的就是:Linux系统下Nginx+MySQL+PHP这种网站服务器
    发表于 04-13 15:09

    主要学习下nginx的安装配置

    处理。因为有了中间件,使得大型网站在规划有了更好的层次性,维护上更加方便。也可以实现负载均衡、安全防护等。Nginx是一个开源高性能、可靠的HTTP中间件、代理服务,在目前企业中得到了很大的利用。今天
    发表于 10-19 14:12

    Nginx架构介绍 Nginx服务器模型分析

    Nginx是一款免费的、开源的、高性能、模块化、轻量级的HTTP服务器、反向代理服务器以及电子邮件(IMAP/POP3)代理服务器。
    的头像 发表于 01-10 16:32 9186次阅读
    <b class='flag-5'>Nginx</b><b class='flag-5'>架构</b>介绍 <b class='flag-5'>Nginx</b>服务器模型分析

    ECS配置lnmp的详细步骤资料说明

    本文档详细介绍的是ECS配置lnmp的详细步骤资料说明主要内容包括了:一、停止甚至删除系统上现有的web服务器软件,二、安装开发包和库文件,三、安装nginx,四、安装mariadb,五、安装php,六、最重要当然是测试一下了,七、配置虚拟主机
    发表于 03-04 15:48 6次下载
    ECS配置<b class='flag-5'>lnmp</b>的详细步骤资料说明

    nginx-proxy Docker容器的自动化nginx代理

    ./oschina_soft/nginx-proxy.zip
    发表于 05-12 11:30 1次下载
    <b class='flag-5'>nginx</b>-proxy Docker容器的自动化<b class='flag-5'>nginx</b>代理

    Nginx如何监控

    搭建了Nginx集群后,需要继续深入研究的就是日常Nginx监控。
    的头像 发表于 08-22 10:03 1392次阅读

    Nginx搭建流行架构LNMP的步骤

    LNMP是一套技术的组合,L=Linux、N=Nginx、M=MySQL(MyriDB)、P=PHP(Python)
    的头像 发表于 05-22 18:19 894次阅读
    <b class='flag-5'>Nginx</b>搭建流行<b class='flag-5'>架构</b><b class='flag-5'>LNMP</b>的步骤

    Nginx目录结构有哪些

    什么是NginxNginx是一个 轻量级/高性能的反向代理Web服务器,他实现非常高效的反向代理、负载平衡,他可以处理2-3万并发连接数,官方监测能支持5万并发,现在中国使用nginx网站用户有
    的头像 发表于 11-11 11:27 607次阅读
    <b class='flag-5'>Nginx</b>目录结构有哪些

    Nginx 如何实现高性能低消耗

    Nginx 是一个轻量级的HTTP 服务程序,相比其他服务器程序如Apache,Nginx占用内存少,稳定性高,并发处理能力强。同时Nginx 还是一个反向代理服务程序,和邮件代理服务程序
    的头像 发表于 11-11 11:31 561次阅读
    <b class='flag-5'>Nginx</b> 如何实现高性能低消耗