LAMP+DNS+NFS搭建discuz论坛项目

一、项目目的

两台web服务器,共享关系型数据库,共享NFS服务器,利用DNS记录轮询提供负载均衡;

搭建论坛www.wuhf.com



二、项目设计

  • DNSServer,DBServer,NFSServer,WebServer1;WebServer2;搭建5个虚拟机
  • 域名wuhf.com,通过本地DNS解析到内网两台web服务器,实现轮询负载均衡;
  • 在两台web服务器上搭建discuz论坛;
  • 使用MariaDB存放结构化数据
  • 使用NFS服务器存放非结构化数据



三、项目计划

1、网络架构实现

主机名 网址
DNS服务器 ns1.wuhf.com 172.16.13.1
DB服务器 localhost 172.16.13.12
NFS服务器 localhost 172.16.13.13
WebServer1 www.wuhf.com 172.16.13.10
WebServer2 www.wuhf.com 172.16.13.11

2、搭建DNS服务器,添加两条A记录

www         IN    A      172.16.13.10

www         IN    A      172.16.13.11

3、搭建NFS服务器,提供共享文件系统

编辑# vim /etc/exports

添加/mnt   172.16.0.0/16(rw,no_root_squash)

执行# exportfs -ra

4、搭建webserver1

编译安装httpd-2.4.9  php-5.4.40

DocumentRoot "/var/www/a.com"

5、搭建webserver2

编译安装httpd-2.4.9  php-5.4.40

DocumentRoot "/var/www/a.com"

6、搭建DBServer

编译安装MariaDB

创建远程连接账号

mysql> grant all privileges on *.* to ‘wuhf‘@‘%‘ identified by ‘123456‘;

7、安装discuz

在NFS虚拟机上,将安装包解压至/mnt

        # cp -a ./uoload/* /mnt/
        # chmod -R o+rw ./config
        # chmod -R o+rw ./data
        # chmod -R o+rw ./un_server
        # chmod -R o+rw ./un_client

8、测试

将windows默认DNS指向172.16.13.1

输入域名www.wuhf.com

分别输入172.16.13.10、172.16.13.11测试



四、项目实施

1.网络架构实现



2.搭建DNS服务器

(1)修改主机名

   1  hostname ns1.wuhf.com
   2  vim /etc/sysconfig/network
   3  vim /etc/hosts

(2)安装配置DNS

   77  yum install bind -y
   78  vim /etc/named.conf

options {

listen-on port 53 { 172.16.13.1; };

directory       "/var/named";

allow-query     { any; };

recursion yes;

forward first;

forwarders { 172.16.0.1; };

};

include "/etc/named.rfc1912.zones";

  79  vim /etc/named.rfc1912.zones

zone "wuhf.com" IN {

type master;

file "wuhf.com.zone";

};

 80  vim /var/named/wuhf.com.zone

$TTL 1200

$ORIGIN wuhf.com.

@       IN SOA  ns1.wuhf.com. admin.wuhf.com. (

2015051601      ; serial

1D      ; refresh

1H      ; retry

1W      ; expire

3H )    ; minimum

@       IN      NS      ns1.wuhf.com.

ns1     IN      A       172.16.13.1

www     IN      A       172.16.13.10

www     IN      A       172.16.13.11

blog    IN      CNAME   www.wuhf.com.

   83  service named start

(3)检测DNS配置文件

   95  named-checkconf
   96  named-checkzone "wuhf.com" /var/named/wuhf.com.zone

(4)测试DNS解析

  100  dig -t A www.wuhf.com @172.16.13.1
  101  dig -t A ns1.wuhf.com @172.16.13.1



3、搭建NFS服务器,提供NFS文件系统

因为centos6使用的内核中自带NFS模块,所以直接启用就可以了

如果没有则需要安装

     # yum install nfs-utils
     # service nfs start
     # rpcinfo -p          //查看nfs服务是不是开启成功
     # vim /etc/exports    //添加需要共享的挂载点,设置规则可读写,挤压root用户

