LAMP+DNS+nfs+Samba實現discuz論壇

wKioL1YHPl7zMc_0AAG16fnzPuM003.jpg


一、測試環境

操作系統爲:CentOS 6.6,yum源使用光盤鏡像配置 

DNS服務器:192.168.1.10;A記錄www.bengbengtu.com分別指向後端的2臺web服務器的ip地址

Web1服務器:192.168.1.11;安裝-httpd2.4.16,php-5.6.13,發佈的discuz論壇是共享samba的discuz目錄

Web2服務器:192.168.1.12;配置同web1服務器

Mysql服務器:192.168.1.13;安裝mariadb-5.5.43的通用二進制包,datadir使用nfs共享的mysql_data

目錄

nfs+samba服務器:192.168.1.14;nfs負責爲mysql提供datadir,samba負責爲web1和web2提供discuz論壇


配置順序:DNS服務器--->nfs+samba服務器---> mysql服務器--->web服務器 

注意:爲確保不會影響服務器的訪問,請將iptables服務關閉(瞭解防火牆規則的同學可忽略~)

使用的軟件安裝包

 wKiom1YHWCuwqwgKAAFCT4DFzGE704.jpg


二、DNS服務器部署過程

2.1、準備工作

[root@localhost ~]# hostname dns                       //改主機名
[root@localhost ~]# vim /etc/sysconfig/network
NETWORKING=yes 
HOSTNAME=dns                                         //使主機名永久有效
[root@dns ~]# getenforce 
Enforcing
[root@dns ~]# setenforce 0
[root@dns ~]# vim /etc/sysconfig/selinux         //關閉selinux
SELINUX=permissive


2.2、安裝bind並配置

[root@dns named]# yum install -y bind bind-utils                 //安裝dns
[root@dns ~]# vim /etc/named.conf                 //修改dns配置文件
[root@dns ~]# cd /var/named/                    
[root@dns named]#vim bengbengtu.com.zone              //建立dns的正向區域解析文件
[root@dns named]# cp bengbengtu.com.zone 192.168.1.in-addr.arpa.zone 
[root@dns named]#vim 192.168.1.in-addr.arpa.zone   //建立dns的反向區域解析文件
[root@dns named]# chown root.named bengbengtu.com.zone 192.168.1.in-addr.arpa.zone  //改屬主屬組

/etc/named.conf中相關設置

options {
        listen-on port 53 { 192.168.1.10; };       //監聽地址和端口
        directory       "/var/named";               //dns數據目錄
        allow-query     { 192.168.1.0/24; };      //允許什麼ip地址查詢
        recursion yes;                          //是否允許遞歸
};

zone "bengbengtu.com" {                            //定義正向區域        
        type master;
        file "bengbengtu.com.zone";
};

zone "1.168.192.in-addr.arpa" {                 //定義反向區域  
        type master;
        file "192.168.1.in-addr.arpa.zone";       //定義解析文件 

};


bengbengtu.com.zone---正向區域解析文件

$TTL 1D                 //域名解析記錄在DNS服務器上緩存時間
@       IN      SOA     @      admin.bengbengtu.com. (           
                2015092501               //版本號
                1H                       //刷新時間,同步時使用 
                5M                       //重試時間
                3D                       //過期時間,定義解析緩存時間
                1D )                     //否定答案統一回應時間   
        IN      NS      ns1.bengbengtu.com.     //定義ns記錄,名稱服務器
ns1     IN      A       192.168.1.10        //名稱服務器的A記錄
www     IN      A       192.168.1.11     //同一主機名指定不同的A記錄  
www     IN      A       192.168.1.12           
web     IN      CNAME   www           //web的別名設置爲www,及客戶端訪問web同www


192.168.1.in-addr.arpa.zone---反向區域解析文件

$TTL 1D
@       IN      SOA     1.168.192.in-addr.arpa.     admin.bengbengtu.com. (
                2015092501            //版本號
                1H                    //刷新時間,同步時使用 
                5M                    //重試時間
                3D                    //過期時間,定義解析緩存時間
                1D )                  //否定答案統一回應時間
        IN      NS      ns1.bengbengtu.com.
10      IN      PTR     ns1          //Pointer Record,指針記錄,ip解析成名稱
11      IN      PTR     www           
12      IN      PTR     www


2.3、檢查bind語法並啓動

