标签:nginx反向代理、动静分离、负载均衡及rewrite隐藏路径详解(nginx apache mysql redis)
Nginx反向代理、动静分离、负载均衡及rewrite隐藏路径详解
(Nginx Apache MySQL Redis)
楓城浪子原创,转载请标明出处!
更多技术博文请见个人博客:https://fengchenglangzi.000webhostapp.com
微信bh19890922
QQ445718526、490425557
以下实验使用5台虚拟机,均为centos 6.8,发布Discuz论坛。
Nginx(192.168.8.134)
LAP-1(192.168.8.135)
LAP-2(192.168.8.136)
MYSQL-Master(192.168.8.137)
MYSQL-Slave(192.168.8.138)
Redis-Master(192.168.8.139)
Redis-Slave(192.168.8.140)
LAP(Linux Apache PHP)使用源码安装,当然亦可YUM安装
1 | [root@localhost ~]# yum install apr-devel apr-util-devel -y |
注:安装编译Apache需要的依赖包,若没有gcc 请安装gcc gcc-c++
1 | [root@localhost ~]# cd /usr/local/src/ |
注:下载apache源码包进行编译安装,其中–enable-module=so参数一定要加上,不然后面不能进行模块添加
1 | [root@localhost php-5.3.28]# yum -y install libxml2 libxml2-devel |
注:安装PHP依赖包,不然编译会报错
1 | [root@localhost src]# wget http://mirrors.sohu.com/php/php-5.3.28.tar.bz2 |
注:编译安装PHP
1 | [root@localhost php-5.3.28]# cp php.ini-production /usr/local/php5/lib/php.ini |
注:把安装包中的php.ini-production复制到/usr/local/php5/lib/并重命名为php.ini
1 | [root@localhost php-5.3.28]# sed -i ‘s/DirectoryIndex/DirectoryIndex index.php/g‘ /usr/local/apache2/conf/httpd.conf |
注:默认情况下安装PHP后会默认生产LoadModule php5_module modules/libphp5.so这句话,所以需要在此局下面添加
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
1 | [root@localhost php-5.3.28]# cd /usr/local/apache2/htdocs/ |
注:在发布目录新加index.php 并加入以上代码,刷新浏览器,出现如下图界面,说明apache与php集成成功
MySQL 主从复制原理剖析
Mysql主从同步其实是一个异步复制的过程,要实现复制首先需要在master上开启bin-log日志功能,整个过程需要开启3个线程,分别是Master开启IO线程,slave开启IO线程和SQL线程。
在从服务器执行slave start,从服务器上IO线程会通过授权的用户连接上master,并请求master从指定的文件和位置之后发送bin-log日志内容。
Master服务器接收到来自slave服务器的IO线程的请求后,master服务器上的IO线程根据slave服务器发送的指定bin-log日志之后的内容,然后返回给slave端的IO线程。(返回的信息中除了bin-log日志内容外,还有本次返回日志内容后在master服务器端的新的binlog文件名以及在binlog中的下一个指定更新位置。)
Slave的IO线程接收到信息后,将接收到的日志内容依次添加到Slave端的relay-log文件的最末端,并将读取到的Master端的 bin-log的文件名和位置记录到master.info文件中,以便在下一次读取的时候能够清楚的告诉Master”我需要从某个bin-log的哪 个位置开始往后的日志内容,请发给我”;
Slave的Sql线程检测到relay-log中新增加了内容后,会马上解析relay-log的内容成为在Master端真实执行时候的那些可执行的内容,并在自身执行。
安装mysql环境,master和slave都执行
1 | [root@localhost ~]# yum install mysql-server mysql-devel mysql-libs –y |
启动mysql数据库,此时数据会自动初始化
1 | </div></li> |
1 | [root@localhost ~]# vim /etc/my.cnf |
在文件[mysqld]中添加如下内容:
log-bin=mysql-bin 开启binlog功能
server-id = 137 指定服务器的id,通常id指定为ip地址的最后一位
若需要指定数据目录请修改datadir=/var/lib/mysql,创建目录后需要给mysql授权,最好是把用户和组指定给mysql,本实验不指定。
1 | mysql> grant all on *.* to slave@"%" identified by "123456"; |
其中all代表所有权限
%代表除本机外所有ip的主机均可连接,若本机连接需要把%改为localhost
此处的用户名slave亦可在安装discuz时使用,当然也可以针对数据库单独创建
1 | mysql> flush privileges; |
刷新权限
在master上执行
1 | mysql> show master status; |
记录file及position
1 | mysql> change master to master_host=‘192.168.8.137‘,master_user=‘slave‘,master_password=‘123456‘,master_log_file=‘mysql-bin.000001‘,master_log_pos=106; |
注意以上必须按照实际填写
1 | mysql> slave start; |
1 | mysql> show slave status\G |
如果如下两行为yes,代表主从同步成功。
1 | mysql> create database discuz; |
master修改my.cnf文件
在master上面给slave授权
slave修改my.cnf文件
查看mysql-bin及Position
重启master及slave
在slave上查看同步状态
启动slave
在slave服务器指定master IP和同步的mysql-bin及pos点
本文出自 “楓城浪子” 博客,请务必保留此出处http://fengchenglangzi.blog.51cto.com/1322043/1963222
Nginx反向代理、动静分离、负载均衡及rewrite隐藏路径详解(Nginx Apache MySQL Redis)–第一部分(LAMP)
标签:nginx反向代理、动静分离、负载均衡及rewrite隐藏路径详解(nginx apache mysql redis)
原文地址:http://fengchenglangzi.blog.51cto.com/1322043/1963222