本文旨在实现NFS为lamp环境web站点提供共享存储。


1.实验需求


1nfs server导出/data/application/web,在目录中提供wordpress;

2nfs client挂载nfs server导出的文件系统,至/var/www/html;

3)客户端1(lamp)部署wordpress,并让其正常访问,要确保正常发文章,上传图片。

4)客户端2(lamp),挂载nfs server导出的文件系统至/var/www/html,验证其wordpress

否可被访问,要确保能正常发文章,上传图片。

5nfs server 导出/mydata/目录;

6nfs client挂载/mydata/至本地的/mydata目录,mysqldmariadb服务的数据目录设置为/mydata, 要求服务能正常启动,且可正常存储数据。


2.服务器规划


服务器版本 角色 主机名 IP地址
centos7.2x86_64

web服务器01apache+php

nfs客户端
web01 172.16.52.51
centos7.2x86_64

web服务器02apache+php

nfs客户端
web02 172.16.52.52
centos7.2x86_64

mysqld数据库服务

nfs客户端
db 172.16.52.53
centos7.2x86_64

nfs服务端

nfs 172.16.52.54


3.实验拓扑


NFS为lamp提供共享存储实践


4.部署NFS服务端及nfs客户端


4.1 配置nfs服务端

 (1)安装nfs软件

[[email protected] ~]# yum -y install nfs-utils
[[email protected] ~]# rpm -qa nfs-utils
nfs-utils-1.3.0-0.21.el7.x86_64

 

 (2)启动nfs服务

    开机自启动nfs服务:

[[email protected] ~]# systemctl enable rpcbind.service
[[email protected] ~]# systemctl enable nfs-server.service

 

 启动rpcbindnfs服务:

 注意要先启动rpcbind

[[email protected] ~]# systemctl start rpcbind.service
[[email protected] ~]# systemctl start nfs.service

 

  查看nfs状态:

[[email protected] ~]# rpcinfo -p

 

 (3)配置nfs服务

[[email protected] ~]# cat /etc/exports
/data/application/web 172.16.0.0/16(rw,sync,anonuid=888,anongid=888)
/mydata   172.16.0.0/16(rw,sync,anonuid=3306,anongid=3306)

 

  重新导出:

[[email protected] ~]# exportfs -arv
exporting 172.16.0.0/16:/data
exporting 172.16.0.0/16:/data/application/web

 

 为nfs共享文件创建授权用户(uid):

 这里我们不使用默认的nfsnobody用户

[[email protected] ~]# groupadd -g 888 apache
[[email protected] ~]# useradd -u 888 -g apache -s/sbin/nologin -M apache
[[email protected] ~]# id apache
uid=888(apache) gid=888(apache) groups=888(apache)
[[email protected] ~]# chown apache.apache/data/application/web
[[email protected] ~]# ls -ld /data/application/web/
drwxr-xr-x 2 apache apache 6 Jul 20 04:27/data/application/web/
[[email protected] ~]# groupadd -g 3306 mysql
[[email protected] ~]# useradd -u 3306 -g mysql -s/sbin/nologin -M mysql
[[email protected] ~]# id mysql
uid=3306(mysql) gid=3306(mysql) groups=3306(mysql)
[[email protected] ~]# chown mysql.mysql /data
[[email protected] ~]# ls -ld /data
drwxr-xr-x 4 mysql mysql 35 Jul 20 04:27 /data


4.2 配置nfs客户端

 注:3nfs客户端配置都一样


 安装软件包:

[[email protected] ~]# yum -y install nfs-utils

 

 启动rpcbind

 客户端只用启动rpcbind即可。

[[email protected] ~]# systemctl start rpcbind


5.部署lamp环境


说明:本次lamp环境采用rpm包安装,数据库分离

web01 web02 配置一样。

为了方便测试:web01域名blog.magedu.comweb02域名blog02.magedu.com

5.1 安装软件

[[email protected] ~]# yum -y install httpd php php-mysql

 

5.2 配置虚拟主机

[[email protected] conf.d]# cat blog.conf
<VirtualHost *:80>
         ServerNameblog.magedu.com
         DocumentRoot"/var/www/html"
         CustomLog"/var/log/httpd/blog/access_log" combined
         ErrorLog  "/var/log/httpd/blog/error_log"  
         <Directory"/var/www/html">
                   OptionsNone
                   AllowOverrideNone
                   Requireall granted
         </Directory>
</VirtualHost>

5.3 php访问测试

NFS为lamp提供共享存储实践



6. 部署mariadb数据库服务


 mariadb采用通用二进制安装

[[email protected] soft]# ln -sv mariadb-5.5.46-linux-x86_64 mariadb
[[email protected] soft]#ls
mariadb  mariadb-5.5.46-linux-x86_64


6.1 创建mysql用户

[[email protected] soft]# groupadd -g 3306 mysql
[[email protected] soft]# useradd -u 3306 -g mysql mysql
[[email protected] soft]# id mysql
uid=3306(mysql) gid=3306(mysql) groups=3306(mysql)

6.2 创建数据目录并授权

[[email protected] soft]# mkdir /mydata
[[email protected] soft]# chown -R mysql.mysql /mydata
[[email protected] soft]# ls -ld /mydata
drwxr-xr-x 2 mysql mysql 6 Jul 20 07:27 /mydata

 

6.3 初始化数据库