[root@dns named]# named-checkzone bengbengtu.com bengbengtu.com.zone
zone bengbengtu.com/IN: loaded serial 2015092501
OK
[root@dns named]# named-checkzone 192.168.1 192.168.1.in-addr.arpa.zone 
zone 192.168.1/IN: loaded serial 2015092501
OK
[root@dns named]# chkconfig named on

wKiom1YHQhKwRnPDAAB26H0rjv4074.jpg

wKioL1YHRrWSlja2AAKkn4s5bsI132.jpg

wKioL1YHRrayGOB0AAJJ0mO6a7k953.jpg


三、nfs+samba服務器

3.1、介紹

(1)nfs--網絡文件系統

      FreeBSD支持的文件系統中的一種,它允許網絡中的計算機之間通過TCP/IP網絡共享資源。在NFS的應用中,本地NFS的客戶端應用可以透明地讀寫位於遠端NFS服務器上的文件,就像訪問本地文件一樣。

(2)samba--Server Messages Block,信息服務塊

     SMB協議是客戶機/服務器型協議,客戶機通過該協議可以訪問服務器上的共享文件系統、打印機及其他資源。


3.2、準備工作,安裝nfs和samba

準備2塊磁盤,/dev/sdb給nfs使用,/dev/sdc給samba使用

[root@localhost ~]# hostname nfs_samba
[root@localhost ~]# vim /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=nfs_samba

[root@nfs_samba ~]# vim /etc/sysconfig/selinux 
SELINUX=permissive
[root@nfs_samba ~]# setenforce 0
[root@nfs_samba ~]# yum install nfs-utils rpcbind samba //安裝nfs,samba相關軟件包
[root@nfs_samba ~]# yum install lvm2 -y     //安裝lvm2


3.3、nfs設置 -- 使用lvm,以方便mysql的數據目錄擴展

[root@nfs_samba ~]# fdisk /dev/sdb             //給/dev/sdb分區
[root@nfs_samba ~]# partx -a /dev/sdb          //讓內核重讀      
[root@nfs_samba ~]# pvcreate /dev/sdb1         //創建物理卷
[root@nfs_samba ~]# vgcreate vg_mysql /dev/sdb1     //創建卷組,並命名爲vg_mysql
  Volume group "vg_mysql" successfully created      
[root@nfs_samba ~]# lvcreate -L 30G -n lv_mysql vg_mysql   //創建邏輯卷,並命名爲lv_mysql
  Logical volume "lv_mysql" created

wKioL1YHS_eBYyr3AAM4RUExlvE748.jpg


wKioL1YHTN3gSaslAAEFkGIMrnU930.jpg


3.4、samba設置 -- 使用lvm,以方便共享目錄擴展

[root@nfs_samba ~]# fdisk /dev/sdc           //給/dev/sdc分區
[root@nfs_samba ~]# partx -a /dev/sdc        //讓內核重讀 
[root@nfs_samba ~]# pvcreate /dev/sdc1          //創建物理卷
  Physical volume "/dev/sdc1" successfully created       
[root@nfs_samba ~]# vgcreate vg_dz /dev/sdc1       //創建卷組,並命名爲vg_dz
  Volume group "vg_dz" successfully created
[root@nfs_samba ~]# lvcreate -L 10G -n lv_dz vg_dz     //創建邏輯卷,並命名爲lv_dz
  Logical volume "lv_dz" created

wKioL1YHTLfyDWK9AALGr5ihQgk711.jpg


wKioL1YHTRKAh29rAAEhvheLc7c885.jpg


3.5、將創建的邏輯分區格式化,並掛載至nfs和samba的共享目錄

[root@nfs_samba ~]# mkfs.ext4 /dev/vg_mysql/lv_mysql        //格式化lv_mysql
[root@nfs_samba ~]# blkid /dev/vg_mysql/lv_mysql    //查看lv_mysql的UUID
/dev/vg_mysql/lv_mysql: UUID="c085f81a-af72-4688-b9f0-08a59fc83ac7" TYPE="ext4" 
[root@nfs_samba ~]# mkdir /mysql_data               //建立nfs要使用的目錄

[root@nfs_samba ~]# mkfs.ext4 /dev/vg_dz/lv_dz        //格式化lv_dz
[root@nfs_samba ~]# blkid /dev/vg_dz/lv_dz            //查看lv_dz的UUID
/dev/vg_dz/lv_dz: UUID="854d5997-e2b6-48fb-b0d4-2e6d98e1055c" TYPE="ext4" 
[root@nfs_samba ~]# mkdir /discuz            //建立samba要共享的目錄
[root@nfs_samba ~]# vim /etc/fstab           //掛載

