NFS介绍,及实现LAMP架构的电商网站MySQL主从和数据实时同步
错误记录
subtree_check和no_subtree_check
fns。报错
exportfs: /etc/exports [1]: Neither 'subtree_check' or 'no_subtree_check' specified for export "*:/data".
Assuming default behaviour ('no_subtree_check').
NOTE: this default has changed since nfs-utils version 1.0.x
解释:
subtree_check'和'no_subtree_check'是针对NFS 导出项(exports)设置的可选参数。当使用'subtree_check'选项时,NFS导出系统将确保每个客户端都只能访问其访问的目录及其下的子目录,并防止客户端访问树外的目录。这会增加一些额外的性能开销,但通常是推荐的安全性设置。
而当使用'no_subtree_check'选项时,NFS导出系统将不会检查客户端访问的目录是否在其访问的树内,这意味着客户端将能够访问其访问范围之外的目录,但也会减少导出系统的负载并提高性能。
请注意,这些选项的默认行为已在较新版本的nfs-utils中更改。在没有指定这些选项的情况下,将会默认使用'no_subtree_check'
目录
目录
实战演练实现LAMP架构的电商网站MySQL主从和数据实时同步
实现 LAMP应用类京东电商网站 shopxo-v2.2.8

NFS和rpcbind(注册中心)是再一起 的
安装nfs
[@rocky8 ~]#yum -y install nfs-utils.x86_64 (安装nfs及相关依赖包)mount (挂载)
[@ubuntu2004 ~]#apt install nfs-server(ubuntu中服务器和客户端是不一样的但是nfs-server服务器端包含客户端)
nfs简介
把另一台电脑上的文件夹,当成自己电脑里的硬盘来用。
NFS = 网络共享文件夹,让多台机器共用一份数据。
ceph 三合一有专业工程师 一般小公司没有
rpcb(注册中心)是什么
它是一个RPC服务,主要是在nfs共享时候负责通知客户端,服务器的nfs端口号的。简单理解rpc就是一个中介服务。
服务端配置(共享目录)
共享 vim /etc/exports
要共享的目录 允许访问的IP(参数1,参数2,参数3) *代表任何人(所有IP都能访问)
-
/data/nfs1 *(rw,no_root_squash) 任何人(指定),加权限,不把他压榨成普通用户(不加默认压榨nobody)
-
/data/nfs1 *(rw,no_root_squash,anonuid=66,anongid=66) 普通用户压成66,root保持root。
默认选项:(ro,sync,root_squash,no_all_squash)
ro,rw 只读和读写
async 同步写入(安全,默认)
sync 异步写入(性能高,有丢数据风险)
root_squash (默认)远程root映射为nfsnobody,UID为65534,CentOS8 为nobody,CentOS 7以前的版本为nfsnobody
no_root_squash 远程root映射成NFS服务器的root用户
all_squash 所有远程用户(包括root)都变成nfsnobody,CentOS8 为nobody
no_all_squash (默认)保留共享文件的UID和GID
anonuid和anongid 指明匿名用户映射为特定用户UID和组GID,而非nobody,可配合all_squash使用
服务端操作命令
exportfs -r # 重新加载 /etc/exports
exportfs -v # 查看当前共享
exportfs -au # 暂停所有共享
systemctl enable --now nfs-server # 启动并开机自启
showmount -e 本机IP # 查看本机共享了哪些目录
客户端挂载
mount.nfs 相关选项
-
手动挂载命令:
mount -t nfs -o 参数1,参数2 服务器IP:/共享目录 /本地目录 -
开机自动挂载:写进
/etc/fstab,格式:服务器IP:/共享目录 /本地目录 nfs 参数列表 0 0
defaults 包含哪些参数
rw, suid, dev, exec, auto, nouser, async
参数 含义(一句话)
rw 可读可写
suid 允许程序使用 setuid 权限(比如普通用户临时拥有root权限运行某个程序)
dev 允许识别设备文件(硬盘、U盘等)
exec 允许在这个分区里执行程序(.exe、脚本等)
auto 开机自动挂载(配合 mount -a 用)
nouser 只有root可以挂载/卸载,普通用户不行
async 异步读写(先告诉系统写完了,实际背后慢慢写,性能好)
fg #(默认)前台挂载
bg #后台挂载
hard #(默认)持续请求
soft #非持续请求
intr #和hard配合,请求可中断
rsize #和wsize 一次读和写数据最大字节数,rsize=32768
_netdev #无网络服务时不挂载NFS资源 等网好了再挂载
vers #指定版本,客户端centos8默认4.2 ,centos7默认4.1 centos6默认4.0
10.0.0.100:/data/nfs1 /var/www/html nfs _netdev 0 0 手动
172.16.0.1:/public /mnt/nfs nfs defaults,_netdev 0 0 开机自动
mount -t nfs -o rw,bg,soft,intr,rsize=32768,wsize=32768 10.0.0.100:/data/nfs1 /mnt 高性能(能容忍丢一点数据)
nobody客户端访问服务器转换的用户
什么情况用?
-
客户端访问NFS共享时,发现没有权限读写
-
因为客户端用户被“压榨”成了nobody,所以需要给nobody授权
apt install acl 安装加权限包
setfacl -Rm u:nobody:rwx /data/nfs1/ 给他加权限
setfacl -bR /data/nfs1/ 取消权限
vim /etc/exports 共享文件
exportfs -r 加载生效
exportfs -au 暂停共享
exportfs -a 恢复共享
eportfs -v 查看
showmount -e 10.0.0.100 查看ip的共享目录
mount 10.0.0.100:/data/nfs1 /var/www/html/ 客户端挂在
umount /var/www/html 取消挂载
mount -a 自动挂载相关
df 客户端查看
rsync是什么
rsync(remote synchronize)是Liunx/Unix下的一个远程数据同步工具。
它可通过LAN/WAN快速同步多台主机间的文件和目录,并适当利用rsync算法(差分编码)以减少数据的传输。
rsync算法并不是每一次都整份传输,而是只传输两个文件的不同部分,因此其传输速度相当快。
除此之外,rsync可拷贝、显示目录属性,以及拷贝文件,并可选择性的压缩以及递归拷贝。
rsync认证方式
SSH方式 通过SSH传输,加密安全,用系统账号 小规模、临时同步
rsync-daemon方式 服务端模式,监听873端口,可独立配置账号 生产环境、定时同步(推荐)
无论哪种方式,客户端和服务端都必须安装rsync程序。rsync-daemon 认证 客户服务不用分开
rsync在rsync-daemon认证方式下,默认监听TCP的873端口。
rsync (r 森可)常用
先搞清楚:你要用哪种方式?
| 方案A:SSH方式 | 方案B:daemon方式 | |
|---|---|---|
| 适合 | 通过SSH传输,用系统账号 | 独立rsync服务,用自定义账号 |
| 端口 | 22 | 873 |
| 配置复杂度 | 简单 | 稍复杂 |
| 安全性 | 高(SSH加密) | 中(密码明文,可加隧道) |
| 适合场景 | 临时同步、小规模、已有SSH | 生产环境、定时备份、多客户端 |
| 是否需要服务端 | 只要SSH就行 | 需要配置并启动rsyncd |
SSH方式(简单,推荐新手)
核心命令格式
rsync -av 源路径 目标路径
示例:把远程服务器10.0.0.100的数据同步到本地
rsync -av 10.0.0.100:/data/www/ /data/backup/
-
-a:归档模式(保留权限、时间等) -
-v:显示详细信息 -
源路径:远程用IP:路径,本地直接写路径 -
目标路径:本地目录
方向对照表
| 方向 | 命令 |
|---|---|
| 远程 → 本地 | rsync -av root@10.0.0.100:/data/www/ /local/backup/ |
| 本地 → 远程 | rsync -av /local/data/ root@10.0.0.100:/data/www/ |
| 远程 → 远程(走本地中转) | rsync -av root@10.0.0.100:/data/ root@10.0.0.101:/backup/ |
方案A进阶:免密 + 定时任务
打通SSH免密登录
在执行rsync的机器上执行:
# 生成密钥(一路回车) ssh-keygen -t rsa -b 2048 -N "" # 把公钥发给目标服务器(输入对方密码) ssh-copy-id root@10.0.0.100 # 测试免密登录 ssh root@10.0.0.100
写定时任务
crontab -e
添加一行(每天凌晨2点同步):
0 2 * * * rsync -a root@10.0.0.100:/data/www/ /data/backup/ >> /var/log/rsync.log 2>&1
-
[root@data-server ~]#10.0.0.100
-
[root@backup-server ~] #10.0.0.101
daemon方式(生产环境,更专业)
架构图
客户端(发送方) ──rsync协议:873──> 服务端(接收方)
│ │
│ rsyncuser / 123456 │
└────────────────────────────────────┘
第一部分:服务端配置(接收数据的机器)(服务端,如 10.0.0.106)配置
步骤1:安装rsync
# CentOS/Rocky yum install rsync -y # Ubuntu apt install rsync -y
步骤2:创建配置文件 /etc/rsyncd.conf
vim /etc/rsyncd.conf 权限脚本
uid = root #以哪个用户来访问共享目录,将之指定为生成的文件所有者,默认为nobody
gid = root #默认为nobody,Ubuntu中为nogroup (组指定为root)
max connections = 0 #最大连接数0不限制
ignore errors #忽略错误
exclude = lost+found/ #排除不想同步的文件夹
log file = /var/log/rsyncd.log #生成的日志放在那里
pid file = /var/run/rsyncd.pid #pid文件放在哪里
lock file = /var/run/rsyncd.lock #锁文件放在那里
reverse lookup = no #是否做反向解析
#hosts allow = 10.0.0.0/24 #限制网段谁能连,不写都能连
[backup] #共享出来的标识,对外发部的名称
path = /data/backup/ #实际路径
comment = backup dir
read only = no #默认是yes,即只读 设置可读可写
auth users = rsyncuser #验证账号,必须是这个用户名,切验证密码在能连接
secrets file = /etc/rsync.pas #验证密码放在单独文件里
# ========== 模块1:backup ==========
[backup]
path = /data/backup/
comment = 备份目录
read only = no
auth users = rsyncuser
secrets file = /etc/rsync.pas
list = yes
# ========== 模块2:www(如果要多个目录就加) ==========
[www]
path = /var/www/html/
comment = 网站目录
read only = no
auth users = rsyncuser
secrets file = /etc/rsync.pas
list = no # 不公开这个模块
-
[root@backup-server ~]#echo "rsyncuser:123456" > /etc/rsync.pas 密码写文件里
-
[root@backup-server ~]#chmod 600 /etc/rsync.pas 必须改权限,否则rsync拒绝启动
创建目录并启动服务
-
[root@backup-server ~]#mkdir /data/backup/ -p 目录文件
-
[root@backup-server ~]#systemctl restart rsync.service 重启
-
ss -ntl | grep 873 确认端口已监听
客户端配置
-
[root@data-server ~]#rsync -a /etc/hosts这样的输密码
-
[root@data-server ~]#echo "123456" > /etc/rsync.pas 把密码写到文件里
-
[root@data-server ~]#chmod 600 /etc/rsync.pas 给其权限只让管理员访问
-
[root@data-server ~]##rsync --password-file=/etc/rsync.pas -a /etc/networks rsyncuser@10.0.0.101::backup #非交互式推共享目录 手动测试推送
-
# 把本地数据推送到服务端 rsync --password-file=/etc/rsync.pas -av /data/www/ rsyncuser@10.0.0.101::backup # 从服务端拉取到本地 rsync --password-file=/etc/rsync.pas -av rsyncuser@10.0.0.101::backup /local/restore/ 手动备份(SSH方式) rsync -avP root@10.0.0.100:/data/mysql_backup/ /backup/mysql/ 手动备份(daemon方式) rsync --password-file=/etc/rsync.pas -avP /data/ rsyncuser@10.0.0.101::backup 严格双向同步(删除多余文件) rsync -av --delete /source/ /dest/ 排除日志文件 rsync -av --exclude '*.log' --exclude 'cache/' /data/ /backup/ 限速同步(不占满带宽) rsync -av --bwlimit=10240 /data/ root@10.0.0.100:/backup/问题 可能原因 解决方法 rsync: command not found没装rsync apt/yum install rsyncconnection refuseddaemon没启动或端口被拦 systemctl start rsync,检查防火墙@ERROR: auth failed密码错误 检查 /etc/rsync.pas和客户端密码@ERROR: Unknown module模块名写错 rsync rsyncuser@IP::查看可用模块password file must be owned by root密码文件权限不对 chmod 600 /etc/rsync.pas定时任务没执行 cron服务没启动 systemctl enable --now cron
sersync 实时同步(自动触发)
-
sersync 监控本地目录,一旦有变化,立即调用
rsync推送到远程 rsync-daemon 服务端。 -
需要先配好 daemon 方式的接收端
-
tar xf sersync2.5.4_64bit_binary_stable_final.tar.gz -C /usr/local/
-
[root@data-server ~]#cd /usr/local/
-
[root@data-server local]#mv GNU-Linux-x86/ sersync
-
[root@data-server ~]#ln -s /usr/local/serync/sersync2 /usr/bin/ #创建软连接
-
servync2 -h #查看相关命令参数
-
[root@data-server sersync2]#vim confxml.xml #复制粘贴 配置相关
<?xml version="1.0" encoding="ISO-8859-1"?>
<head version="2.5">
<host hostip="localhost" port="8008"></host>
<debug start="false"/>
<fileSystem xfs="false"/>
<filter start="false">
<exclude expression="(.*)\.svn"></exclude>
<exclude expression="(.*)\.gz"></exclude>
<exclude expression="^info/*"></exclude>
<exclude expression="^static/*"></exclude>
</filter>
<inotify>
<delete start="true"/>
<createFolder start="true"/>
<createFile start="true"/>
<closeWrite start="true"/>
<moveFrom start="true"/>
<moveTo start="true"/>
<attrib start="true"/>
<modify start="true"/>
</inotify>
<sersync>
<localpath watch="/data/www/"> #数据
<remote ip="10.0.0.106" name="backup"/> #iD号
<!--<remote ip="192.168.8.39" name="tongbu"/>-->
<!--<remote ip="192.168.8.40" name="tongbu"/>-->
</localpath>
<rsync>
<commonParams params="-artuz"/>
<auth start="true" users="rsyncuser" passwordfile="/etc/rsync.pas"/> #密码文件
<userDefinedPort start="false" port="874"/><!-- port=874 -->
<timeout start="false" time="100"/><!-- timeout=100 -->
<ssh start="false"/>
</rsync>
<failLog path="/tmp/rsync_fail_log.sh" timeToExecute="60"/><!--default every 60mins execute once-->
<crontab start="false" schedule="600"><!--600mins-->
<crontabfilter start="false">
<exclude expression="*.php"></exclude>
<exclude expression="info/*"></exclude>
</crontabfilter>
</crontab>
<plugin start="false" name="command"/>
</sersync>
<plugin name="command">
<param prefix="/bin/sh" suffix="" ignoreError="true"/> <!--prefix /opt/tongbu/mmm.sh suffix-->
<filter start="false">
<include expression="(.*)\.php"/>
<include expression="(.*)\.sh"/>
</filter>
</plugin>
<plugin name="socket">
<localpath watch="/opt/tongbu">
<deshost ip="192.168.138.20" port="8009"/>
</localpath>
</plugin>
<plugin name="refreshCDN">
<localpath watch="/data0/htdocs/cms.xoyo.com/site/">
<cdninfo domainname="ccms.chinacache.com" port="80" username="xxxx" passwd="xxxx"/>
<sendurl base="http://pic.xoyo.com/cms"/>
<regexurl regex="false" match="cms.xoyo.com/site([/a-zA-Z0-9]*).xoyo.com/images"/>
</localpath>
</plugin>
</head>
-
[root@data-server ~]#mkdir /data/www/ -p 创建指定文件夹将来存放ns数据
-
[root@data-server ~]#echo 123456 > /etc/rsync.pas 创建密码文件改期权限600
-
[root@data-server ~]#chmod +x /etc/rsync.pas
-
[root@data-server ~]#screen 开启后台
-
[root@data-server sersync2]#./sersync2 -dro ./confxml.xml #以后台守护进程方式运行
实战演练实现LAMP架构的电商网站MySQL主从和数据实时同步

