php nfs存储,NFS为lamp提供共享存储实践

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

1.实验需求

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

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

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

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

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

(5)nfs server 导出/mydata/目录;

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

2.服务器规划服务器版本角色主机名IP地址

centos7.2x86_64web服务器01(apache+php)nfs客户端web01172.16.52.51

centos7.2x86_64web服务器02(apache+php)nfs客户端web02172.16.52.52

centos7.2x86_64mysqld数据库服务nfs客户端db172.16.52.53

centos7.2x86_64nfs服务端nfs172.16.52.54

3.实验拓扑

d12483f288e7526e263dcb188077521d.png

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

4.1 配置nfs服务端

(1)安装nfs软件[root@nfs ~]# yum -y install nfs-utils

[root@nfs ~]# rpm -qa nfs-utils

nfs-utils-1.3.0-0.21.el7.x86_64

(2)启动nfs服务

开机自启动nfs服务:[root@nfs ~]# systemctl enable rpcbind.service

[root@nfs ~]# systemctl enable nfs-server.service

启动rpcbind和nfs服务:

注意要先启动rpcbind[root@nfs ~]# systemctl start rpcbind.service

[root@nfs ~]# systemctl start nfs.service

查看nfs状态:[root@nfs ~]# rpcinfo -p

(3)配置nfs服务[root@nfs ~]# 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)

重新导出:[root@nfs ~]# exportfs -arv

exporting 172.16.0.0/16:/data

exporting 172.16.0.0/16:/data/application/web

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

这里我们不使用默认的nfsnobody用户[root@nfs ~]# groupadd -g 888 apache

[root@nfs ~]# useradd -u 888 -g apache -s/sbin/nologin -M apache

[root@nfs ~]# id apache

uid=888(apache) gid=888(apache) groups=888(apache)

[root@nfs ~]# chown apache.apache/data/application/web

[root@nfs ~]# ls -ld /data/application/web/

drwxr-xr-x 2 apache apache 6 Jul 20 04:27/data/application/web/[root@nfs ~]# groupadd -g 3306 mysql

[root@nfs ~]# useradd -u 3306 -g mysql -s/sbin/nologin -M mysql

[root@nfs ~]# id mysql

uid=3306(mysql) gid=3306(mysql) groups=3306(mysql)

[root@nfs ~]# chown mysql.mysql /data

[root@nfs ~]# ls -ld /data

drwxr-xr-x 4 mysql mysql 35 Jul 20 04:27 /data

4.2 配置nfs客户端

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

安装软件包:[root@db ~]# yum -y install nfs-utils

启动rpcbind:

客户端只用启动rpcbind即可。[root@db ~]# systemctl start rpcbind

5.部署lamp环境

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

web01 和web02 配置一样。

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

5.1 安装软件[root@web01 ~]# yum -y install httpd php php-mysql

5.2 配置虚拟主机[root@web01 conf.d]# cat blog.conf

ServerNameblog.magedu.com

DocumentRoot"/var/www/html"

CustomLog"/var/log/httpd/blog/access_log" combined

ErrorLog  "/var/log/httpd/blog/error_log"

OptionsNone

AllowOverrideNone

Requireall granted

5.3 php访问测试

32634bb4d1d2f3fac9674585898f080a.png

6. 部署mariadb数据库服务

mariadb采用通用二进制安装[root@db soft]# ln -sv mariadb-5.5.46-linux-x86_64 mariadb

[root@db soft]#ls

mariadb  mariadb-5.5.46-linux-x86_64

6.1 创建mysql用户[root@db soft]# groupadd -g 3306 mysql

[root@db soft]# useradd -u 3306 -g mysql mysql

[root@db soft]# id mysql

uid=3306(mysql) gid=3306(mysql) groups=3306(mysql)

6.2 创建数据目录并授权[root@db soft]# mkdir /mydata

[root@db soft]# chown -R mysql.mysql /mydata

[root@db soft]# ls -ld /mydata

drwxr-xr-x 2 mysql mysql 6 Jul 20 07:27 /mydata

6.3 初始化数据库[root@db mariadb]# chown -R root.mysql /data/soft/mariadb/

[root@db mariadb]# cd /data/soft/mariadb

[root@db 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[root@db ~]# cp /data/soft/mariadb/support-files/mysql.server/etc/init.d/mysqld

[root@db ~]# chmod 755 /etc/init.d/mysqld

[root@db ~]# sed -i's#/usr/local/mysql#/data/soft/mariadb#g' /etc/init.d/mysqld

[root@db ~]# chkconfig --add mysqld

修改PATH环境变量:[root@db mariadb]# cat /etc/profile.d/mysql.sh

export PATH=/data/soft/mariadb/bin:$PATH

配置库文件搜索路径:[root@db mariadb]# echo"/data/soft/mariadb/lib" > /etc/ld.so.conf.d/mysqld.conf

[root@db mariadb]# ldconfig

6.6 启动mysqld服务[root@db /]# service mysqld start

Starting MySQL.. SUCCESS!

[root@db /]# 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 文件[root@web01 html]# cat mysql.php

$conn= mysql_connect('172.16.52.53','wordpress','123456');

if($conn)

echo'connect 172.16.52.53 is OK';

else

echo'failure';

?>

759a6013dbcd07c7344e9c07f7379b5d.png

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

[root@db ~]# 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

[root@db ~]# ls -ld /mydata/

drwxr-xr-x 6 mysql mysql 4096 Jul 21 06:05 /mydata/

[root@nfs /]# ls -ld /mydata

drwxr-xr-x 6 mysql mysql 4096 Jul 21 06:05 /mydata

把本地mysql数据目录/mydata里面的文件复制到nfs服务端的/mydata目录里[root@db ~]# scp -r /mydata/*root@172.16.52.54:/mydata

重新对nfs服务端/mydata/下面的文件授权:chown -R mysql.mysql /mydata

挂载:mount -t nfs 172.16.52.54:/mydata /mydata

重启mysqld测试:[root@db ~]# service mysqld restart

Shutting down MySQL. SUCCESS!

Starting MySQL.. SUCCESS!

ok,没有问题。

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

7.1 LAMP 01部署wordpress站点

站点目录严格授权:[root@web01 html]# chown -R root.root/var/www/html/

[root@web01 html]# find /var/www/html/ -type f|xargs chmod 644

[root@web01 html]# find /var/www/html/ -type d|xargs chmod 755

[root@web01 html]# chown -R apache.apache/var/www/html/wordpress/wp-content

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

0e7c6c96e3bb848fea7056c184eb228d.png

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

(1)把/var/www/html下面的文件复制到/data/application/web目录下面[root@web01 ~]# scp -rp /var/www/html/*root@172.16.52.54:/data/application/web/

(2)授权[root@nfs~]# chown -R apache.apache /data/application/web/wordpress/wp-content/

(3)挂载[root@web01 ~]# 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[root@web01 wordpress]# mount -t nfs 172.16.52.54:/data/application/web/var/www/html

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

00a4756a10a285b0c539b71a482a2f3b.png

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

(1)挂载[root@web02 ~]# mount -t nfs172.16.52.54:/data/application/web /var/www/html

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

5ceaa6bc744781f5ac53edb7bd1a2df1.png

访问没有问题

测试插入图片:

0a7ecfdc2333d2a515748d9dd4adb2cb.png

8. 总结

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值