wKiom1YHTjmxNA2cAACpvoEKwoM357.jpg

wKiom1YHVBWDk577AAH0WMajtVM791.jpg


3.6、配置nfs,將mysql_data目錄作爲mysql的datadir使用

[root@nfs_samba ~]# vim /etc/exports       //設置nfs的共享資源
/mysql_data     192.168.1.13(sync,rw,no_root_squash)

[root@nfs_samba ~]# service rpcbind start
[root@nfs_samba ~]# service nfs start

[root@nfs_samba ~]# showmount -e 192.168.1.14    //查看nfs服務器的所有共享資源
Export list for 192.168.1.14:
/mysql_data 192.168.1.13


3.7、配置samba,將discuz論壇的相關文件放到discuz目錄下

wKioL1YHUGOjTt4_AAEcWzOwg-k476.jpg

[root@nfs_samba ~]# mv upload/* /discuz/      //將discuz解壓後的upload目錄下所有內容複製到samba的共享目錄中

[root@nfs_samba ~]# vim /etc/samba/smb.conf     //編輯samba的配置文件修改如下內容
security = share                     //安全設置爲share
 [discuz]
       comment = discuz
       path = /discuz
       public = yes
       readonly = no
       browseable = yes
       writable = yes
       guest ok = yes                   //使用來賓

    
[root@nfs_samba ~]# chkconfig nmb on
[root@nfs_samba ~]# chkconfig smb on
[root@nfs_samba ~]# service smb start
Starting SMB services:                                     [  OK  ]
[root@nfs_samba ~]# service nmb start
Starting NMB services:                                     [  OK  ]

[root@nfs_samba ~]# chmod -R 777 /discuz/         //修改discuz目錄權限
[root@nfs_samba discuz]# cp config/config_global_default.php config/config_global.php 
[root@nfs_samba discuz]#  mv config/config_ucenter_default.php config/config_ucenter.php


四、mysql服務器

4.1、準備工作

[root@localhost ~]# hostname mysql
[root@localhost ~]# vim /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=mysql

[root@mysql ~]# vim /etc/sysconfig/selinux 
SELINUX=permissive
[root@mysql ~]# setenforce 0

[root@mysql ~]# yum install -y nfs-utils rpcbind           //安裝nfs相關軟件包 
[root@mysql ~]# chkconfig nfs on
[root@mysql ~]# chkconfig rpcbind on
[root@mysql ~]# service rpcbind start           
[root@mysql ~]# service nfs start        //啓動
[root@mysql ~]# showmount -e 192.168.1.14
Export list for 192.168.1.14:
/mysql_data 192.168.1.13

[root@mysql ~]# mkdir -p /mydata         
[root@mysql ~]# mount -t nfs 192.168.1.14:/mysql_data /mydata    //測試
[root@mysql ~]# vim /etc/rc.local 
mount -t nfs 192.168.1.14:/mysql_data /mydata

wKioL1YHVLqAF3weAAJp5IxYokI683.jpg


4.2、安裝配置mysql   

[root@mysql ~]# groupadd -r mysql
[root@mysql ~]# useradd -r -g mysql -d /mydata/ -s /sbin/nologin mysql
[root@mysql ~]# tar xf mariadb-5.5.43-linux-x86_64.tar.gz -C /usr/local/
[root@mysql ~]# cd /usr/local/
[root@mysql local]# ln -sv mariadb-5.5.43-linux-x86_64 mysql
`mysql' -> `mariadb-5.5.43-linux-x86_64'
[root@mysql local]# cd mysql/
[root@mysql mysql]# chown root.mysql ./*

