Nginx反向代理、動靜分離、負載均衡及rewrite隱藏路徑詳解(Nginx Apache MySQL Redis)–第一部分(LAMP)

Nginx反向代理、動靜分離、負載均衡及rewrite隱藏路徑詳解

(Nginx Apache MySQL Redis)

楓城浪子原創,轉載請標明出處!

更多技術博文請見個人博客:https://fengchenglangzi.000webhostapp.com

微信bh19890922

QQ445718526、490425557

一、實驗簡述

1.1 基本環境介紹

以下實驗使用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)

1.2 拓撲結構

二、環境搭建

2.1 源碼安裝LAP

2.1.1 編譯安裝Apache

LAP(Linux Apache PHP)使用源碼安裝,當然亦可YUM安裝

1

[root@localhost ~]# yum install apr-devel apr-util-devel -y

注:安裝編譯Apache需要的依賴包,若沒有gcc 請安裝gcc gcc-c++

1
2
3
4
5
6
7
8
9
10
11

[root@localhost ~]# cd /usr/local/src/

[root@localhost src]# wget http://mirror.bit.edu.cn/apache/httpd/httpd-2.2.34.tar.gz

[root@localhost src]# tar zxf httpd-2.2.34.tar.gz

[root@localhost src]# cd httpd-2.2.34

[root@localhost httpd-2.2.34]# ./configure --prefix=/usr/local/apache2/ --enable-so --enable-rewrite --enable-module=so

[root@localhost httpd-2.2.34]# make -j8 && make install -j8

注:下載apache源碼包進行編譯安裝,其中–enable-module=so參數一定要加上,不然後面不能進行模塊添加

2.1.2 編譯安裝PHP

1

[root@localhost php-5.3.28]# yum -y install libxml2 libxml2-devel

注:安裝PHP依賴包,不然編譯會報錯

1
2
3
4
5
6
7
8
9
10
11
12
13

[root@localhost src]# wget http://mirrors.sohu.com/php/php-5.3.28.tar.bz2

[root@localhost src]# tar jxf php-5.3.28.tar.bz2

[root@localhost src]# cd php-5.3.28

[root@localhost php-5.3.28]# ./configure --prefix=/usr/local/php5 \

--with-mysql=mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd \

--with-apxs2=/usr/local/apache2/bin/apxs

[root@localhost php-5.3.28]# make -j8 && make install -j8

注:編譯安裝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

2.1.3 集成Apache與PHP

1
2

[root@localhost php-5.3.28]# sed -i 's/DirectoryIndex/DirectoryIndex index.php/g' /usr/local/apache2/conf/httpd.conf
[root@localhost php-5.3.28]# sed -i '/LoadModule php5_module/a\AddType application/x-httpd-php .php\nAddType application/x-httpd-php-source .phps' /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
2
3
4
5
6
7
8
9
10
11

[root@localhost php-5.3.28]# cd /usr/local/apache2/htdocs/

[root@localhost htdocs]# echo -e "<?php\nphpinfo();\n?>" > index.php

[root@localhost htdocs]# cat index.php

<?php
phpinfo();
?>

[root@localhost htdocs]# ../bin/apachectl restart

注:在發佈目錄新加index.php 並加入以上代碼,刷新瀏覽器,出現如下圖界面,說明apache與php集成成功

2.2 MySQL主從搭建

2.2.1 Mysql主從原理


MySQL 主從複製原理剖析

Mysql主從同步其實是一個異步複製的過程,要實現複製首先需要在master上開啓bin-log日誌功能,整個過程需要開啓3個線程,分別是Master開啓IO線程,slave開啓IO線程和SQL線程。

  1. 在從服務器執行slave start,從服務器上IO線程會通過授權的用戶連接上master,並請求master從指定的文件和位置之後發送bin-log日誌內容。

  2. Master服務器接收到來自slave服務器的IO線程的請求後,master服務器上的IO線程根據slave服務器發送的指定bin-log日誌之後的內容,然後返回給slave端的IO線程。(返回的信息中除了bin-log日誌內容外,還有本次返回日誌內容後在master服務器端的新的binlog文件名以及在binlog中的下一個指定更新位置。)

  3. Slave的IO線程接收到信息後,將接收到的日誌內容依次添加到Slave端的relay-log文件的最末端,並將讀取到的Master端的 bin-log的文件名和位置記錄到master.info文件中,以便在下一次讀取的時候能夠清楚的告訴Master”我需要從某個bin-log的哪 個位置開始往後的日誌內容,請發給我”;

  4. Slave的Sql線程檢測到relay-log中新增加了內容後,會馬上解析relay-log的內容成爲在Master端真實執行時候的那些可執行的內容,並在自身執行。

2.2.2安裝mysql
  1. 安裝mysql環境,master和slave都執行

1

[root@localhost ~]# yum install mysql-server mysql-devel mysql-libs –y

  1. 啓動mysql數據庫,此時數據會自動初始化

  2. 1
    2
    3

    </div></li>
    </ol>
    [root@localhost ~]# service mysqld restart

    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&gt; grant all on *.* to slave@"%" identified by "123456";

    其中all代表所有權限

    %代表除本機外所有ip的主機均可連接,若本機連接需要把%改爲localhost

    此處的用戶名slave亦可在安裝discuz時使用,當然也可以針對數據庫單獨創建

    1

    mysql&gt; flush privileges;

    刷新權限

    在master上執行

    1

    mysql&gt; show master status;

    記錄file及position

    1

    mysql&gt; 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&gt; slave start;

    1

    mysql&gt; show slave status\G

    如果如下兩行爲yes,代表主從同步成功。

    1

    mysql&gt; create database discuz;

    注:創建discuz數據庫

    1. master修改my.cnf文件

    2. 在master上面給slave授權

    3. slave修改my.cnf文件

    4. 查看mysql-bin及Position

    5. 重啓master及slave

    6. 在slave上查看同步狀態

    7. 啓動slave

    8. 在slave服務器指定master IP和同步的mysql-bin及pos點


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章