LAMP架构之NFS

需求分析

前端需支持更大的访问量,单台Web服务器已无法满足需求了,则需扩容Web服务器;

虽然动态内容可交由后端的PHP服务器执行,但静态页面还需要Web服务器自己解析,那是否意味着多台Web服务器都需要在各自的系统中都存有一份静态页面数据呢?

其实这样也不是不可以,毕竟文件本地访问,速度还是有优势的,但这却涉及到多台Web服务器间内容的一致性问题,尤其是在上线新代码或修改Web配置文件时,即使是使用一些管理工具(如puppet),这种问题也不可避免;

那么如果能将静态页面集中存放,所有Web服务器都来集中地取文件,对于文件的一致性就有了保障,这个集中地就叫做“文件共享服务器”;

文件共享有多种方式,FTP,NFS,Samba等,而其中NFS作为网络文件系统,允许一个系统通过网络共享目录和文件,通过使用NFS,用户和程序可以像访问本地文件一样访问远端系统上的文件,这种近似访问本地文件系统的架构貌似很符合我们的需求,那我们就来试试吧!

架构优化

说明1:NFS服务安装在PHP服务器上,并将网站根目录共享出去,这样,虽然网站内容都在同一个目录,但静态内容会通过NFS由Web服务器读取,而动态内容则通过fcgi交由PHP服务器解析;

说明2:前端Web服务器在挂载NFS共享目录时,需先通过RPC调用机制获得NFS相关服务(如mountd)的端口号,然后再连接通信

RPC调用和NFS的基本原理图

NFS简介

NFS实现文件共享主要由以下3个组件配合完成:

  • nfsd:接受NFS客户端的请求服务

  • mountd:挂载守护进程,等待客户端的挂载请求,并完成来源认证

  • rpcbind:此服务允许NFS客户端查询被NFS服务使用的端口

监听端口:

  • NFS服务nfsd本身监听的端口是2049/tcp和2049/udp,但还会启动其它进程(如mountd,statd,rquotad等)以完成文件共享,这些进程的端口是不固定的;是每次NFS服务启动时向RPC服务注册的,RPC服务会随机分配未使用的端口

需安装程序:

  • rpcbind(一般系统自带,可不安装),nfs-utils

主要文件:

  • /etc/exports 主配置文件

  • /usr/sbin/exportfs
    维护NFS共享资源的指令,一般用于NFS服务器端

  • /usr/sbin/showmount
    查看NFS共享出来的目录资源,一般用于NFS客户端

  • /var/lib/nfs/xtab
    NFS的日志文件,主要记录曾经连入NFS服务器端的客户端信息

配置部署

NFS服务器配置

在PHP服务器上,安装好nfs-utils组件,并安装phpwind


mkdir /www/phpwind.com
unzip phpwind_v9.0_utf8.zip
cd phpwind_v9.0_utf8/upload
mv * /www/phpwind.com
cd /www/phpwind.com
chmod -R a+rw attachment conf data html src themes windid # 需配置这些目录具有写权限,否则安装会出现失败的

编辑NFS主配置文件


vi /etc/exports
/www/phpwind.com 172.16.251.0/24(rw,no_root_squash) # 配置共享目录为可读写,客户端root用户权限不压缩

启动服务

service nfs start

查看启动进程


ps -ef | grep "nfs\|rpc"

NFS客户端配置

这里的客户端就是前端的2台Web服务器,先挂载共享目录,然后测试其读写功能

在客户机上执行mount命令,它向服务器上的端口映射器发出一个RPC调用来获得服
务器上安装守护程序的端口号。客户和端口映射器交互既可以使用TCP也可以使用UDP,但
一般使用UDP。


showmount -e 172.16.251.163 # 查看NFS服务器共享出来的目录
mkdir /www/phpwind.com # 创建本地挂载目录,因为在httpd的虚拟主机配置中根目录就是配置的/www/phpwind.com
mount -t nfs 172.16.251.163:/www/phpwind.com /www/phpwind.com # 挂载在本地
mount # 查看是否以挂载成功

测试(以Web Server1为例)


# 核对Web服务器的虚拟主机配置
# vi /etc/httpd/extra/httpd-vhosts.conf
<VirtualHost *:80>
DocumentRoot "/www/phpwind.com"
ServerName phpwind.com
ServerAlias www.phpwind.com
ErrorLog "logs/phpwind.com-error_log"
CustomLog "logs/phpwind.com-access_log" common
ProxyRequests Off
ProxyPassMatch ^/(.*\.php)$ fcgi://172.16.251.163:9000/www/phpwind.com/$1
<Directory "/www/phpwind.com">
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
</VirtualHost>

安装测试

访问Web
Server1以安装,浏览器访问http://172.16.251.182,会直接跳转至http://172.16.251.182/install.php开始安装

在安装过程中,需填写MySQL数据库的信息,故还需在已有的MySQL中对于phpwind建立相应的数据库和用户,


create database phpwind; # 数据库名为phpwind
grant all privileges on phpwind.* to [email protected]‘172.16.%.%‘ identified by ‘phpwind123‘; # 可访问的用户名和密码分别是phpwind和phpwind123

安装并登录成功

访问测试

首先在Web Server1上发帖

然后在Web Server2上看帖

一切正常,说明前端Web服务器能正常访问NFS服务器,这样就实现了静态文件的集中存放了。

总结