- [root@mysql-master ~]# 3 mysql 主
- [root@mysql-slave ~]# 4 mysql 从
- [root@data-server ~]# 5 server主
- [root@backup-server ~]# 6 server备份
1 和2是客户端 [root@ubuntu2004 ~]# 1
1 在3和4安装mysql
2 集体更新apt update
3 在3和4上的vim/etc/my.cof下添加
- default_authentication_plugin=mysql_native_password 旧密码
- gtid_mode=ON
- enforce_gtid_consistency=ON
4 重启systemctl restart mysqld
5 创建授权
- [root@mysql-master ~]# mysql -p123456
- mysql> create user repluser@'10.0.0.%' identified by '123456';
- mysql> grant replication slave on *.* to repluser@'10.0.0.%';
- 6 在4上mysql -p123456里执行
-
change master to MASTER_HOST = '10.0.0.103',MASTER_USER='repluser',MASTER_PASSWORD='123456',MASTER_PORT=3306,MASTER_AUTO_POSITION=1; - start slave;
- show slave status \G; 主从完成
6 测试
- mysql> create database shpxo;
- mysql> create user shopxo@'10.0.0.%' identified by '123456';
- mysql> grant all on shopxo.* to shopxo@'10.0.0.%';
- 另一台机器查看 mysql> show databases;
7 在5上apt install nfs-server rsync 6上安装reync
8 在1和2上执行apt install nfs-common -y
9 在6上的vim /etc/rsyncd.conf
uid = root #以哪个用户来访问共享目录,将之指定为生成的文件所有者,默认为nobody
gid = root #默认为nobody,Ubuntu中为nogroup (组指定为root)
max connections = 0 #最大连接数0不限制
ignore errors #忽略错误
exclude = lost+found/ #排除不想同步的文件夹
log file = /var/log/rsyncd.log #生成的日志放在那里
pid file = /var/run/rsyncd.pid #pid文件放在哪里
lock file = /var/run/rsyncd.lock #锁文件放在那里
reverse lookup = no #是否做反向解析
#hosts allow = 10.0.0.0/24 #限制网段谁能连,不写都能连
[backup] #共享出来的标识,对外发部的名称
path = /data/backup/ #实际路径
comment = backup dir
read only = no #默认是yes,即只读 设置可读可写
auth users = rsyncuser #验证账号,必须是这个用户名,切验证密码在能连接
secrets file = /etc/rsync.pas #验证密码放在单独文件里
- [root@backup-server ~]#echo "rsyncuser:123456" > /etc/rsync.pas
- [root@backup-server ~]#chmod 600 /etc/rsync.pas 密码文件其权限
- [root@backup-server ~]#mkdir /data/backup/ -p 目录文件
- [root@backup-server ~]#systemctl restart rsync.service
- [root@backup-server ~]#ss -ntl 查看873口 完成测试
- 在5上[root@data-server ~]#rsync /etc/hosts rsyncuser@10.0.0.106::backup
- [root@backup-server ~]#ll /data/backup/
在5上解压 tar xf sersync2.5.4_64bit_binary_stable_final.tar.gz -C /usr/local/
- [root@data-server ~]#cd /usr/local/
- [root@data-server local]#mv GNU-Linux-x86/ sersync
- [root@data-server ~]#ln -s /usr/local/serync/sersync2 /usr/bin/ #创建软连接
- servync2 -h #查看相关命令参数
- [root@data-server sersync2]#vim confxml.xml #复制粘贴 配置相关
<?xml version="1.0" encoding="ISO-8859-1"?>
<head version="2.5">
<host hostip="localhost" port="8008"></host>
<debug start="false"/>
<fileSystem xfs="false"/>
<filter start="false">
<exclude expression="(.*)\.svn"></exclude>
<exclude expression="(.*)\.gz"></exclude>
<exclude expression="^info/*"></exclude>
<exclude expression="^static/*"></exclude>
</filter>
<inotify>
<delete start="true"/>
<createFolder start="true"/>
<createFile start="true"/>
<closeWrite start="true"/>
<moveFrom start="true"/>
<moveTo start="true"/>
<attrib start="true"/>
<modify start="true"/>
</inotify>
<sersync>
<localpath watch="/data/www/"> #数据
<remote ip="10.0.0.106" name="backup"/> #iD号
<!--<remote ip="192.168.8.39" name="tongbu"/>-->
<!--<remote ip="192.168.8.40" name="tongbu"/>-->
</localpath>
<rsync>
<commonParams params="-artuz"/>
<auth start="true" users="rsyncuser" passwordfile="/etc/rsync.pas"/> #密码文件
<userDefinedPort start="false" port="874"/><!-- port=874 -->
<timeout start="false" time="100"/><!-- timeout=100 -->
<ssh start="false"/>
</rsync>
<failLog path="/tmp/rsync_fail_log.sh" timeToExecute="60"/><!--default every 60mins execute once-->
<crontab start="false" schedule="600"><!--600mins-->
<crontabfilter start="false">
<exclude expression="*.php"></exclude>
<exclude expression="info/*"></exclude>
</crontabfilter>
</crontab>
<plugin start="false" name="command"/>
</sersync>
<plugin name="command">
<param prefix="/bin/sh" suffix="" ignoreError="true"/> <!--prefix /opt/tongbu/mmm.sh suffix-->
<filter start="false">
<include expression="(.*)\.php"/>
<include expression="(.*)\.sh"/>
</filter>
</plugin>
<plugin name="socket">
<localpath watch="/opt/tongbu">
<deshost ip="192.168.138.20" port="8009"/>
</localpath>
</plugin>
<plugin name="refreshCDN">
<localpath watch="/data0/htdocs/cms.xoyo.com/site/">
<cdninfo domainname="ccms.chinacache.com" port="80" username="xxxx" passwd="xxxx"/>
<sendurl base="http://pic.xoyo.com/cms"/>
<regexurl regex="false" match="cms.xoyo.com/site([/a-zA-Z0-9]*).xoyo.com/images"/>
</localpath>
</plugin>
</head>
- [root@data-server ~]#mkdir /data/www/ -p 创建指定文件夹将来存放ns数据
- [root@data-server ~]#echo 123456 > /etc/rsync.pas 创建密码文件改期权限600
- [root@data-server ~]#chmod +x /etc/rsync.pas
- [root@data-server ~]#screen 开启后台
- [root@data-server sersync2]#./sersync2 -dro ./confxml.xml #以后台守护进程方式运行
四台机器已经做完
实现 LAMP应用类京东电商网站 shopxo-v2.2.8
10 在1和2上安装相关包apt -y install apache2 php7.4-fpm libapache2-mod-php7.4 php7.4-mysql php7.4-json php7.4-xml php7.4-mbstring php7.4-zip php7.4-gd php7.4-curl
- [root@ubuntu2004 ~]#unzip shopxo-v2.3.0.zip 解开shopxo
- [root@ubuntu2004 ~]#rm -f /var/www/html/* 把文件删干净烤过去
- [root@ubuntu2004 ~]#mv shopxo-v2.3.0/* /var/www/html/
- 在100上安装DNS指向101
- [root@ubuntu2004 ~]#systemctl restart apache2 php7.4-fpm.service 在101重启
- [root@ubuntu2004 ~]#chown -R www-data. /var/www/html 改期权限

