LAMP+NFS实现多个Web服务器静态资源统一存储

1.前端需支持更大的访问量,单台Web服务器已无法满足需求了,则需扩容Web服务器;

2.虽然动态内容可交由后端的PHP服务器执行,但静态页面还需要Web服务器自己解析,那是否意味着多台Web服务器都需要在各自的系统中都存有一份静态页面数据呢?

其实这样也不是不可以,毕竟文件本地访问,速度还是有优势的,但这却涉及到多台Web服务器间内容的一致性问题,这种问题也不可避免;

那么如果能将静态页面集中存放,所有Web服务器都来集中地取文件,对于文件的一致性就有了保障,这个集中地就叫做“文件共享服务器”;

文件共享有多种方式,FTP,NFS,Samba等,而其中NFS作为网络文件系统,允许一个系统通过网络共享目录和文件,通过使用NFS,用户和程序可以像访问本地文件一样访问远端系统上的文件,这种近似访问本地文件系统的架构貌似很符合我们的需求,我们现在就来实现这个需求!

需求实现:

1.web1充当http服务器和DNS解析服务器,客户端到web1和web2的请求,如果是静态资源请求通过php主机的NFS服务挂载的存储返回结果

2.web1和web2对于客户端动态资源请求都反向代理到后端php服务器进行执行后返回结果

3.web1和web2实现DNS轮询,客户端访问博客网站是负载均衡的。

4.建立wordpress博客

5.数据库存储wordpress博客的各种数据

实验架构:

wKioL1Sb9s2xNKs0AALaFr8q1Zg463.jpg

Ubuntu 14.04 配置 LAMP+phpMyAdmin PHP(5.5.9)开发环境 

Windows 7下硬盘安装Ubuntu 14.10图文教程

U盘安装Ubuntu 14.10

Ubuntu 14.10 正式发布下载

Ubuntu 14.04 LTS 如何升级到 Ubuntu 14.10 

Ubuntu 14.10 下安装 LAMP 服务图文详解 

部署实现

一.DNS服务器在web1上的实现

开发环境配置

1

 

# yum –y groupinstall Development Tools

 

配置DNS服务器:

安装DNS服务器软件bind

1

 

#yum –y install bind

 

配置DNS主配置文件:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

 

# vim /etc/named.conf

//

//named.conf

//

//Provided by Red Hat bind package to configure the ISC BIND named(8) DNS

// serveras a caching only nameserver (as a localhost DNS resolver only).

//

// See/usr/share/doc/bind*/sample/ for example named configuration files.

//

  

options {

//      listen-on port 53 { 127.0.0.1; };

//      listen-on-v6 port 53 { ::1; };

        directory       "/var/named";

        dump-file      "/var/named/data/cache_dump.db";

        statistics-file"/var/named/data/named_stats.txt";

        memstatistics-file"/var/named/data/named_mem_stats.txt";

//      allow-query     { localhost; };

        recursion yes;

  

//      dnssec-enable yes;

//      dnssec-validation yes;

//      dnssec-lookaside auto;

  

        /* Path to ISC DLV key */

        /*bindkeys-file"/etc/named.iscdlv.key";

  

        managed-keys-directory"/var/named/dynamic";

        */

};

  

logging {

        channel default_debug {

                file"data/named.run";

                severity dynamic;

        };

};

  

zone"." IN {

        type hint;

        file "named.ca";

};

  

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

include "/etc/named.root.key";

 

配置主区域文件:只是在文件尾部添加正向区域

1

2

3

4

5

 

# vim /etc/named.rfc1912.zones

zone"stu31.com" IN {

        type master;

        file "stu31.com.zone";

};

 

配置正向区域解析库文件:

这里让客户端查询http服务器时能轮换查询到两台web服务器。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

 

# vim/var/named/stu31.com.zone

$TTL 600

$ORIGINstu31.com.

@       IN     SOA     ns.stu31.com.   root.stu31.com. (

                        2014122301

                        1H

                        3M

                        5D

                        6H )

@       IN     NS      ns

        IN     MX  5   mail

