基於LAMP 的NFS數據共享論壇網站

基於LAMP NFS數據共享論壇網站

實現要求:

1.在兩臺或多臺Linux系統上安裝LAPApachephp),一臺安裝mariadb,一臺安裝DNS服務器。

2.其中LAP之間的網頁數據是相同的,且安裝Discuz論壇,論壇上傳的附件存放在本地文件系統上,但必須實現LAP之間的數據同步。通過NFS數顯數據共享。

3.多臺LAP共用一臺數據存儲設備Mariadb,實現數據的存儲。DNS服務器對同一域名解析不同的A記錄,實現輪詢解析web服務器的A記錄。

實驗環境結構圖:

        wKiom1YLfhCgAFLbAADhbEREdPg322.jpg

實驗環境:

1.兩臺CentOS6的系統,安裝LAPNFS DNS 

IP172.16.99.1DNS服務器和LAP

IP172.16.99.2NFS服務器和LAP

2.一臺CentOS6系統安裝Mariadb172.16.99.3

實驗步驟:

一.安裝LAPNFSDNS

1.安裝開發環境:

配置好本地yum

# yum groupinstall Development Tools

# yum groupinstall Server Platform Development

2.172.16.99.1主機上安裝DNS

a.172.16.99.1yum安裝DNS

  # yum install -y bind bind-utils

b.修改主配置文件,添加域:zkchang.com

 

         options {            
                listen-on port 53 { 172.16.99.1; };  //監聽的端口與主機IP
                directory      "/var/named"
                allow-query { 172.16.99.0/16 ; }; //允許網絡段進行DNS解析
                recursion yes;   //是否允許遞歸查詢
          };
          zone "zkchang.com" IN {
                type master;  
                file "zkchang.com.zone"; 
          };
          zone "99.16.172.in-addr.arpa" IN{
                type master;
                file "172.16.99.1.zone";
          };

c.編寫正反向解析區域數據庫文件:

正向:

            zkchang.com.    IN      SOA     ns1.zkchang.com.        admin.zkchang.com. ( 2015091406  6H 5M 2D 1D  )            
            zkchang.com.    IN      NS      ns1.zkchang.com.
            zkchang.com.    IN      NS      ns2.zkchang.com.
            ns1             IN      A       172.16.99.1
            ns2             IN      A       172.16.99.2
            www             IN      A       172.16.99.1
            www             IN      A       172.16.99.2

反向:

            $TTL 1D            
            @       IN      SOA     ns1.zkchang.com.        admin.zkchang.com. (2015091406 6H 5M 2D 1D)
                            IN      NS      ns1.zkchang.com.
                            IN      NS      ns2.zkchang.com.
            1               IN      PTR     ns1.zkchang.com.
            2               IN      PTR     ns2.zkchang.com.
            1               IN      PTR     www.zkchang.com.
            2               IN      PTR     www.zkchang.com

d.重啓服務:測試:

# service named restart

# dig -t a www.zkchang.com @172.16.99.1

wKioL1YLf4ej1wIiAAF_E_29QXg097.jpg

3.兩臺都安裝安裝LAP

a.安裝httpd

(1)安裝pcre-devel# yum install pcre-devel

    (2)編譯安裝:aprapr-util   

                # tar xf apr-1.5.0.tar.bz2                
                # cd apr-1.5.0
                # ./configure --prefix=/usr/local/apr
                # make && make install
                # tar xf apr-util-1.5.3.tar.bz2
                # cd apr-util-1.5.3
                # ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr
                # make && make install

(3)編譯安裝httpd

                # tar xf httpd-2.4.12.tar.bz2                
                # cd httpd-2.4.12
                # ./configure --prefix=/usr/local/httpd  --sysconfdir=/etc/httpd24 --enable-so --enable-ssl --enable-cgi --enable-rewrite --with-zlib --with-pcre --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --enable-modules=most --enable-mpms-shared=all --with-mpm=event
                # make && make install

(4)配置:

a.提供系統服務:

/usr/local/httpd/bin目錄下的apachectl文件複製到/etc/init.d/下,並命名爲httpd

# cp /usr/local/httpd/bin/apachectl  /etc/init.d/httpd

修改httpd文件:在文件前部分添加如下幾行:

# chkconfig: - 85 15

# description: Apache is a World Wide Web server.

添加系統服務:

#  chkconfig --add httpd

b.添加PATH變量:

在目錄/etc/profile.d/目錄下創建一文件httpd.sh,內容如下:

export PATH=/usr/local/httpd/bin/:$PATH

測試:

wKioL1YLgFWS3EBHAAC7RthagzA808.jpg


b.安裝php

1.解決依賴關係:

                # yum -y install bzip2-devel libxml2-devel                
                # tar xf ibmcrypt-2.5.8.tar.gz
                # ./configure --prefix=/usr/local/libmcrypt
                # make && make install