配置mysql
[root@mysql mysql]# scripts/mysql_install_db --user=mysql --datadir=/mydata/   //初始化
[root@mysql mysql]# cp support-files/my-large.cnf /etc/my.cnf    //提供配置文件
cp: overwrite `/etc/my.cnf'? y
[root@mysql mysql]# vim /etc/my.cnf
thread_concurrency = 4
datadir=/mydata
innodb_file_per_table=on
skip_name_resolve=on
[root@mysql mysql]# cp support-files/mysql.server /etc/rc.d/init.d/mysqld   //提供mysqld服務腳本
[root@mysql mysql]# chmod +x /etc/rc.d/init.d/mysqld
[root@mysql mysql]# chkconfig --add mysqld
[root@mysql mysql]# chkconfig mysqld on


導出mysql的二進制程序目錄
[root@mysql mysql]# vim /etc/profile.d/mysql.sh
export PATH=$PATH:/usr/local/mysql/bin
[root@mysql mysql]# . /etc/profile.d/mysql.sh

導出頭文件
[root@mysql ~]# ln -sv /usr/local/mysql/include /usr/local/include/mysql

導出庫文件
[root@mysql ~]# vim /etc/ld.so.conf.d/mysql-5.5.conf
/usr/local/mysql/lib/

導出man手冊 
[root@mysql ~]# vim /etc/man.config
MANPATH /usr/local/mysql/man


授權root用戶在'192.168.1.%'訪問mysql數據庫;
MariaDB [(none)]> grant all on *.* to 'root'@'192.168.1.%' identified by '123456';
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> flush privileges;
Query OK, 0 rows affected (0.02 sec)

wKiom1YHVcjDeCbbAAHtSCgHudo214.jpg


4.3、測試出現的問題:mysql設置了開機啓動,但是不能自動運行,因爲將mysql掛載datadir的命令放在了rc.local中執行,而rc.sysinit會先執行,因此就出現了mysql掛載不上datadir,啓動不了的情況出現,解決辦法  

wKioL1YHVrbyECA4AAOPhOlck8I361.jpg


五、web1服務器

5.1、準備工作

[root@localhost ~]# hostname web1
[root@localhost ~]# vim /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=web1

[root@web1 ~]# getenforce 
Enforcing
[root@web1 ~]# setenforce 0
[root@web1 ~]# vim /etc/sysconfig/selinux
SELINUX=permissive


5.2、安裝httpd-2.4.16;需先安裝新版的apr和apr-util

apr
[root@web1 ~]# tar xf apr-1.5.2.tar.bz2
[root@web1 ~]# cd apr-1.5.2
[root@web1 apr-1.5.2]# ./configure --prefix=/usr/local/apr
[root@web1 apr-1.5.2]# make && make install

apr-util
[root@web1 ~]# tar xf apr-util-1.5.4.tar.bz2 
[root@web1 ~]# cd apr-util-1.5.4
[root@web1 apr-util-1.5.4]# ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr/
[root@web1 apr-util-1.5.4]# make && make install

httpd -2.4.16

[root@web1 ~]# yum install pcre-devel 
[root@web1 ~]# cd httpd-2.4.16
[root@web1 httpd-2.4.16]# ./configure --prefix=/usr/local/apache --sysconfdir=/etc/httpd24 --enable-so --enable-cgi --enable-rewrite --enable-modules=most  --enable-mpms-shared=all --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --with-pcre --with-ssl --with-z --with-mpm=event 
[root@web1 httpd-2.4.16]# make && make install

[root@web1 ~]# vim /etc/httpd24/httpd.conf 
ServerName 192.168.1.11:80
[root@web1 ~]# vim /etc/init.d/httpd24              //提供apache服務腳本
[root@web1 ~]# chmod +x /etc/init.d/httpd24     
[root@web1 ~]# echo "web1.bengbengtu.com" > /usr/local/apache/htdocs/index.html //測試
[root@web1 ~]# chkconfig --add httpd24
[root@web1 ~]# chkconfig httpd24 on
[root@web1 ~]# service httpd24 start
Starting httpd:                                            [  OK  ]


wKiom1YHWW3DrrbiAABsw9L6ht8842.jpg


5.3、安裝php-5.6.13,以php-fpm方式結合apache工作

 
[root@web1 ~]# yum groupinstall -y "Development tools" "Server Platform Development"
[root@web1 ~]# yum localinstall libmcrypt-2.5.7-1.2.el6.rf.x86_64.rpm -y
[root@web1 ~]# yum localinstall libmcrypt-devel-2.5.7-1.2.el6.rf.x86_64.rpm -y
[root@web1 ~]# yum -y install bzip2-devel libxml2-devel   

[root@web1 ~]# yum install xz -y
[root@web1 ~]# xz -d php-5.6.13.tar.xz 
[root@web1 ~]# tar xf php-5.6.13.tar 
[root@web1 ~]# cd php-5.6.13
[root@web1 php-5.6.13]# mkdir /etc/php{,.d}
[root@web1 php-5.6.13]#  ./configure --prefix=/usr/local/php --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  --with-config-file-path=/etc/php --with-config-file-scan-dir=/etc/php.d --with-bz2 --with-mysql=mysqlnd --with-pdo-mysql=mysqlnd --with-mysqli=mysqlnd
[root@web1 php-5.6.13]# make -j 4
[root@web1 php-5.6.13]# make install


爲php-fpm提供配置文件:
# cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf 

編輯php-fpm的配置文件:
# vim /usr/local/php/etc/php-fpm.conf

配置fpm的相關選項爲你所需要的值,並啓用pid文件(如下最後一行):
listen = 192.168.1.11:9000
pm.max_children = 50
pm.start_servers = 5
pm.min_spare_servers = 2
pm.max_spare_servers = 5
pid = /usr/local/php/var/run/php-fpm.pid


[root@web1 php-5.6.13]# cp php.ini-production /etc/php/php.ini
[root@web1 php-5.6.13]# cp sapi/fpm/init.d.php-fpm /etc/rc.d/init.d/php-fpm  //提供php-fpm服務腳本 
接下來就可以啓動php-fpm了:
# service php-fpm start

配置httpd-2.4
1、啓用httpd的相關模塊
在Apache httpd 2.4以後已經專門有一個模塊針對FastCGI的實現,此模塊爲mod_proxy_fcgi.so,它其實是作爲mod_proxy.so模塊的擴充,因此,這兩個模塊都要加載
 # vim /etc/httpd24/httpd.conf
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so

2、添加如下二行
   AddType application/x-httpd-php  .php
   AddType application/x-httpd-php-source  .phps

3、定位至DirectoryIndex index.html 
   修改爲:
    DirectoryIndex  index.php  index.html

4、配置支持使用fcgi
ProxyRequests Off      //關閉正向代理
ProxyPassMatch ^/(.*\.php)$ fcgi://192.168.1.11:9000/usr/local/apache/htdocs/$1
//把以.php結尾的文件請求發送到php-fpm進程,php-fpm至少需要知道運行的目錄和URI,所以這裏直接在fcgi://192.168.1.11:9000後指明瞭這兩個參數,其它的參數的傳遞已經被mod_proxy_fcgi.so進行了封裝,不需要手動指定。


5.4、安裝xcache爲php加速

[root@web1 ~]# tar xf xcache-3.2.0.tar.gz 
[root@web1 ~]# cd xcache-3.2.0   
[root@web1 xcache-3.2.0]# /usr/local/php/bin/phpize 
Configuring for:
PHP Api Version:         20131106
Zend Module Api No:      20131226
Zend Extension Api No:   220131226
[root@web1 xcache-3.2.0]# ./configure --enable-xcache --with-php-config=/usr/local/php/bin/php-config
[root@web1 xcache-3.2.0]#make && make install
[[email protected]]# cp xcache.ini /etc/php.d/
[root@web1 xcache-3.2.0]# vim /etc/php.d/xcache.ini

wKioL1YHW07S4HlWAAEim_1k5NA031.jpg

5.5、測試php,mysql,xcache是否正常工作

wKiom1YHWmyAl_qFAADCPvmim4Y752.jpg

wKioL1YHWlLBPrDVAAOFu83q5Ds820.jpg


5.6、安裝discuz

將discuz目錄關聯至httpd的url中

samba共享目錄discuz至/usr/local/apache/htdocs/dz

[root@web1 ~]# mkdir /usr/local/apache/htdocs/dz
[root@web1 ~]# yum install cifs-utils
[root@web1 ~]# mount -t cifs //192.168.1.14/discuz /usr/local/apache/htdocs/dz -o guest#掛載discuz目錄

安裝discuz過程如下

wKiom1YHW_qQqXhqAAT3JYn-lUQ184.jpg

wKiom1YHW_zQiDGPAAODB0G1B_o009.jpg

wKioL1YHXAaChLQoAAJiBCa7MjQ580.jpg

wKiom1YHXADQE8oRAAL9uIgjVTU301.jpg

wKioL1YHXAuz-S59AAPg3TM2HTc329.jpg

wKioL1YHXBjAuReMAAVrwWREbas104.jpg

wKiom1YHXIagNDG2AARu9JWqX9M647.jpg

discuz論壇測試完成!!


六、web2的安裝過程同web1,接下來測試web1和web2是否能夠正常解析www.bengbengtu.com,有1個服務器出現問題,另一個服務器還可以正常工作!

1、停掉web1服務器(192.168.1.11)的httpd服務,截圖

wKiom1YHXSryM3YYAAXFfGU75DY309.jpg


2、啓動web1服務器的httpd服務,截圖

wKiom1YHXXqiP6OAAAXU29hbOpo137.jpg

至此,LAMP+nfs+Samba實現discuz論壇的功能已實現!!



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