架构简介:
这里其实就是使用的LAMP+NFS组合,将结构化数据存储在mysql数据库服务器中(例如论坛用户数据,文字内容等等),非结构化数据(例如附件数据,多媒体文件)存储在NFS服务器上的文件系统中;其具体架构为:2台web服务器,1台NFS服务器,1台mysql服务器,1台DNS服务器;以下图所示php
web服务器1:172.16.20.241,CentOS6
web服务器2:172.16.20.242,CentOS6
DNS服务器:172.16.20.244,CentOS6
mysql服务器:172.16.20.243,CentOS7
NFS服务器:172.16.20.245,CentOS7mysql
具体配置:
一、NFS服务器配置,172.16.20.245:web
[root@localhost ~]# yum install nfs-utils -y [root@localhost ~]# systemctl start nfs [root@localhost ~]# systemctl start rpcbind [root@localhost ~]# mkdir /web // 建立一个目录用于存放wordpress并导出 [root@localhost ~]# unzip wordpress-4.7.4-zh_CN.zip [root@localhost ~]# cp -r wordpress [root@localhost ~]# vim /etc/exports /web/wordpress 172.16.20.241(rw,no_root_squash) 172.16.20.242(rw,no_root_squash) // 导出wordpress目录,并设置root用户容许访问,由于必需要以root用户的身份运行,才能安装wordpress [root@localhost ~]# chown -R :apache /web/wordpress // 因为wordpress用于httpd服务,所以apache用户须要有此目录的读写权限 [root@localhost ~]# chmod -R g+rw /web/wordpress [root@localhost ~]# systemctl restart nfs // 重启服务使exports导出的目录生效 [root@localhost ~]# showmount -e 172.16.20.245 // 使用此命令能够查看目标主机已导出的目录 Export list for 172.16.20.245: /web/wordpress 172.16.20.242,172.16.20.241 [root@localhost ~]#
二、mysql服务器配置,172.16.20.243:sql
[root@localhost ~]# yum install mysql-server -y //这里使用rpm包简易安装,更专业的作法是使用二进制格式安装,将mysql数据存放到一个单独的磁盘中,便于管理和容灾 [root@localhost ~]# mysql mysql> create database web; //建立wordpress用的数据库 Query OK, 1 row affected (0.00 sec) mysql> use mysql Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A Database changed mysql> grant all privileges on web.* to 'user1'@'%' identified by 'redhat'; //给web数据库受权一个专用用户user1并设置密码,这里可能会有人想,直接用root用户就好了;可是这样是不安全的,并且rpm包安装的mysql默认是禁止root用户远程登陆,而且直接以root用户登录数据库也很是的不安全 Query OK, 0 rows affected (0.00 sec) mysql> flush privileges; //手动刷新权限表,使新做出的更改当即生效 Query OK, 0 rows affected (0.00 sec) mysql> select host,user,password from user; +-----------------------+-------+-------------------------------------------+ | host | user | password | +-----------------------+-------+-------------------------------------------+ | localhost | root | | | localhost.localdomain | root | | | 127.0.0.1 | root | | | localhost | | | | localhost.localdomain | | | | % | user1 | *84BB5DF4823DA319BBF86C99624479A198E6EEE9 | +-----------------------+-------+-------------------------------------------+ 6 rows in set (0.00 sec) // 这里能够看出咱们新建的user1用户已经生效了 mysql>
三、DNS服务器配置,172.16.20.244:数据库
[root@localhost ~]# yum install bind -y [root@localhost ~]# vim /etc/named.ca 修改如下选项 listen-on port 53 { 172.16.20.244; 127.0.0.1; }; allow-query { any; }; dnssec-enable no; dessec-validation no; [root@localhost ~]# vim /etc/named.rfc1912.zones 添加以下行 zone "gumpti.com" IN { type master; file "gumpti.com.zone"; }; // 添加一个主区域 [root@localhost ~]# vim /var/named/gumpti.com.zone $TTL 1D $ORIGIN gumpti.com. @ IN SOA ns1.gumpti.com. admin.gumpti.com ( 2017120201 1M 5M 7D 1D ) IN NS ns1.gumpti.com. IN NS www.gumpti.com. ns1 IN A 172.16.20.244 www IN A 172.16.20.241 www IN A 172.16.20.242 [root@localhost ~]# service named start [root@localhost ~]# dig -t A www.gumpti.com @172.16.20.244 //查看A记录是否生效 ; <<>> DiG 9.9.4-RedHat-9.9.4-38.el7_3.3 <<>> -t A www.gumpti.com @172.16.20.244 ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 215 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 2, ADDITIONAL: 2 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ;; QUESTION SECTION: ;www.gumpti.com. IN A ;; ANSWER SECTION: www.gumpti.com. 86400 IN A 172.16.20.241 www.gumpti.com. 86400 IN A 172.16.20.242 ;; AUTHORITY SECTION: gumpti.com. 86400 IN NS www.gumpti.com. gumpti.com. 86400 IN NS ns1.gumpti.com. ;; ADDITIONAL SECTION: ns1.gumpti.com. 86400 IN A 172.16.20.244 ;; Query time: 24 msec ;; SERVER: 172.16.20.244#53(172.16.20.244) ;; WHEN: Wed Dec 06 15:11:42 CST 2017 ;; MSG SIZE rcvd: 123 // 再执行一次dig命令查看两条A记录的轮询效果是否生效 [root@localhost ~]# dig -t A www.gumpti.com @172.16.20.244 ; <<>> DiG 9.9.4-RedHat-9.9.4-38.el7_3.3 <<>> -t A www.gumpti.com @172.16.20.244 ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 27457 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 2, ADDITIONAL: 2 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ;; QUESTION SECTION: ;www.gumpti.com. IN A ;; ANSWER SECTION: www.gumpti.com. 86400 IN A 172.16.20.242 www.gumpti.com. 86400 IN A 172.16.20.241 ;; AUTHORITY SECTION: gumpti.com. 86400 IN NS ns1.gumpti.com. gumpti.com. 86400 IN NS www.gumpti.com. ;; ADDITIONAL SECTION: ns1.gumpti.com. 86400 IN A 172.16.20.244 ;; Query time: 0 msec ;; SERVER: 172.16.20.244#53(172.16.20.244) ;; WHEN: Wed Dec 06 15:13:24 CST 2017 ;; MSG SIZE rcvd: 123 [root@localhost ~]#
四、配置WEB服务器1,172.16.20.241:apache
[root@localhost ~]# showmount -e 172.16.20.245 Export list for 172.16.20.245: /web/wordpress 172.16.20.242,172.16.20.241 [root@localhost /]# mkdir /www/wordpress -pv [root@localhost ~]# mount -t nfs 172.16.20.245:/web/wordpress /www/wordpress/ // 挂载NFS服务器172.16.20.245导出的/web/wordpress到本地的/www/wordpress目录 [root@localhost ~]# yum install httpd php php-mysql -y [root@localhost ~]# vim /etc/httpd/conf/httpd.conf 修改以下行 DocumentRoot "/www/wordpress/" <Directory "/www/wordpress/"> [root@localhost ~]# cp /www/wordpress/wp-config-sample.php /www/wordpress/wp-config.php [root@localhost ~]# vim /www/wordpress/wp-config.php // 修改wordpress的配置文件 define('DB_NAME', 'web'); // 指定wordpress使用的数据库为web数据库 define('DB_USER', 'user1'); // 指定wordpress使用的链接数据库的用户为user1 define('DB_PASSWORD', 'redhat'); // 指定wordpress使用的用户user1的密码 define('DB_HOST', '172.16.20.243'); // 指定wordpress使用的数据库的服务器IP [root@localhost ~]# service httpd start
五、配置WEB服务器2,172.16.20.242:vim
[root@localhost ~]# showmount -e 172.16.20.245 Export list for 172.16.20.245: /web/wordpress 172.16.20.242,172.16.20.241 [root@localhost /]# mkdir /www/wordpress -pv [root@localhost ~]# mount -t nfs 172.16.20.245:/web/wordpress /www/wordpress/ // 挂载NFS服务器172.16.20.245导出的/web/wordpress到本地的/www/wordpress目录 [root@localhost ~]# yum install httpd php php-mysql -y [root@localhost ~]# vim /etc/httpd/conf/httpd.conf 修改以下行 DocumentRoot "/www/wordpress/" <Directory "/www/wordpress/"> [root@localhost ~]# service httpd start // 已经在WEB1上修改过wordpress的配置文件,这里WEB1和WEB2都是挂载的NFS服务器上的wordpress目录,使用的同一份wordpress文件
六、查看配置效果
将客户端主机的DNS服务器设置为172.16.20.244
而后在浏览器中输入地址www.gumpti.com
成功显示wordpress界面,会提示须要安装,安装并注册一个管理员帐号,而后进入管理界面(实验中我注册的管理员帐号为181)
点击“用户”按钮,添加一个用户(实验中我添加的是157)
而后发布几篇文章
保存后登录另外一台服务器172.16.20.242就能够查看到wordpress页面中有181用户发布的文章浏览器
也可使用新添加的用户157登录,也能够看到文章的发布安全
以上在WEB1上安装了wordpress并发布了文章,经过WEB2能够成功访问并看到相同的内容,而且可使用不一样的帐号在WEB2中登录,说明实验已经成功。服务器
总结:LAMP+NFS的架构比较简单,但在实际生产环境中使用的并很少,更实用的是分布式文件系统而不是NFS,NFS性能有限,只是在小公司在过渡期中使用。这次实验作的比较匆忙:一、关于NFS导出的wordpress权限问题并无作太多的研究二、在WEB2中登录后,网页地址依旧会跳转到WEB1,这里是尚未考究出缘由,须要继续学习三、DNS也只配置了正向解析域,没有配置反向解析域后续再来继续填坑。写的比较潦草,若有遗漏错误和争议之处,欢迎你们的批评指正和讨论,谢谢。