2.編譯安裝php-5.6.4.tar.xz

                # tar xf php-5.6.4.tar.xz                
                # cd php-5.6.4
                # ./configure --prefix=/usr/local/php --with-mysql=mysqlnd --with-pdo-mysql=mysqlnd --with-mysqli=mysqlnd --with-openssl --enable-mbstring --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml  --enable-sockets --enable-fpm --with-mcrypt=/usr/local/libmcrypt  --with-config-file-path=/etc --with-config-file-scan-dir=/etc/php.d --with-bz2
                # make && make install

            這裏把--with-apxs2=/usr/local/apache/bin/apxs 改成--enable-fpm ,即,就是在編輯php時,添加fpm模塊。

3. 爲服務提供配置文件:

    # cp php.ini-production /etc/php.ini

4.配置php-fpm

安裝完php之後,會在php-5.6.4目錄下的有一個目錄提供了php-fpm的服務腳本。

sapi/fpm/init.d.php-fpm

1.php-fpm添加至服務列表:

                    php-5.6.4]# cp sapi/fpm/init.d.php-fpm /etc/rc.d/init.d/php-fpm                    
                    # chmod +x /etc/rc.d/init.d/php-fpm 
                    # chkconfig --add php-fpm

2.php-fpm提供配置文件:

# cp /usr/local/php/etc/php-fpm.conf.default  /usr/local/php/etc/php-fpm.conf

3.配置php-fpm的配置文件,修改內容:

                    pm.max_children = 50                    
                    pm.start_servers = 5
                    pm.min_spare_servers = 2
                    pm.max_spare_servers = 8
                    pid = /usr/local/php5/var/run/php-fpm.pid

4.啓動php-fpm服務,查看是否成功:

# service php-fpm start

wKioL1YLgT7BsfLBAAEfX28addE279.jpg

c.配置httpd:

1.httpd能識別php文件,

# vim /etc/httpd/httpd.conf

 1、添加如下二行

   AddType application/x-httpd-php  .php

   AddType application/x-httpd-php-source  .phps

 2、定位至DirectoryIndex index.html 

   修改爲:

    DirectoryIndex  index.php  index.html

2.添加fcgi模塊

Apache httpd 2.4以後已經專門有一個模塊針對FastCGI的實現,此模塊爲mod_proxy_fcgi.so,它其實是作爲mod_proxy.so模塊的擴充,因此,這兩個模塊都要加載

LoadModule proxy_module modules/mod_proxy.so

LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so

wKioL1YLgbyAyMTiAADXt4gG66k837.jpg

3.配置支持fcgi的虛擬主機

註釋掉中心主機

在配置文件中,取消對#Include /etc/httpd24/extra/httpd-vhosts.conf的註釋,使httpd支持虛擬主機。

                    編輯虛擬主機的配置文件:

                <VirtualHost *:80>            
                    DocumentRoot "/web/dz/"
                    ServerName www.zkchang.com
                    ServerAlias www.zkchang.com
                    ErrorLog "/var/log/dz_error_log"
                    CustomLog "/var/log/dz_access_log" common
                    ProxyRequests off
                    ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/web/dz/$1
                    <Directory "/web/dz/">
                        Options None
                        Allowoverride None
                        Require all denied
                        Require ip 172.16.0.0/16
                    </Directory>
                </VirtualHost>

4.創建目錄,進行測試:

                # mkdir -pv /web/dz                
                # vim index.php
                <?php
                    echo "nihao";
                    phpinfo();
                ?>

wKiom1YLgjPyQ2bvAAG6a-eoQvo449.jpg

到此LAP安裝結束:另一臺的安裝過程和此臺相同。

4.172.16.99.2主機上安裝和配置NFS

                   #yum install nfs-utils

                   編輯配置文件:/etc/exports

/web/dz 172.16.99.1(rw,async,no_root_squash)

配置共享目錄爲可讀寫,客戶端root用戶權限不壓縮

[root@www ~]# service nfs restart

Shutting down NFS daemon:                                  [  OK  ]

Shutting down NFS mountd:                                  [  OK  ]

Shutting down NFS services:                                [  OK  ]

Shutting down RPC idmapd:                                  [  OK  ]

Starting NFS services:                                     [  OK  ]

Starting NFS mountd:                                       [  OK  ]

Starting NFS daemon:                                       [  OK  ]

Starting RPC idmapd:                                       [  OK  ]

172.16.99.1web服務器上掛載172.16.99.2web服務器上的站點共享目錄/web/dz/以實現數據共享:

# mount -t nfs 172.16.99.2:/web/dz /web/dz

/etc/fastab文件中添加一行:

172.16.99.2:/web/dz     /web/dz        nfs     defaults        0 0

測試一下:爲了效果我們用IP測試

            wKioL1YLgxHzpIZyAAGi79SXcdE702.jpg

            

二.安裝Mariadb

1.172.16.99.3虛擬機上安裝一個磁盤,分區,進行存放MariadbData目錄:

