共计 1485 个字符,预计需要花费 4 分钟才能阅读完成。
NFS 介绍
NFS 为网络文件管理系统,它能够多台服务器直接相互访问文件,可以简单理解为 windows 系统中的文件共享功能,详细的介绍可以参阅 NFS 网络文件系统
安装服务
配置服务
我们假定实现两台服务器之间的文件共享, 便于理解, 我们这里给两台服务器分别取名为 SERVER_A(IP:10.0.0.1)和 SERVER_B(IP:10.0.0.2), 假定 SERVER_A 为存储资源的服务器
-
在配置之前, 我们需要设置一个用于 NFS 操作的用户, 这里我们直接设置为 nginx 的用户, 原因是网站在访问时, 用户为 nginx 服务的用户, 为了防止权限问题导致的异常情况, 使 NFS 服务和 nginx 服务用户一致即可, 同时, 在所有使用 NFS 服务的服务器上, 都应该存在这个用户和用户组, 即每台服务器的这个用户所属用户 ID 和所属用户组 ID 相同。
例如:
在 SERVER_A 上 nginx 用户名和用户组名为 www, 用户 ID 为 501, 用户组 ID 为 501, 那么在其他服务器上, 也应该存在一个用户 ID 为 501, 用户组 ID 为 501 的 www 用户和用户组。
这样, 每台服务器通过 NFS 在 SERVER_A 上的写入文件时, 文件所属角色为 www:www, 其他服务器通过 web 网页访问创建的文件, 在 SERVER_A 依然有权限通过 web 网页进行操作 -
配置 NFS 用户
注意: 每台服务器都需要设置- 查看 nginx 用户
通过查看 nginx 的配置文件 nginx.conf 中的 user 后面跟的信息
如后面为 www www 表示 nginx 的用户为 www, 用户组为 www,
以下均使用 www:www 举例说明 - 查看 nginx 用户 ID 和用户组 ID
- 查看 nginx 用户
-
配置共享文件(在 SERVER_A 操作)
-
NFS 服务的配置文件为 /etc/exports
-
配置内容格式:
[客户端 选项(访问权限, 用户映射, 其他)]
使用以下命令查看配置帮助man exports
-
配置举例
我们在 SERVER_A 的根目录创建一个文件夹储存网站的 session 文件, 执行以下两条命令mkdir /sessions chmod 1777 /sessions
执行完毕后, 会在根目录生成 sessions 目录, 且权限为 1777
现在演示配置将 SERVER_A 的 /sessions 目录共享给 SERVER_B
编辑 /etc/exportsvim /etc/exports
输入如下内容
解释:
将 SERVER_A 的 /sessions 目录共享给 SERVER_B, 且 SERVER_B 拥有读写权限, 并指定 用户 ID 为 501, 用户组 ID 为 501, 此处的 501, 是通过 配置 NFS 用户 得到的 ID
-
-
启动服务 (在 SERVER_A 操作)
使用 systemctl 命令启动systemctl start rpcbind.service systemctl start nfs-server.service
-
挂载(在 SERVER_B 操作)
自启服务和自动挂载
配置完成后, 我们需要配置 NFS 服务自启
使用 systemctl 命令
分别在两台服务器上执行
systemctl enable rpcbind.service
systemctl enable nfs-server.service
配置 SERVER_B 的自动挂载
编辑 /etc/rc.local
如果 rc.local 没有执行权限, 需要设置执行权限
chmod +x /etc/rc.d/rc.local
以上步骤, 创建了 sessions 目录, 并设置了共享, 设置 session 共享时, 只需要将 php.ini 中的 session 储存方式改为文件储存, 并且保存目录配置为 /sessions, 这样即可使服务器之间 session 共享
标签:linux
nfs
文章来源: Linux 配置 NFS 文件共享