ns      IN     A       172.16.31.30

www     IN     A       172.16.31.30

www     IN     A       172.16.31.31

mail    IN      A      172.16.31.30

 

配置文件语法检查:

1

2

3

 

#named-checkzone  stu31.com /var/named/stu31.com.zone 

zonestu31.com/IN: loaded serial 2014122301

OK

 

启动DNS服务:

1

2

3

 

# servicenamed start

Generating/etc/rndc.key:                                 [  OK  ]

Starting named:                                            [ OK  ]

 

测试全部区域解析:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

 

# dig -taxfr stu31.com @172.16.31.30

  

;<<>> DiG 9.8.2rc1-RedHat-9.8.2-0.30.rc1.el6 <<>> -taxfr stu31.com @172.16.31.30

;; globaloptions: +cmd

stu31.com.              600     IN     SOA     ns.stu31.com. root.stu31.com.2014122301 3600 180 432000 21600

stu31.com.              600     IN     NS      ns.stu31.com.

stu31.com.              600     IN     MX      5 mail.stu31.com.

mail.stu31.com.         600    IN      A       172.16.31.30

ns.stu31.com.           600    IN      A       172.16.31.30

          600     IN     A       172.16.31.30

          600     IN     A       172.16.31.31

stu31.com.              600     IN     SOA     ns.stu31.com.root.stu31.com. 2014122301 3600 180 432000 21600

;; Querytime: 1 msec

;;SERVER: 172.16.31.30#53(172.16.31.30)

;; WHEN:Wed Dec 24 02:44:40 2014

;; XFR size: 8 records (messages 1, bytes 210)

 

DNS服务器安装完毕!这里是最简单的正向区域的实现,果有不清楚的话,我前面的博文有详细介绍。

二.      apache服务器在web1web2上的实现

httpd的安装同时在web1web2上安装:

DNS服务器地址指向172.16.31.30

开发环境配置:

1

2

 

# yum –y groupinstall Development Tools

# yum install -ypcre-devel openssl-devel

 

 

编译安装apr

1

2

3

4

 

# tar xf apr-1.5.0.tar.bz2

# cd apr-1.5.0

# ./configure--prefix=/usr/local/apr

# make && make install

 

编译安装apr-util

1

2

3

4

 

# 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

 

编译安装httpd-2.4.10

1

2

3

4

 

# tar xf httpd-2.4.10.tar.bz2

# cd httpd-2.4.10

# ./configure --prefix=/usr/local/apache  --sysconfdir=/etc/httpd24 --enable-so--enable-ssl --enabletc/httpd24 --enable-so --enable-ssl --enable-rewrite--with-z --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

 

Apache服务脚本创建:

复制一个系统上原有的httpd的脚本更改如下:

#cp /etc/rc.d/init.d/httpd /etc/rc.d/init.d/httpd24

wKioL1Sb98-y2TcNAAGvfAGoWtA428.jpg

加入系统服务:

1

2

 

#chkconfig –add httpd24

#chkconfig  httpd24 on

 

启动httpd服务:

1

2

3

 

# servicehttpd24 restart

Stoppinghttpd:                                           [  OK  ]

Startinghttpd:                                           [  OK  ]

 

Web服务器基础部分搭建完成,只需要后续虚拟主机配置与PHP结合。

三.      MariaDB数据库服务器安装

MariaDB服务器的DNS指向172.16.31.30

开发环境配置:

1

2

 

# yum groupinstall Development Tools

# yum -y install pcre-devel openssl-devel

 

XFS文件系统支持:

1

 

# yum install xfsprogs

 

服务器数据库数据文件存储考虑到安全性,我将创建一个LVM进行数据库数据文件的存储,并采用新型文件系统XFS来提高数据库服务器的性能。

格式化磁盘:

1

2

 

#  echo -n -e"n\np\n3\n\n+10G\nt\n3\n8e\n\w\n" |fdisk /dev/sda

# partx -a /dev/sda

 

创建LVM

1

2

3

 

# pvcreate/dev/sda3