創建一目錄用於掛在創建的邏輯卷:# mkdir -pv /mydata/

創建邏輯卷並格式化掛在:

先分區,改變分區ID8e 

創建物理卷:  ~]# pvcreate /dev/sdb1 /dev/sdb2

創建卷組:~]# vgcreate vg0 /dev/sdb1 /dev/sdb2

創建邏輯卷: ~]# lvcreate -n mydata -L 8G vg0

格式化:~]# mkfs -t ext4 /dev/mapper/vg0-mydata

掛在:~]# mount /dev/mapper/vg0-mydata /mydata/

永久掛在:編寫文件/etc/fstab 添加一行:

/dev/mapper/vg0-mydata  /mydata/  ext4    defaults     0 0

                創建目錄:mkdir -pv /mydata/data

2.創建用戶和用戶組:

        ~]# groupadd -g 3333 mysql        
        ~]# useradd -r -u 3333 -g 3333 -s /sbin/nologin -M -d /mydata/data mysql
        ~]# cat /etc/passwd | grep mysql
        mysql:x:3333:3333::/mydata/data:/sbin/nologin

3.使用通用二進制安裝Mariadb

        # tar xf  mariadb-5.5.43-linux-x86_64.tar.gz -C /usr/local        
        # cd /usr/local/
        # ln -sv  mariadb-5.5.43-linux-x86_64 mysql
        # cd mysql

進入mariadb 目錄之後,修改該目錄下所有文件和目錄的屬主和屬組:

mysql]# chown -R mysql.mysql ./*

初始化數據庫:

mysql]# scripts/mysql_install_db  --user=mysql --datadir=/mydata/data/ 

            再修改該目錄下文件和目錄的屬主:# chown -R root ./*

4.後續配置:

a.提供系統服務:

# cd /usr/local/mariadb

# cp support-files/mysql.server  /etc/rc.d/init.d/mysqld

# chmod +x /etc/rc.d/init.d/mysqld

添加至服務列表:

添加至服務列表:

# chkconfig --add mysqld

# chkconfig mysqld on

b.提供配置文件,並在配置文件中添加幾項:

# cd /usr/local/mysql

# cp support-files/my-large.cnf  /etc/my.cnf

修改配置文件:

datadir = /mydata/data

innodb_file_per_table = on

skip_name_resolve = on

c.修改PATH變量,直接可以使用mysql的相關工具:

/etc/profile.d/目錄下創建文件mysqld.sh

export PATH=/usr/local/mysql/bin:$PATH

d.輸出mysql的頭文件至系統頭文件路徑:創建鏈接實現:

# ln -sv /usr/local/mysql/include  /usr/include/mysql

e.輸出mysql的庫文件給系統庫查找路徑:

# echo '/usr/local/mysql/lib' > /etc/ld.so.conf.d/mysql.conf

讓系統重新載入系統庫:

# ldconfig   

5.測試:

wKioL1YLg8rA7kozAAGzrFR0MV0051.jpg

6.測試一下LAP主機能否連接mysql

1.172.16.99.3虛擬機上爲mysql創建用戶,並授權:

  MariaDB [(none)]> CREATE USER 'zkchang'@'%' IDENTIFIED BY 'zkchang';

  MariaDB [(none)]> GRANT ALL ON *.* TO 'zkchang'@'%';

wKiom1YLhEGyWok5AAF1BxIu25s856.jpg

2.172.16.99.2上編輯/web/dz/index.php。內容如下:

            <?php            
                    echo "This web server is 172.16.99.2";
                    $link=mysql_connect('172.16.99.3','zkchang','zkchang');
                    if($link)
                        echo "OK";
                    else
                        echo "Failure";
                    phpinfo();
            ?>

3.測試結果:

wKioL1YLhILz3HjnAAGk0uZIHog745.jpg

三.安裝Discuz

172.16.99.2上安裝Discuz

# unzip Discuz_X3.2_SC_UTF8.zip

解壓之後產生三個目錄:readme upload utility。將upload 複製到/web/dz目錄下,並命名爲dz

# cp -a upload /web/dz/dz

網頁訪問dz

wKiom1YLhN_SrNERAAEsbyf28-Y709.jpg

wKioL1YLhPfQ8q8UAAFzR49EySI707.jpg

四.測試:

在一臺主機上以IP172.16.99.2以管理員訪問Discuz,發表一個帖子並上傳附件。之後用另一個IP172.16.99.1以另一個用戶訪問Discuz,查看是否有附件和帖子。是否實現數據同步?

wKiom1YLhVWDN9ERAAHmHBegprg720.jpg

然後以一個普通用戶使用IP172.16.99.1登錄論壇,查看是否有帖子和附件:

    wKioL1YLhYvDuAp0AAHM7knwzGY436.jpg

發現論壇中有新帖出現,且有附件。說明數據同步成功!!




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