lnmp架构拆分(十)

文章目录

    • 1. LNMP架构回顾
    • 2. 拆分数据库至独立服务器
    • 3. 拆分wordpress数据库至独立服务器
    • 4. 拆分zh与edusohu数据库至独立服务器
    • 5. 扩展多台web
    • 6. 共享多台web的静态资源
    • 7. 总结内容

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错误:

lnmp架构拆分(十)_第1张图片

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

nginx+php与apache+php的区别:

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

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

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

lnmp架构拆分(十)_第2张图片

lnmp架构拆分(十)_第3张图片

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 [email protected]:/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  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访问后台)

lnmp架构拆分(十)_第4张图片

lnmp架构拆分(十)_第5张图片

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

lnmp架构拆分(十)_第6张图片
lnmp架构拆分(十)_第7张图片

(1)统一环境

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

1)拷贝web01上面的yum仓库
	[root@web02 ~]# scp [email protected]:/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 [email protected]:/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 [email protected]:/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 [email protected]:/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共享存储服务器,规划目录,配置好权限
lnmp架构拆分(十)_第8张图片

lnmp架构拆分(十)_第9张图片

lnmp架构拆分(十)_第10张图片

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/* [email protected]:/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,有的话就不会退出

你可能感兴趣的:(Integrated,architecture,架构,apache,服务器)