/mnt     172.16.0.0/16(rw,no_root_squash)

     # exportfs -ra                //同步一下
     # showmount -e 172.16.13.13  //查看172.16.13.13上共享的挂载点


4、搭建webserver1

(1)提供编译开发环境

    # yum groupinstall "Development tools" "Desktop Platform Development" "Server Platform Development"
    # yum install pcre-devel      //安装依赖的包
    # yum install bzip2-devel
    # yum install libmcrypt-devel

(2)解决依赖关系

准备需要编译的压缩包:

    apr-1.5.0.tar.bz2;
    apr-util-1.5.3.tar.bz2;
    httpd-2.4.9.tar.bz2;
    php-5.4.40.tar.bz2

提前解压缩

   25  tar xf httpd-2.4.9.tar.bz2
   26  tar xf apr-1.5.0.tar.bz2 
   27  tar xf apr-util-1.5.3.tar.bz2 
   28  tar xf php-5.4.40.tar.bz2

编译apr

   31  cd apr-1.5.0
   32  ls
   33  ./configure --prefix=/usr/local/apr
   34  make && make install

编译apr-util

   42  cd apr-util-1.5.3
   43  ls
   44  ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr/
   45  make && make install

(3) 编译httpd-2.4.9并配置

   50  cd httpd-2.4.9
   51  ls
   52   ./configure --prefix=/usr/local/apache --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   
   53  make && make install

创建网页存放目录,并在配置文件中将默认目录修改为此目录

    # mkdir -pv /var/www/a.com
    # vim /var/www/a.com/index.php     //创建测试主页,添加如下测试代码
  <h1>::this is a test page::</h1>
    <?php
         phpinfo();
    ?>
    # vim /etc/httpd24/httpd.conf    //在配置文件里修改目录如下
    DocumentRoot "/var/www/a.com"     //我没有使用虚拟主机模式,所以需要在此处修改目录
    <Directory "/var/www/a.com">
    PidFile "/var/run/httpd.pid"       //添加pidfile读取路径
    AddType application/x-httpd-php  .php        //添加对php格式的支持
    AddType application/x-httpd-php-source  .phps
    DirectoryIndex index.php index.html    //定位至DirectoryIndex添加index.php,支持php主页

提供SysV风格脚本服务

因为系统自带的httpd2.2有服务脚本文件httpd,所有我们只要复制过来稍作修改就可用了,如果系统内没有安装过httpd-2.2那么就需要自己手动编写一个完整的脚本

   65  cp /etc/rc.d/init.d/httpd /etc/rc.d/init.d/httpd24
   66  vim /etc/rc.d/init.d/httpd24      //修改一些内容以便适应新版本2.4.9

   67  chmod +x httpd24                 //给脚本添加执行权限
   68  chkconfig --add httpd24          //添加脚本到开机检测项
   69  chkconfig --level 35 httpd24 on    //在3和5等级开机时,启动httpd24
   70  chkconfig --list httpd24           //查看开机项有没有成功设定
   71  vim /etc/profile.d/httpdsh          //新建一个开机执行脚本,脚本里添加httpd24的执行路径
       export PATH=/usr/local/apache/bin:$PATH
   72  . /etc/profile.d/httpdsh        //执行一下此脚本,实现立即生效
   73  ln -sv /usr/local/apache/include/ /usr/include/httpd    //设置头文件软连接路径
   74  service httpd24 start
   75  ss -tnl       //查看80端口是否成功开启

(4)编译并配置php-5.4.40

   80  cd php-5.4.40
   83  ./configure --prefix=/usr/local/php5 --with-mysql=mysqlnd --with-openssl --with
-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --enable-mbstring --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml  --enable-sockets --with-apxs2=/usr/local/apache/bin/apxs --with-mcrypt  --with-config-file-path=/etc --with-config-file-scan-dir=/etc/php.d --with-bz2  --enable-maintainer-zts

//因为php需要远程连结mysql,所以编译时启用了

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

   84  make && make install
   85  export PATH=/usr/local/php5/bin:$PATH
   86  cp php.ini-production /etc/php.ini
   88  service httpd24 restart