# vgcreate myvg/dev/sda3

# lvcreate -L 10G -n mylv myvg

 

创建xfs文件系统:

1

2

 

# mkfs -t xfs /dev/myvg/mylv

# blkid /dev/myvg/mylv

 

自动挂载,在/etc/fstab文件尾部添加:

1

2

 

# vim /etc/fstab

UUID="ba4e1e6c-3b7f-4f66-95b1-f51f8792288d"  /mydata xfs  defaults     0  0

 

创建数据库管理用户:

1

 

# useradd -M -s /sbin/nologin -d /mydata/data -r MySQL

 

创建数据库数据文件存储目录:

1

 

# mkdir /mydata/data

 

并给予mysql用户数据库数据文件存储目录管理权限:

1

 

# chown -R mysql:mysql /mydata/data/

 

解压数据库二进制源码包:

1

2

 

# tar xf mariadb-10.0.10-linux-x86_64.tar.gz -C /usr/local/

# cd /usr/local/

 

创建软链接:

1

2

 

# ln -s mariadb-10.0.10-linux-x86_64/  mysql

# cd mysql/

 

初始化安装MariaDB

1

 

# scripts/mysql_install_db --user=mysql--datadir=/mydata/data

 

mariadb配置文件创建及更改,有模版

安装系统的时候,/etc/路径下有一个my.cnf的,这里换个路径

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

 

# mkdir /etc/mysql

# cp support-files/my-huge.cnf /etc/mysql/my.cnf

# vim /etc/mysql/my.cnf

[mysqld]

datadir = /mydata/data

port            = 3306

socket          =/tmp/mysql.sock

skip-external-locking

key_buffer_size = 384M

max_allowed_packet = 1M

table_open_cache = 512

sort_buffer_size = 2M

read_buffer_size = 2M

read_rnd_buffer_size = 8M

myisam_sort_buffer_size = 64M

thread_cache_size = 8

query_cache_size = 32M

innodb_file_per_table = on

# Try number of CPU's*2 for thread_concurrency

thread_concurrency = 8

 

mariadb服务脚本创建

1

2

3

4

5

6

7

8

 

# cp support-files/mysql.server /etc/rc.d/init.d/mysqld

# chkconfig --add mysqld

# chkconfig mysqld on

# service mysqld start

Starting MySQL.                                           [  OK  ]

# ls /mydata/data/

aria_log.00000001 ib_logfile0        mysql             mysql.stu31.com.pid

aria_log_control  ib_logfile1       mysql-bin.000001 performance_schema

 

mysqld服务的一些设置

设置环境变量:

1

2

 

# vim /etc/profile.d/mysqld.sh

export PATH=/usr/local/mysql/bin:$PATH

 

加载环境变量:

1

 

# source /etc/profile.d/mysqld.sh

 

输出mysql的头文件至系统头文件路径/usr/include

1

 

# ln -sv /usr/local/mysql/include /usr/include/mysql

 

输出mysql的库文件给系统库查找路径,系统重新加载:

1

2

 

# echo '/usr/local/mysql/lib' > /etc/ld.so.conf.d/mysql.conf

# ldconfig

 

测试客户端启动:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

 

# mysql

Welcome to the MariaDB monitor. Commands end with ; or \g.

Your MariaDB connection id is 4

Server version: 10.0.10-MariaDB-log MariaDB Server

  

Copyright (c) 2000, 2014, Oracle, SkySQL Ab and others.

  

Type 'help;' or '\h' for help. Type '\c' to clear the current inputstatement.

  

MariaDB [(none)]> select version();

+---------------------+

| version()           |

+---------------------+

| 10.0.10-MariaDB-log |

+---------------------+

1 row in set (0.00 sec)

  

MariaDB [(none)]> \q

Bye

 

给数据库设置一个密码。

 

1

2

3

 

# mysqladmin -u root password

New password:

Confirm new password:

 
MariaDB安装完毕,只是基本的数据库环境,后面还需要数据库与博客网站结合 

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/5e9eb076f5359ee73fb15a74bbd003a1.html