LAMP+NFS实现多个Web服务器静态资源统一存储
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博客的各种数据
实验架构:
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
www.stu31.com. 600 IN A 172.16.31.30
www.stu31.com. 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服务器在web1和web2上的实现
httpd的安装同时在web1和web2上安装:
将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
加入系统服务:
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:
|
更多详情见请继续阅读下一页的精彩内容:
|
评论暂时关闭