[[email protected] mariadb]# chown -R root.mysql /data/soft/mariadb/
[[email protected] mariadb]# cd /data/soft/mariadb
[[email protected] mariadb]# scripts/mysql_install_db--user=mysql --datadir=/mydata --basedir=/data/soft/mariadb

 

6.4 配置/etc/my.cnf

# cp support-files/my-large.cnf /etc/my.cnf
vim /etc/my.cnf
[mysqld]
port = 3306
basedir = /data/soft/mariadb
datadir = /data/mydata
innodb_file_per_table = 1 #让innodb表每个表一个表空间文件。


6.5 配置mysqld启动脚本

 复制mysql启动脚本到/etc/init.d/mysqld

[[email protected] ~]# cp /data/soft/mariadb/support-files/mysql.server/etc/init.d/mysqld
[[email protected] ~]# chmod 755 /etc/init.d/mysqld
[[email protected] ~]# sed -i's#/usr/local/mysql#/data/soft/mariadb#g' /etc/init.d/mysqld
[[email protected] ~]# chkconfig --add mysqld

 

 修改PATH环境变量:

[[email protected] mariadb]# cat /etc/profile.d/mysql.sh
export PATH=/data/soft/mariadb/bin:$PATH

 

 配置库文件搜索路径:

[[email protected] mariadb]# echo"/data/soft/mariadb/lib" > /etc/ld.so.conf.d/mysqld.conf
[[email protected] mariadb]# ldconfig

6.6 启动mysqld服务

[[email protected] /]# service mysqld start
Starting MySQL.. SUCCESS!
[[email protected] /]# lsof -i:3306
COMMAND PID  USER   FD  TYPE DEVICE SIZE/OFF NODE NAME
mysqld  7668mysql   15u  IPv4 23521      0t0  TCP *:mysql (LISTEN)

 

6.7 测试php与数据库的连接

 注:事先创建好相关的库和用户

 在web服务器站点下创建mysql.php 文件

[[email protected] html]# cat mysql.php
<?php
         $conn= mysql_connect('172.16.52.53','wordpress','123456');
         if($conn)
                   echo'connect 172.16.52.53 is OK';
         else
                   echo'failure';
?>


 NFS为lamp提供共享存储实践


6.8 把nfs服务端的/mydata/目录挂载至本地的/mydata

 

[[email protected] ~]# showmount -e 172.16.52.54
Export list for 172.16.52.54:
/mydata               172.16.0.0/16
/data/application/web 172.16.0.0/16

 

[[email protected] ~]# ls -ld /mydata/
drwxr-xr-x 6 mysql mysql 4096 Jul 21 06:05 /mydata/

 

[[email protected] /]# ls -ld /mydata
drwxr-xr-x 6 mysql mysql 4096 Jul 21 06:05 /mydata

 

 把本地mysql数据目录/mydata里面的文件复制到nfs服务端的/mydata目录里

[[email protected] ~]# scp -r /mydata/*[email protected]:/mydata

 

 重新对nfs服务端/mydata/下面的文件授权:

chown -R mysql.mysql /mydata

 

 挂载:

mount -t nfs 172.16.52.54:/mydata /mydata

 重启mysqld测试:

[[email protected] ~]# service mysqld restart
Shutting down MySQL. SUCCESS!
Starting MySQL.. SUCCESS!
ok,没有问题。


7.部署web服务器站点目录


7.1 LAMP 01部署wordpress站点

 站点目录严格授权:

[[email protected] html]# chown -R root.root/var/www/html/
[[email protected] html]# find /var/www/html/ -type f|xargs chmod 644
[[email protected] html]# find /var/www/html/ -type d|xargs chmod 755
[[email protected] html]# chown -R apache.apache/var/www/html/wordpress/wp-content

 

 在博客里发一篇文章,插入一张图片。

 NFS为lamp提供共享存储实践


7.2 把nfs服务端的/data/application/web 挂载至web01本地的/var/www/html

1)把/var/www/html下面的文件复制到/data/application/web目录下面

 [[email protected] ~]# scp -rp /var/www/html/*[email protected]:/data/application/web/

 

2)授权

 [[email protected]~]# chown -R apache.apache /data/application/web/wordpress/wp-content/

        

3)挂载

[[email protected] ~]# showmount -e 172.16.52.54
Export list for 172.16.52.54:
/mydata               172.16.0.0/16
/data/application/web 172.16.0.0/16
 [[email protected] wordpress]# mount -t nfs 172.16.52.54:/data/application/web/var/www/html

 

 (4)读写测试,插入图片

 NFS为lamp提供共享存储实践


7.3 把nfs服务端的/data/application/web 挂载至web02本地的/var/www/html

1)挂载

[[email protected] ~]# mount -t nfs172.16.52.54:/data/application/web /var/www/html

2)访问blog02.magedu.com/wordpress/index.php


NFS为lamp提供共享存储实践

 访问没有问题


 测试插入图片:

NFS为lamp提供共享存储实践



8. 总结


本次实验实现了web站点数据的共享,一定程度上实现session共享和负载均衡的功能。









转载于:https://blog.51cto.com/zhangbei/1828602

相关文章:

  • 2021-06-26
  • 2021-09-02
  • 2021-08-05
  • 2021-10-25
  • 2021-10-05
  • 2022-12-23
猜你喜欢
  • 2021-07-26
  • 2021-05-10
  • 2022-12-23
  • 2021-03-31
  • 2021-08-08
  • 2022-01-12
  • 2021-12-20
相关资源
相似解决方案