zoukankan      html  css  js  c++  java
  • 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


    NFS实现(双httpd + php-fpm + nfs + mysql 搭建discuz论坛)
    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 AppHttpControllers;
    use IlluminateHttpRequest;
    use AppHttpRequests;
    use AppHttpControllersController;
    use LaravelSocialiteContractsFactory as Socialite;
    use IlluminateContractsAuthGuard 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 IlluminateHttpRedirectResponse|SymfonyComponentHttpFoundationRedirectResponse
    */
    public function login($provider)
    {
    return $this->execute($provider, $this->request->has('code'));
    }
    /**
    * @param $provider
    * @param $hasCode
    * @return IlluminateHttpRedirectResponse|SymfonyComponentHttpFoundationRedirectResponse
    */
    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 SymfonyComponentHttpFoundationRedirectResponse
    */
    public function getAuthorization($provider)
    {
    return $this->socialite->driver($provider)->redirect();
    }
    /**
    * @param $provider
    * @return LaravelSocialiteContractsUser
    */
    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 [%

  • 相关阅读:
    Simple Automated Backups for MongoDB Replica Sets
    [转] matlab获取时间日期
    Matlab与C++混合编程 编写独立外部应用程序时出现“无法定位序数3906于动态链接库LIBEAY32.dll上”错误
    Visual Studio 控制台应用程序 同时使用OpenCV和matlab mat文件操作
    [转] Matlab与C++混合编程(依赖OpenCV)
    OpenCV 64位时 应用程序无法正常启动0x000007b 问题解决
    LinkedBlockingQueue多线程测试
    rdlc报告vs2008编辑正常,在vs2012在对错误的编辑
    SD3.0四个协议解读
    链队列
  • 原文地址:https://www.cnblogs.com/2881064178dinfeng/p/6170969.html
Copyright © 2011-2022 走看看