虽然NFS可以实现文件共享的强大功能,节省前端Web服务器的磁盘空间,但NFS不适合大规模的访问场景下,在访问量不太大的情况下,作为图片服务器或者其他静态资源服务器还是挺不错的,总之,任何技术都要在适合的场景下才能发挥其最大的功用!

时间: 2024-08-09 13:16:43

LAMP架构之NFS的相关文章

LAMP架构之分离式-php-fpm

一.LAMP架构之分离式拓扑 二.架构说明 当客户端访问Web服务器时,Web服务器根据客户端访问的资源进行判断,如果是静态的页面Web服务器就直接返回给给客户端,如果是动态的页面,Web服务器就请求PHP服务器进行解析,在解析过程有需要MySQL数据的PHP服务器就请求MySQL服务器,PHP服务器解析完后封装发送给Web服务器,Webt器在封装发送给客户端. 三.架构规划 主机 网卡1 网卡2 备注 客户端 172.16.9.6 - - Web服务器 172.16.9.21 10.0.9.2

小型LAMP架构搭建

LAMP架构实现 构建上图所示lamp架构 主机类型 主机名 系统 IP Client Clinet Fedora30 192.168.73.153 DNS DNS CentOS7.6 192.168.73.101 HTTPD+PHP HTTPD CentOS7.6 192.168.73.110 HTTPD+PHP HTTPD2 CentOS7.6 192.168.73.111 NFS nfs CentOS7.6 192.168.73.120 MySQL Master CentOS7.6 192

Centos7.3 部署 LAMP 架构动静分离

一.LAMP动静分离当需要搭建一个高效的web架构时,采用动静分离无疑是最好的选择,这篇博文将写下来LAMP的动静分离部署方式. 所谓LAMP?LAMP架构是目前最成熟的企业网站应用模式之一,指的是协同工作的一整套系统和相关软件,能够提供动态web站点服务及其应用开发环境.与之并肩的还有LNMP.LTMP等,LAMP说白了就是Linux操作系统上安装Apache网站服务,构建php/perl/Python运行环境来连接mysql数据库,四个组件合起来就简称"LAMP". LNMP只不过

利用lamp架构搭建Discuz论坛,并实现对数据库的高可用

lamp架构=LAMP指的Linux(操作系统).Apache(HTTP 服务器),MySQL(数据库软件) 和PHP(有时也是指Perl或Python) 的第一个字母,一般用来建立web 服务器. #############源码安装php########### tar jxf php-5.6.20.tar.bz2 cd php-5.6.20 解决依赖性: yum install freetype-devel libmcrypt-2.5.8-9.el6.x86_64.rpm net-snmp-d

LAMP架构搭建+Discuz论坛搭建【weber出品必属精品】

一.     本机简介: 本机系统: CentOS-6.4-x86_64 主机名:oracle.ywb IP地址:192.168.146.129 二.     在Linux环境下安装Apache步骤 首先将准备好的文件通过PSCP发送至Linux的/Root/test/soft目录下 在windows下按住Ctrl+R,打开运行,输入CMD进入DOS命令行.在dos命令行中使用pscp –scp  命令将要上传的文件上传至Linux中. 上传成功后.我们总共要安装四个文件.第一个我们首先解压:a

部署LAMP架构及其应用

部署企业LAMP架构 (一)首先安装Apache服务,具体请见另一篇关于Apache的博文. (二)安装MySQL数据库,具体请见另一篇关于LNMP的博文. (三)构建PHP运行环境 1.安装PHP ~]# rpm -e php php-cli php-ldap php-common php-mysql --nodeps #将RPM方式安装的php及相关依赖包(如果已存在)卸载 ~]# rpm -ivh zlib-devel #安装光盘自带的支持压缩的依赖包 ~]# rpm -ivh libxm

LAMP架构搭建以及基于LAMP架构的主流论坛和博客搭建过程详解

了解网站架构的朋友都知道,现在很多网站的架构都是采用LAMP(Linux+Apache+Mysql/Mariadb+Php)的,至于LAMP架构本身我们就不做过于深入的探讨了,今天我给大家分享的是关于如何搭建LAMP构架,以及如何基于lamp架构去搭建目前国内比较流行的两大开源论坛(phpwind.discuz)一大开源博客(wordpress),通过这个过程也就能让大家明白我们经常上的论坛以及博客,包括包括我们访问的各个网站到底是如何工作起来的. 注意:为了方便给大家展示实验效果,我们就直接关

Linux之LAMP架构搭建配置

Linux之LAMP架构搭建配置 LAMP简介 LAMP定义指Linux(操作系统).ApacheHTTP 服务器,MySQL(有时也指MariaDB,数据库软件) 和PHP(有时也是指Perl或Python) 的第一个字母,一般用来建立web应用平台. 对于大流量.大并发量的网站系统架构来说,除了硬件上使用高性能的服务器.负载均衡.CDN 等之外,在软件架构上需要重点关注下面几个环节: 使用高性能的操作系统 (OS) . 高性能的网页服务器 (Web Server) .高性能的数据库(Data

【Linux】LAMP架构之以模块方式让php和httpd搭档工作

LAMP就是:Linux,Apache,Mysql,PHP的首字母缩写. 实验环境 Linux :CentOS-3 2.6.32-431.el6.x86_64 Apache:httpd-2.4.16.tar.gz Mysql :mysql-5.5.24.tar.gz PHP   :php-5.6.11.tar.bz2 安装顺序为:Apahce --> Mysql --> PHP 实验步骤 方便实验先关闭iptables和selinux [[email protected] ~]# servic