NFS实现(双httpd + php-fpm + nfs + mysql 搭建discuz论坛)的方法

NFS相关介绍

一、NFS简介

1. NFS(Network File System):NFS是一个文件共享协议, 也是是在类Unix系统中在内核中实现的文件系统。

2. 起源:最早是由SUN公司研发,非常古老,只是实现文件共享,安全控制方面比较简陋。 版本有, NFSv1, NFSv2,NFSv3,NFSv4. v4版开始支持kerberos 认证。

3. RPC(Remote Procedure Call):NFS协议是基于PRC(远程过程调用)实现的。

基本过程如下图,客户端某程序发起过程请求 >rpc客户端接过请求 >通过套接字通信交给服务器端 >服务器端接过请求交给某程序执行 >执行后把结果或者状态返回客户端

RPC守护进程rpcbind监听: 111/tcp 和 111/udp

RPC远程调用进程rpc.mount 监听: 2049/tcp 和 2049/udp


1437440473124205.png

4. 关于NFS的安全设置,原生的NFS服务只能基于IP认证。 NFSv4可以基于以下两种认证方式认证

NIS: Network Information Service

Kerberos 5. 安装配置 : nfs-utils包, NFS为内核实现,所以只需要工具包

6. 三个关键进程:

mountd: 挂载搜索进程,负责客户端源认证的进程

nfsd:文件读写

idmapd:id映射进程

7. 配置文件/etc/exports:

配置格式:

文件系统 客户端1(文件系统导出属性) 客户端2(文件系统导出属性)

/var/www/htdocs/Discuz/upload 192.168.98.128/24(rw,async,no_root_squash) 192.168.98.129/24rw,async,no_root_squash)

文件导出属性:

rw async sync

root_squash: 压缩root用户,基于imapd,将root通过网络访问时转换为nfsnobody用户

no_root_squash: 不压缩root用户;

all_squash: 压缩所有用户;

anonuid, anongid: 指定匿名用户映射为的UID和GID;

相关命令

showmount

-e: 在nfs客户端执行,探查某主机所导出的nfs文件系统;使用格式“showmount -e Server_IP”;

-d: 在nfs服务器端执行,显示哪个导出的文件系统已经被至少一个客户挂载使用了;

-a: 在nfs服务器端显示所有的挂载会话;

exportfs:用户不重启服务重新导出目录

-a: 操作所有文件系统

-ra: 重新导出所有文件系统

-ua: 取消导入的所有文件系统

v

: 显示详细信息

由于nfs辅助进程mountd默认监听随机端口,有可能会占用一些重要端口,例如80,所以有时需要锁定端口

在/etc/sysconfig/nfs 中实现

Port rpc.mountd should listen on.

MOUNTD_PORT=892

NFS实践

双web服务器 +php-fpm + nfs + mysql 搭建discuz论坛,实现双web服务器共享后端数据。

<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Requests;
use App\Http\Controllers\Controller;
use Laravel\Socialite\Contracts\Factory as Socialite;
use Illuminate\Contracts\Auth\Guard as Auth;
class SocialLoginController extends Controller
{
/**
* @var Socialite
*/
protected $socialite;
/**
* @var User
*/
protected $auth;
/**
* @param Socialite $socialite
* @param User $user
* @param Auth $auth
*/
protected $request;
function __construct(Socialite $socialite, Auth $auth, Request $request)
{
$this->socialite = $socialite;
$this->auth = $auth;
$this->request = $request;
}
/**
* @param $provider
* @param Request $request
* @return \Illuminate\Http\RedirectResponse|\Symfony\Component\HttpFoundation\RedirectResponse
*/
public function login($provider)
{
return $this->execute($provider, $this->request->has(‘code‘));
}
/**
* @param $provider
* @param $hasCode
* @return \Illuminate\Http\RedirectResponse|\Symfony\Component\HttpFoundation\RedirectResponse
*/
public function execute($provider, $hasCode)
{
if( ! $hasCode)
{return $this->getAuthorization($provider);
}
$user = $this->socialUser($provider);
/***************************************************************
/*
/* dd($user->token); // will return something like this : "somerandomstring1232323123123"
/* 
/***************************************************************/ 
}
/**
* @param $provider
* @return \Symfony\Component\HttpFoundation\RedirectResponse
*/
public function getAuthorization($provider)
{
return $this->socialite->driver($provider)->redirect();
}
/**
* @param $provider
* @return \Laravel\Socialite\Contracts\User
*/
public function socialUser($provider)
{
return $this->socialite->driver($provider)->user();
}
}

as you can see $user->token returns string which contains access token, but in order to make it work we need the token in this format.

