rwrr322 发表于 2015-5-18 08:59:55

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.com172.16.13.1

DB服务器localhost172.16.13.12

NFS服务器localhost172.16.13.13

WebServer1www.wuhf.com172.16.13.10

WebServer2www.wuhf.com172.16.13.11

    2、搭建DNS服务器,添加两条A记录
www         IN    A      172.16.13.10www         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.9php-5.4.40
       DocumentRoot "/var/www/a.com"
    5、搭建webserver2      
       编译安装httpd-2.4.9php-5.4.40       DocumentRoot "/var/www/a.com"    6、搭建DBServer

       编译安装MariaDB
       创建远程连接账号

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




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

1
2
3
4
5
      # 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
2
3
   1hostname ns1.wuhf.com
   2vim /etc/sysconfig/network
   3vim /etc/hosts




    (2)安装配置DNS

1
2
   77yum install bind -y
   78vim /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";
1
79vim /etc/named.rfc1912.zones




zone "wuhf.com" IN {
         type master;
         file "wuhf.com.zone";
};

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




$TTL 1200
$ORIGIN wuhf.com.
@       IN SOAns1.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.

1
   83service named start




   (3)检测DNS配置文件

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




   (4)测试DNS解析
1
2
100dig -t A www.wuhf.com @172.16.13.1
101dig -t A ns1.wuhf.com @172.16.13.1





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

    因为centos6使用的内核中自带NFS模块,所以直接启用就可以了
    如果没有则需要安装
1
2
3
4
   # yum install nfs-utils
   # service nfs start
   # rpcinfo -p          //查看nfs服务是不是开启成功
   # vim /etc/exports    //添加需要共享的挂载点,设置规则可读写,挤压root用户




/mnt   172.16.0.0/16(rw,no_root_squash)

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




4、搭建webserver1

    (1)提供编译开发环境
1
    # yum groupinstall "Development tools" "Desktop Platform Development" "Server Platform Development"





1
2
3
    # yum install pcre-devel      //安装依赖的包
    # yum install bzip2-devel
    # yum install libmcrypt-devel




    (2)解决依赖关系    准备需要编译的压缩包:
1
2
3
4
    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




    提前解压缩
1
2
3
4
   25tar xf httpd-2.4.9.tar.bz2
   26tar xf apr-1.5.0.tar.bz2
   27tar xf apr-util-1.5.3.tar.bz2
   28tar xf php-5.4.40.tar.bz2




    编译apr
1
2
3
4
   31cd apr-1.5.0
   32ls
   33./configure --prefix=/usr/local/apr
   34make && make install




    编译apr-util
1
2
3
4
   42cd apr-util-1.5.3
   43ls
   44./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr/
   45make && make install




   (3) 编译httpd-2.4.9并配置
1
2
3
4
5
   50cd httpd-2.4.9
   51ls
   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   
   53make && make install




    创建网页存放目录,并在配置文件中将默认目录修改为此目录
1
2
    # mkdir -pv /var/www/a.com
    # vim /var/www/a.com/index.php   //创建测试主页,添加如下测试代码





1
2
3
4
<h1>::this is a test page::</h1>
    <?php
         phpinfo();
    ?>





1
    # vim /etc/httpd24/httpd.conf    //在配置文件里修改目录如下





1
2
    DocumentRoot "/var/www/a.com"   //我没有使用虚拟主机模式,所以需要在此处修改目录
    <Directory "/var/www/a.com">





1
2
3
4
    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那么就需要自己手动编写一个完整的脚本
1
2
   65cp /etc/rc.d/init.d/httpd /etc/rc.d/init.d/httpd24
   66vim /etc/rc.d/init.d/httpd24      //修改一些内容以便适应新版本2.4.9





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




    (4)编译并配置php-5.4.40
1
2
3
   80cd 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
1
2
3
4
   84make && make install
   85export PATH=/usr/local/php5/bin:$PATH
   86cp php.ini-production /etc/php.ini
   88service httpd24 restart




   (5)测试httpd+php5、搭建webserver2(172.16.13.11)

    所有步骤与webserver1相同

6、编译并配置mysql(172.16.13.12)

    我们这里使用MariaDB代替mysqlDB,是一样的。    使用二进制格式包:mariadb-5.5.43-linux-x86_64.tar.gz    (1)创建逻辑空间
1
2
3
4
5
6
7
8
9
   21fdisk /dev/sda            //创建一个20G的逻辑分区sda5
   22partx -a /dev/sda         //重读分区
   23pvcreate /dev/sda5          //创建pv
   25vgcreate myvg /dev/sda5   //创建vg
   26lvcreate -L 10G -n mydata myvg    //创建大小为10G的逻辑空间mydata
   27mke2fs -t ext4 /dev/myvg/mydata    //给mydata格式化文件系统
   28vim /etc/fstab                //实现mydata开机自动挂载
   29mkdir /data
   30mount /dev/myvg/mydata /data       //挂载mydata至/data目录




    (2)新建系统用户mysql,实现以安全方式运行进程
1
2
3
4
   33groupadd -r -g 306 mysql
   34useradd -r -g 306 -u 306 -M -d /data/mydata -s /sbin/nologin mysql
   35mkdir -pv /data/mydata
   40chown mysql:mysql /data/mydata




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






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






   (5)配置mysql的服务脚本

1
2
3
4
5
6
7
8
9
   67cp support-files/mysql.server /etc/rc.d/init.d/mysqld
   69chmod +x /etc/rc.d/init.d/mysqld
   74chkconfig --add mysqld
   75chkconfig --list mysqld
   76vim /etc/profile.d/mysql.sh         //添加如下内容
       export PATH=/usr/lcoal/mysql/bin:$PATH
   77. /etc/profile.d/mysql.sh
   78service mysqld start         //开启mysql
   79ss -tnl                        //查看对应的3306端口是否启动





1
2
3
4
   80ln -sv /usr/local/mysql/include /usr/include/mysql
   81echo '/usr/local/mysql/lib' > /etc/lnf
   82vim /etc/man.config
       MANPATH /usr/local/mysql/man




    (6)测试mysql


1
2
3
4
5
6
   # 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;      //查看有哪些用户




    创建一个远程管理账号
1
    mysql> GRANT ALL PRIVILEGES ON   *.* TO 'wuhf'@'%' IDENTIFIED by '123456';





1
2
3
4
5
6
7
8
9
10
11
12
13
    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
1
2
3
4
5
6
7
8
9
10
11
12
   # 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)解压并复制
1
2
3
4
5
6
7
8
9
10
11
12
13
   88unzip Discuz_X3.2_SC_UTF8.zip
   89ls
   90cp -a upload/* /mnt/
   91cd /mnt
   92ls
   94cd config/
   96cp config_global_default.php config_global.php
   97cp config_ucenter_default.php config_ucenter.php
   99chmod -R o+rw config/
100chmod -R o+rw data/
101chmod -R o+rw uc_client/
102chmod -R o+rw uc_server/
104exportfs -ra




    (2)挂载webserver至NFS系统    分别在webserver1和webserver2上实现挂载:
1
2
3
4
5
   94showmount -e 172.16.13.13             //查看挂载点
   95mount -t nfs 172.16.13.13:/mnt /var/www/a.com      //立即挂载
   96vim /etc/fstab            //开机自动挂载,_netdev表示没有检测到挂载点就放弃挂载
   172.16.13.13:/mnt       /var/www/a.com          nfs   defaults,_netdev 0 0
   97service 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扩展连接数据库。    此项目花了我一天时间,也是醉了......
页: [1]
查看完整版本: LAMP+DNS+NFS搭建discuz论坛项目