基于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

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




你可能感兴趣的:(lamp,discuz,nfs,NFS数据共享)