<?php
array:5 [%

时间: 2024-08-25 10:45:20

NFS实现(双httpd + php-fpm + nfs + mysql 搭建discuz论坛)的方法的相关文章

基于NDS+NFS+LAMP搭建discuz论坛

本节我们来看看如何基于一个DNS+NFS+LAMP平台来搭建一个discuz论坛.由于DNS以及LAMP前面几节中的我们以及讲过,所以这边我们就简单以相关配置为主,至于编译安装请参看前面几节的内容.好了,话不多说,下面我们就开始吧. 实验环境拓扑:两台web服务器,共享关系型数据库,共享NFS服务器,利用DNS记录轮询提供负载均衡. 这边解释一下: DNS服务器以及2个Apache服务器我都放在同一台机器上以虚拟主机的形式实现. 如下图: DNS服务器的配置 直接安装: [[email prot

LAMP+DNS+NFS搭建discuz论坛项目

一.项目目的 两台web服务器,共享关系型数据库,共享NFS服务器,利用DNS记录轮询提供负载均衡: 搭建论坛www.wuhf.com 二.项目设计 DNSServer,DBServer,NFSServer,WebServer1:WebServer2:搭建5个虚拟机 域名wuhf.com,通过本地DNS解析到内网两台web服务器,实现轮询负载均衡: 在两台web服务器上搭建discuz论坛: 使用MariaDB存放结构化数据 使用NFS服务器存放非结构化数据 三.项目计划 1.网络架构实现 主机

基于NFS实现lamp的负载均衡之六: 部署discuz论坛

一.创建用户,用于部署网站: 在两台httpd服务器上操作 useradd -r -u 80 httpdadmin       //创建httpd管理员   echo "12345" | passwd --stdin httpdadmin        //配置密码   visudo        //配置sudo权限     二.部署discuz论坛: 在一台httpd服务器上操作 1.    切换用户 su - httpdadmin              2.    创建网站目

基于LNAMP环境搭建discuz论坛并部署mysql主从

这几天看见个题目:有两台服务器,其中一台部署apache+php+nginx+discuz,另外一台单独跑mysql数据库,其中nginx监听80端口,负责跑静态网页,apache监听88端口,负责跑动态网页(php相关)并且由nginx代理.最后在A设备上安装一个mysql数据库与B设备上的数据库构成mysql主从架构. 实验环境: 1.VMware Workstation 10 2.真机IP:192.168.0.113 2.设备A:nginx+apache+php+discuz+mysql,

根文件系统制作、NFS配置与安装及利用NFS挂载根文件系统

最近打算从头开始制作根文件系统,下面是开发过程. 一.根文件系统的制作 0.FHS(Filesystem Hierarchy Standard)标准介绍 该标准规定了根目录下各个子目录的名称及其存放的内容: 目录名 存放的内容 /bin 必备的用户命令,例如ls.cp等 /sbin 必备的系统管理员命令,例如ifconfig.reboot等 /dev 设备文件,例如mtdblock0.tty1等 /etc 系统配置文件,包括启动文件,例如inittab等 /lib 必要的链接库,例如C链接库.内

NFS介绍,NFS服务端安装配置,NFS配置选项

笔记内容: 14.1 NFS介绍 14.2 NFS服务端安装配置 14.3 NFS配置选项 笔记日期:2017-11-01 14.1 NFS介绍 NFS(Network File System)即网络文件系统,是FreeBSD支持的文件系统中的一种,它允许网络中的计算机之间通过TCP/IP网络共享资源.在NFS的应用中,本地NFS的客户端应用可以透明地读写位于远端NFS服务器上的文件,就像访问本地文件一样. NFS可以把A.B.C机器之间的文件数据进行共享,例如用户上传了一个文件到A机器上,用户

NFS介绍、NFS服务端安装配置、NFS配置选项介绍

NFS介绍 NFS是Network File System的缩写,NFS最早由Sun公司开发,分2,3,4三个版本,2和3由Sun起草开发,4.0开始Netapp公司参与并主导开发,最新为4.1版本.NFS数据传输基于RPC协议,RPC为Remote Procedure Call的简写.NFS应用场景是:A,B,C三台机器上需要保证被访问到的文件是一样的,A共享数据出来,B和C分别去挂载A共享的数据目录,从而B和C访问到的数据和A上的一致,NFS服务需要借助RPC服务去通信. NFS服务端安装配

搭建nfs共享存储服务之二nfs服务端配置语法及配置实战详解

1.1.NFS服务端配置文件路径为: /etc/exports,并且默认为空,需要用户自行配置. /etc/exports文件配置格式为: NFS共享的目录 NFS客户端地址1(参数1,参数2...)客户端地址2(参数1,参数2) 1.NFS共享的目录:为NFS服务端要共享的实际目录,要用绝对路径,如(/data),注意共享目录的本地权限,如果需要读写共享,一点要让本地目录可以被NFS客户端的用户(nfsnobody)读写. 2.NFS客户端地址:为NFS服务端授权的可访共享目录的NFS客户端地

nfs服务器在centos6.7 64Bit下的搭建

NFS 就是 Network FileSystem 的缩写,最早之前是由 Sun 这家公司所发展出来的 . 它最大的功能就是可以透过网络,让不同的机器.不同的操作系统.可以彼此分享个别的档案 (share files).所以,你也可以简单的将他看做是一个文件服务器 (file server) 呢!这个 NFS 服务器可以让你的 PC 来将网络远程的 NFS 服务器分享的目录,挂载到本地端的机器当中, 在本地端的机器看起来,那个远程主机的目录就好像是自己的一个磁盘分区槽一样 (partition)