- mysql> flush privileges; 登不上刷新权限
- mysql> create user shop@'10.0.0.%' identified by '123456'; 或者在创建一个
- mysql> grant all on *.* to shop@'10.0.0.%'; 给其权限
在2上apt -y install apache2 php7.4-fpm libapache2-mod-php7.4 php7.4-mysql php7.4-json php7.4-xml php7.4-mbstring php7.4-zip php7.4-gd php7.4-curl
- [root@ubuntu2004 ~]#systemctl restart apache2 php7.4-fpm.service
- [root@ubuntu2004 ~]#scp shopxo-v2.3.0.zip 10.0.0.102: 从1把安装包穿在2上
- unzip shopxo-v2.3.0.zip 解开
- [root@ubuntu2004 ~]#mv shopxo-v2.3.0/* /var/www/html/
- [root@ubuntu2004 ~]#chown -R www-data. /var/www/html/ 授权
- [root@ubuntu2004 ~]#rm -f /var/www/html/index.html 其权限太高删除后就可以正常访问
在100里面vim /etc/bind/wang.org.zone 添加进去
- www A 10.0.0.102
- [root@ubuntu2004 ~]#rndc reload 重新加载
在101上执行
在1上scp -r /var/www/html/public/static/upload/* 10.0.0.105:/data/www/ 把东西传到5上 (挂在共享用)
#服务器
[root@ubuntu2004 ~]#apt install nfs-kernel-server 装个nfs在5上
[root@ubuntu2004 ~]#systemctl status nfs-server
- [root@data-server www]#vim /etc/exports 在5上在里面加上权限
/data/www/ 10.0.0.0/24(rw,all_squash,anonuid=33,anongid=33)
- [root@data-server www]#exportfs -r 在5上启动下
- [root@data-server www]#exportfs v
- [root@data-server www]#systemctl status nfs-server.service 在5上查看是否启动成功
- [root@ubuntu2004 upload]#vim /etc/fstab 把文件写系统里
- 10.0.0.105:/data/www/ /var/www/html/public/static/upload/ nfs _netdev 0 0
- [root@ubuntu2004 html]#mv public/static/upload/* /opt/ 把里面原有的文件移出来
- [root@ubuntu2004 html]#mount -a 挂一下
在2上重复挂在加载
[root@ubuntu2004 upload]#vim /etc/fstab 把文件写系统里
10.0.0.105:/data/www/ /var/www/html/public/static/upload/ nfs _netdev 0 0
[root@ubuntu2004 html]#mv public/static/upload/* /opt/ 把里面原有的文件移出来
[root@ubuntu2004 html]#mount -a 挂一下
[root@ubuntu2004 ~]#ls /var/www/html/public/static/upload/ 查看是否成功
[root@data-server ~]#chown -R www-data. /data/www/ 在5加上给其2的权限

完
更多推荐

所有评论(0)