基于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; };  //监听的端口与主机IPdirectory      "/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.1ns2             IN      A       172.16.99.2www             IN      A       172.16.99.1www             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 = 5pm.min_spare_servers = 2pm.max_spare_servers = 8pid = /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.comServerAlias www.zkchang.comErrorLog "/var/log/dz_error_log"CustomLog "/var/log/dz_access_log" commonProxyRequests offProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/web/dz/$1<Directory "/web/dz/">Options NoneAllowoverride NoneRequire all deniedRequire ip 172.16.0.0/16</Directory></VirtualHost>

4.创建目录,进行测试:

                # mkdir -pv /web/dz                # vim index.php<?phpecho "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 mysqlmysql: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";elseecho "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

发现论坛中有新帖出现,且有附件。说明数据同步成功!!