lnmp架构拆分(十)

1. LNMP架构回顾

自己搭建的博客系统和公司的区别:
web界面安装的本质:创建一个文件,这个文件会生成一些数据库的
连接信息,真正公司的代码,这些数据库的信息是在独立的一个机子
上不动,只需要替换新的代码就行了

这个不是真正的代码,是一个开源的项目,为了便于新手部署,
做了一个向导页面,下一步下一步,会把向导页面生成一个配置文件,
数据库的就生成数据库的文件,什么密码用户名自动帮你写到数据库里。

lnmp架构实现原理:

	nginx --> fastcgi --> php-fpm
		fastcgi_pass address:port;  
		10.0.0.8:9000; # 适合松耦合架构
		unix:/tmp/php.socket # 适合nginx和php在一台机器上

关闭后端的php则会出现502错误:

在这里插入图片描述

如果在php程序独立的跑在一台机器上(在一个机器上一样,不能通过9000端口发送请求),那么nginx如果连接不上后台的主机,则会报502的错误

nginx+php与apache+php的区别:

nginx 是以fastcgi协议调用的php 
	
apache是以模块的方式加载的php
用yum装完php后,会自动成为apache的一个模块,只要一重启apache,相当于把php也起动了  

拆分数据库提高网站的响应(需要扩张web集群),cookie和session也需要知道

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

在这里插入图片描述

在这里插入图片描述

3. 拆分wordpress数据库至独立服务器

(1)备份172.16.1.7服务器上mysql的数据

mysqldump -uroot -p'Bgx123.com' --all-databases --single-transaction > mysql-all.sql

mysqldump -uroot -p'Bgx123.com' -A > mysql-all.sql

(2)传输172.16.1.7的备份数据至172.16.1.51的服务器上

[root@web01 ~]# scp mysql-all.sql root@172.16.1.51:/tmp

(3)需要先在172.16.1.51服务器上安装mysql服务,然后使用mysql命令进行还原

[root@db01 ~]# yum install mariadb-server mariadb -y
[root@db01 ~]# systemctl enable mariadb
[root@db01 ~]# systemctl start mariadb
[root@db01 ~]# mysql </tmp/mysql-all.sql
[root@db01 ~]# systemctl restart mariadb 

[root@db01 ~]# mysql -uroot -pBgx123.com
MariaDB [(none)]> show databases;

(4)将web程序连接的本地数据库修改到远程数据库上

	1)先在本地172.16.1.7服务器上停止本地的数据库
	[root@web01 ~]# systemctl disable mariadb
	[root@web01 ~]# systemctl stop mariadb
	
	2)在172.16.1.51的服务器上授权远程主机能够能连接mysql数据库(默认是拒绝对外连接的,所以web07主机连不上远端数据库服务器,所以必须授权)
	[root@db01 ~]# mysql -uroot -pBgx123.com
	MariaDB [(none)]> grant all privileges on *.* to oldboy@'%' identified by 'Bgx123.com'; # *.* 授权所有库所有表 %  通过任意网段过来(取决于跟这网段通)一般授权不会这么大
	
	3)在172.16.1.7服务器上测试远程账户能否连接172.16.1.51的数据库
	[root@web01 wordpress]# yum install mariadb -y
	[root@web01 wordpress]# mysql -h 172.16.1.51 -uoldboy -pBgx123.com
	MariaDB [(none)]> 

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

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

	/** MySQL数据库密码 */
	define('DB_PASSWORD', 'Bgx123.com');

	/** MySQL主机 */
	define('DB_HOST', '172.16.1.51');

(5)可以用navicat来测试是否成功拆分数据库到单独的db01数据库(可以在浏览器中输入blog.oldboy.com/wp-admin访问后台)

在这里插入图片描述

在这里插入图片描述

4. 拆分zh与edusohu数据库至独立服务器

因为在做查分wordpress的时候,已经把数据可全部迁移过去了,所以只需要把zh和edu的远程数据库连接上就可以了。

(1)拆分172.16.1.7wecenter连接远程172.16.1.51数据库信息

[root@web01 zh]# grep -R "Bgx123.com" *
	system/config/database.php:  'password' => 'Bgx123.com',  
	
[root@web01 zh]# vim /code/zh/system/config/database.php   
		$config['driver'] = 'MySQLi';^M
		$config['master'] = array (
		  'charset' => 'utf8',
		  'host' => '172.16.1.51',
		  'username' => 'oldboy',
		  'password' => 'Bgx123.com',
		  'dbname' => 'zh',
		);^M