(5)测试httpd+php



5、搭建webserver2(172.16.13.11)

所有步骤与webserver1相同



6、编译并配置mysql(172.16.13.12)

我们这里使用MariaDB代替mysqlDB,是一样的。

使用二进制格式包:mariadb-5.5.43-linux-x86_64.tar.gz

(1)创建逻辑空间

   21  fdisk /dev/sda              //创建一个20G的逻辑分区sda5
   22  partx -a /dev/sda           //重读分区
   23  pvcreate /dev/sda5          //创建pv
   25  vgcreate myvg /dev/sda5     //创建vg
   26  lvcreate -L 10G -n mydata myvg    //创建大小为10G的逻辑空间mydata
   27  mke2fs -t ext4 /dev/myvg/mydata    //给mydata格式化文件系统
   28  vim /etc/fstab                //实现mydata开机自动挂载
   29  mkdir /data
   30  mount /dev/myvg/mydata /data       //挂载mydata至/data目录

(2)新建系统用户mysql,实现以安全方式运行进程

   33  groupadd -r -g 306 mysql
   34  useradd -r -g 306 -u 306 -M -d /data/mydata -s /sbin/nologin mysql
   35  mkdir -pv /data/mydata
   40  chown mysql:mysql /data/mydata

(3)解压安装mariadb

   45  tar xf mariadb-5.5.43-linux-x86_64.tar.gz -C /usr/local
   46  cd /usr/local
   47  ln -sv mariadb-5.5.43-linux-x86_64/ mysql    //给mariadb目录创建软连接mysql
   48  chown -R mysql:mysql mysql/*
   60  mkdir /etc/mysql                          //创建配置文件目录
   61  cp /usr/local/mysql/support-files/my-large.cnf /etc/mysql/my.cnf  //复制一份配置文件
   62  vim /etc/mysql/my.cnf        //添加以下内容

  65  scripts/mysql_install_db --user=mysql --datadir=/data/mydata/   //执行初始化脚本

(5)配置mysql的服务脚本

   67  cp support-files/mysql.server /etc/rc.d/init.d/mysqld
   69  chmod +x /etc/rc.d/init.d/mysqld
   74  chkconfig --add mysqld
   75  chkconfig --list mysqld
   76  vim /etc/profile.d/mysql.sh         //添加如下内容
       export PATH=/usr/lcoal/mysql/bin:$PATH
   77  . /etc/profile.d/mysql.sh
   78  service mysqld start           //开启mysql
   79  ss -tnl                        //查看对应的3306端口是否启动
   80  ln -sv /usr/local/mysql/include /usr/include/mysql
   81  echo ‘/usr/local/mysql/lib‘ > /etc/lnf
   82  vim /etc/man.config
       MANPATH /usr/local/mysql/man

(6)测试mysql

   # mysql                     //使用默认用户root进入mysql
    > set password for ‘root‘@‘127.0.0.1‘ = password (‘123456‘)    //修改默认用户密码
    >\q
    # mysql -uroot -h127.0.0.1 -p123456             //使用密码登录
    > use mysql
    mysql> select host,user,password from user;      //查看有哪些用户

创建一个远程管理账号

    mysql> GRANT ALL PRIVILEGES ON   *.* TO ‘wuhf‘@‘%‘ IDENTIFIED by ‘123456‘;
    mysql> flush privileges;          //刷新数据库
    mysql> select host,user,password from user;
+-----------------------+------+-------------------------------------------+
| host                  | user | password                                  |
+-----------------------+------+-------------------------------------------+
| localhost             | root | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
| localhost.localdomain | root |                                           |
| 127.0.0.1             | root |                                           |
| ::1                   | root |                                           |
| localhost             |      |                                           |
| localhost.localdomain |      |                                           |
| %                     | wuhf | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
+-----------------------+------+-------------------------------------------+

(7)测试php+mysql

   # vim /var/www/a.com/index.php        //编辑172.16.13.10的主页文件,添加测试代码
   <h1>It works!</h1>
   <?php
  $link = mysql_connect(‘172.16.13.12‘,‘wuhf‘,‘123456‘);
        if ($link)
                echo "Success......!";
        else
                echo "Failure......!";
        mysql_close();
        phpinfo();
?>
    # service httpd24 reload



7、安装discuz(172.16.13.13)

准备安装包:Discuz_X3.2_SC_UTF8.zip

(1)解压并复制

   88  unzip Discuz_X3.2_SC_UTF8.zip 
   89  ls
   90  cp -a upload/* /mnt/
   91  cd /mnt
   92  ls
   94  cd config/
   96  cp config_global_default.php config_global.php 
   97  cp config_ucenter_default.php config_ucenter.php 
   99  chmod -R o+rw config/
  100  chmod -R o+rw data/
  101  chmod -R o+rw uc_client/
  102  chmod -R o+rw uc_server/
  104  exportfs -ra

(2)挂载webserver至NFS系统

分别在webserver1和webserver2上实现挂载:

   94  showmount -e 172.16.13.13             //查看挂载点
   95  mount -t nfs 172.16.13.13:/mnt /var/www/a.com      //立即挂载
   96  vim /etc/fstab              //开机自动挂载,_netdev表示没有检测到挂载点就放弃挂载
   172.16.13.13:/mnt       /var/www/a.com          nfs     defaults,_netdev 0 0
   97  service httpd24 reload

(3)在windows浏览器中输入172.16.13.10/install安装过程就不写了,注意填写数据库的时候写上远程连接账户wuhf和密码123456



8、测试

将windows上的默认DNS记录修改为172.16.13.1

测试域名解析:在浏览器中输入www.wuhf.com进入自己的论坛

在浏览器上输入172.16.13.10,登录论坛后发表一个带图片的帖子;

在浏览器上输入172.16.13.11,查看帖子是不是存在,能不能同步显示;

我在这里测试是成功的,不演示了。



五、项目总结

这钟组合DNS+LAMP+NFS是有很大限制的,虽然能够简单搭建小公司的小网站,但是如果访问量过大的话就会出现很多问提,所以现在流行的是LAMP+分布式存储。不过每个公司都是从小到大一步一步成长的,所以小公司为了节省成本,使用这个组合也未尝不可。

这此项目我是将php编译成apache的模块实现的,所以没有用到反向代理,也没有用到php加速技术。

需要特别注意的地方就是数据库的远程连接,可能需要使用php扩展,添加PDO-mysql的扩展,在以后的博客中会讲pdo扩展,这是一个新技术,现在php新发布的版本中都默认使用pdo扩展连接数据库。

此项目花了我一天时间,也是醉了......

时间: 2024-08-06 17:27:50

LAMP+DNS+NFS搭建discuz论坛项目的相关文章

在LAMP平台中搭建Discuz!论坛

在LAMP平台中搭建Discuz!论坛  准备工作 操作系统:linux Redhat6.5 相关软件包:链接:https://pan.baidu.com/s/1epkmsK9S9FQpO7jKJwsvrQ 密码:fmhr Discuz!论坛安装步骤 1. 输入mysql命令进入mysql数据库并进行创建 mysql mysql>CREATE DATABASE bbs;    #创建一个数据库 mysql>GRANT all ON bbs.* TO 'bbsuser'@'%' IDENTIFI

在LAMP环境下搭建Discuz论坛网站

作为一名Linux菜鸟学员,我在搭建好LAMP环境后,闲来无聊,尝试建站,因此选择Discuz论坛站点.在搭建站点时,首先下载Discuz套件,1.wgethttp://download.comsenz.com/DiscuzX/3.1/Discuz_X3.1_TC_UTF8.zip 2.unzip Discuz_X3.1_TC_UTF8.zip将压缩文件解压,解压后得到一个upload文件. 3.cp -r ./upload /var/www/html 4.service httpd start

在lamp架构下搭建discuz论坛

成功在虚拟机中建立一个discuz论坛需要多个软件支持的,主要包括apache.MySQL.PHP.这几个软件的安装在我以前的文章中有过介绍,可以到我之前的文章中去了解 编译安装apache 编译安装MySQL数据库 编译安装PHP 搭建前准备 一台Linux虚拟机(Red Hat Enterprise 6.5) 安装好apache.MySQL.PHP等支持软件 准备discuz软件包 开始搭建论坛 进入MySQL数据库,创建名为BBS的数据库 CREATE DATABASE bbs; 把bbs

LAMP架构,搭建discuz论坛

一丶准备好基础环境1.配置好yum源并挂载2.关闭防火墙并配置本地域名二丶安装软件包PS:此处有提示没有php-devel包,可以继续安装,因为有其他包代替了三丶启动服务并查看状态PS:为了防止安装失败可以使用:systemctl restart httpd & & systemctl restart mariadb 前面安装失败时后面不会安装.四丶测试服务1.将welcome.conf移除2.编写index.php3.打开网页五丶先将之前编写的index.php移除上传discuz论坛包

LAMP环境下搭建discuz论坛

Discuz!是一套通用的社区论坛软件系统,用户可以在不需要任何编程的基础上,通过简单的设置和安装,在互联网上搭建起具备完善功能.很强负载能力和可高度定制的论坛服务.Discuz! 的基础架构采用世界上最流行的web编程组合PHP+MySQL实现,是一个经过完善设计,适用于各种服务器环境的高效论坛系统解决方案. 1.下载discuz!安装包 创建www目录存放discuz安装文件 [[email protected] src]# mkdir /data/www [[email protected

基于NDS+NFS+LAMP搭建discuz论坛

本节我们来看看如何基于一个DNS+NFS+LAMP平台来搭建一个discuz论坛.由于DNS以及LAMP前面几节中的我们以及讲过,所以这边我们就简单以相关配置为主,至于编译安装请参看前面几节的内容.好了,话不多说,下面我们就开始吧. 实验环境拓扑:两台web服务器,共享关系型数据库,共享NFS服务器,利用DNS记录轮询提供负载均衡. 这边解释一下: DNS服务器以及2个Apache服务器我都放在同一台机器上以虚拟主机的形式实现. 如下图: DNS服务器的配置 直接安装: [[email prot

LAMP架构搭建+Discuz论坛搭建【weber出品必属精品】

一.     本机简介: 本机系统: CentOS-6.4-x86_64 主机名:oracle.ywb IP地址:192.168.146.129 二.     在Linux环境下安装Apache步骤 首先将准备好的文件通过PSCP发送至Linux的/Root/test/soft目录下 在windows下按住Ctrl+R,打开运行,输入CMD进入DOS命令行.在dos命令行中使用pscp –scp  命令将要上传的文件上传至Linux中. 上传成功后.我们总共要安装四个文件.第一个我们首先解压:a

NFS实现(双httpd + php-fpm + nfs + mysql 搭建discuz论坛)的方法

NFS相关介绍 一.NFS简介 1. NFS(Network File System):NFS是一个文件共享协议, 也是是在类Unix系统中在内核中实现的文件系统. 2. 起源:最早是由SUN公司研发,非常古老,只是实现文件共享,安全控制方面比较简陋. 版本有, NFSv1, NFSv2,NFSv3,NFSv4. v4版开始支持kerberos 认证. 3. RPC(Remote Procedure Call):NFS协议是基于PRC(远程过程调用)实现的. 基本过程如下图,客户端某程序发起过程

采用lamp架构搭建discuz论坛

lamp简介 LAMP指的Linux(操作系统).ApacheHTTP 服务器,MySQL(有时也指MariaDB,数据库软件) 和PHP(有时也是指Perl或Python) 的第一个字母,一般用来建立web 服务器. Linux+Apache+Mysql/MariaDB+Perl/PHP/Python一组常用来搭建动态网站或者服务器的开源软件 下面给大家讲解一个lamp结构论坛的案例 1.安装所需软件包 [[email protected] ~]# yum install httpd mysq