(2)拆分172.16.1.7 edusoho连接远程172.16.1.51数据库信息

	[root@web01 edusoho]# vim /code/edusoho/app/config/parameters.yml
    database_driver: pdo_mysql
    database_host: 172.16.1.51
    database_port: 3306
    database_name: edusoho
    database_user: oldboy
    database_password: 'Bgx123.com'

	必须清理缓存
	[root@web01 edusoho]# rm -rf /code/edusoho/app/cache/*

5. 扩展多台web

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9TNH1n9X-1675612188880)(967668F7865C4D43BC187B6D62F28B74)]
在这里插入图片描述

(1)统一环境

0)准备对应的www用户
	[root@web02 ~]# groupadd -g666 www
	[root@web02 ~]# useradd -u666 -g666 www

1)拷贝web01上面的yum仓库
	[root@web02 ~]# scp root@172.16.1.7:/etc/yum.repos.d/*.repo /etc/yum.repos.d/
			
2)安装nginx和php
	[root@web02 ~]# 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

(2)统一配置(同步web01上面的配置到web02)

1)同步nginx
	[root@web02 ~]# rsync  -avz --delete root@172.16.1.7:/etc/nginx/ /etc/nginx/
	[root@web02 ~]# nginx -t
	[root@web02 ~]# systemctl enable nginx
	[root@web02 ~]# systemctl start nginx

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

(3)统一代码

[root@web01 ~]# tar czf code.tar.gz /code				#在web01上打包站点
[root@web01 ~]# scp code.tar.gz root@172.16.1.8:/tmp	#在web01上将打包好的代码发送给web02
[root@web02 ~]# tar xf /tmp/code.tar.gz -C /			#在web02上进行解压,并解压到/目录下

(4)配置解析,进行访问,测试

# 10.0.0.7   blog.oldboy.com  
10.0.0.8   blog.oldboy.com

6. 共享多台web的静态资源

(1)准备172.16.1.31共享存储服务器,规划目录,配置好权限
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WR1sYQ5T-1675612188881)(F740BA43BDB74BFBB20BF76A7AF92BFD)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sW39q9W4-1675612188882)(E774669504E54077A76E82860F74DDA7)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GMv2FbSd-1675612188883)(4EBDF4A7AFC74F1B83617AA830CABA27)]

0)创建用户
	[root@nfs ~]# groupadd -g666 www
	[root@nfs ~]# useradd -u666 -g666 www	
		
1)安装
	[root@nfs ~]# yum install nfs-utils -y
			
2)配置
	[root@nfs ~]# cat /etc/exports
	/data/blog 172.16.1.0/24(rw,sync,all_squash,anonuid=666,anongid=666)
	/data/zh 172.16.1.0/24(rw,sync,all_squash,anonuid=666,anongid=666)
	/data/edu 172.16.1.0/24(rw,sync,all_squash,anonuid=666,anongid=666)

3)根据配置,创建目录,准备用户,授权等等
	[root@nfs ~]# rm -rf /data/
	[root@nfs ~]# mkdir /data/{blog,zh,edu} -p
	[root@nfs ~]# chown -R www.www /data/

4)启动
	[root@nfs ~]# systemctl enable nfs-utils 
	[root@nfs ~]# systemctl restart nfs-utils

(2)将图片较多的web02服务器,推送到nfs共享存储上

http://blog.oldboy.com/wp-content/uploads/2019/01/timg.jpg
		
[root@web02 ~]# cd /code/wordpress/wp-content
[root@web02 wp-content]# scp -r uploads/* root@172.16.1.31:/data/blog/
		
注意:需要上nfs服务器上进行重新的递归授权,否则会出现无法上传文件的错误
[root@nfs ~]# chown -R www.www /data/

(3)web01和web02分别都进行挂载,此时图片进行实现了共享

mount -t nfs 172.16.1.31:/data/blog  /code/wordpress/wp-content/uploads/

7. 总结内容

内容小结:

虚拟机还原,web上,安装nginx与php,记得做快照
1.lnmp
2.拆分数据库
3.拆分静态资源
4.扩展多台web
5.研究前端用负载均衡
	
web01  web02    安装nginx +php
mysql 	        安装mariadb-server
nfs-utils	    安装nfs

为什么我们再次打开页面直接就是登陆状态???

一会登录web1,一会登录web2,一直在登录的状态
第一次的时候客户端cookie给服务端,服务端会生成一个所谓的session,session会存到数据库中去
每次验证是否登录,上数据库查是否有这个id,有的话就不会退出
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值