网站部署
# 1.安装apache和php
[root@web01 ~]# yum install -y httpd php
# 2.apache 和 nginx存放代码的地方:站点目录
[root@web01 ~]# rpm -ql httpd
[root@web01 ~]# ll /var/www/html
# 3.部署代码(代码上线)
[root@web01 ~]# cd /var/www/html
[root@web01 html]# rz kaoshi_modify.zip
[root@web01 html]# unzip kaoshi_modify.zip
# 4.启动apache
[root@web01 html]# systemctl start httpd
[root@web01 html]# systemctl enable httpd
# 5.修改站点目录的权限
[root@web01 html]# chown -R apache.apache /var/www/html/
# 6.创建用户上传数据目录
[root@web01 ~]# #mkdir /var/www/html/user_data
# 7.授权
[root@web01 ~]# #chown apache.apache /var/www/html/user_data/
NFS基本概述
NFS是Network File System的缩写及网络文件系统。 NFS 主要功能是通过局域网络让不同的主机系统之间可以共享文件或目录。NFS 系统和 Windows 网络共享、网络驱动器类似*,* 只不过 windows 用于局域网*, NFS用于企业集群架构中,如果是大型网站,* 会用到更复杂的布式文件系统 FastDFS,glusterfs,HDFS
为什么要用共享目录
-
1.实现多台服务器之间数据共享
-
2.实现多台服务器之间数据一致
有NFS共享存储时
1.A用户上传图片无论被负载均衡调度至WEB1还是WEB2, 最终数据都被写入至共享存储
2.B用户访问A用户上传图片时,无论调度至WEB1还是WEB2,最终都会上共享存储访问对应的文件,这样就可以访问到资源了
NFS工作原理
NFS是通过远程挂载的形式
1.用户进程访问NFS客户端,使用不同的函数对数据进行处理
2.NFS客户端通过TCP/IP的方式传递给NFS服务端。**
3.NFS服务端接收到请求后,会先调用portmap进程进行端口映射。**
4.nfsd进程用于判断NFS客户端是否拥有权限连接NFS服务端。**
5.Rpc.mount进程判断客户端是否有对应的权限进行验证。
6.idmap进程实现用户映射和压缩
7.最后NFS服务端会将对应请求的函数转换为本地能识别的命令,传递至内核,由内核驱动硬件。
NFS的部署
环境部署
主机名 | WanIP | LanIP | 角色 | 应用 |
---|---|---|---|---|
nfs | 10.0.0.31 | 172.16.1.31 | NFS服务端,提供共享目录的机器 (rsync的客户端 serync) | nfs-server、 rpc、sersync |
web01 | 10.0.0.7 | 172.16.1.7 | NFS客户端,用户上传数据的地方,挂载服务端的共享目录 | nfs-client、rpc |
web02 | 10.0.0.8 | 172.16.1.8 | NFS客户端,用户上传数据的地方,挂载服务端的共享目录 | nfs-client、rpc |
backup | 10.0.0.41 | 172.16.1.41 | NFS服务端的备胎,需要实时同步NFS的数据NFS的数据(rsync服务端) | nfs-server、rpc、rsync、/backup 数据备份、/data 数据同步 |
安装部署NFS(服务端)
## centos 6
# 1.安装nfs服务端
[root@nfs ~]# yum -y install nfs-utils rpcbind
# 启动服务
[root@localhost ~]# /etc/init.d/rpcbind start
[root@localhost ~]# /etc/init.d/nfs start
# 停止服务
[root@localhost ~]# /etc/init.d/rpcbind stop
[root@localhost ~]# /etc/init.d/nfs stop
## centos 7
# 1.安装nfs服务端
[root@nfs ~]# yum -y install nfs-utils
# 2.修改配置文件
[root@nfs ~]# vim /etc/exports
/web/data 172.16.1.0/24(rw,sync,all_squash)
# 3.启动服务
[root@nfs ~]# systemctl start nfs-server
[root@nfs ~]# systemctl start nfs
# 4.创建共享目录
[root@nfs ~]# mkdir /web/data -p
# 5.修改共享目录权限
[root@nfs ~]# chown -R nfsnobody.nfsnobody /web/data/
客户端操作
# 1.查看共享目录
[root@web01 ~]# showmount -e 172.16.1.31
Export list for 172.16.1.31:
/web/data 172.16.1.0/24
# 2.挂载命令
[root@web01 ~]# mount -t nfs 172.16.1.31:/web/data /var/www/html/
# 3.检查挂载
[root@web01 ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 19G 1.5G 18G 9% /
devtmpfs 476M 0 476M 0% /dev
tmpfs 487M 0 487M 0% /dev/shm
tmpfs 487M 7.7M 479M 2% /run
tmpfs 487M 0 487M 0% /sys/fs/cgroup
/dev/sda1 497M 120M 378M 25% /boot
tmpfs 98M 0 98M 0% /run/user/0
172.16.1.31:/web/data 19G 1.5G 18G 8% /var/www/html
开机自动挂载
# NFS排错是否配置文件加载成功
[root@nfs data]# cat /var/lib/nfs/etab
172.16.1.31:/web/data /var/www/html/user_data nfs
defaults 0 0
#在企业工作场景,通常情况NFS服务器共享的只是普通静态数据(图片、附件、视频),不需要执行suid、exec 等权限,挂载的这个文件系统只能作为数据存取之用,无法执行程序,对于客户端来讲增加了安全性。例如: 很多木马篡改站点文件都是由上传入口上传的程序到存储目录。然后执行的。
#通过mount -o指定挂载参数,禁止使用suid,exec,增加安全性能
[root@nfs-client ~]# mount -t nfs -o nosuid,noexec,nodev 172.16.1.31:/data /mnt
#通过mount -o指定挂载参数,禁止更新目录及文件时间戳挂载
[root@nfs-client ~]# mount -t nfs -o noatime,nodiratime 172.16.1.31:/data /mnt
NFS配置文件
/web/data 172.16.1.0/24(rw,sync,all_squash)
rw:可读可写
ro:只读
sync:数据同时同步到内存和磁盘上(同步)
async:数据先写入内存,然后再写入磁盘(异步)
root_squash:当NFS客户端以root管理员访问时,映射为NFS服务器的匿名用户(不常用)
no_root_squash:当NFS客户端以root管理员访问时,映射为NFS服务器的root管理员(不常用)
all_squash:无论NFS客户端使用什么账户访问,均映射为NFS服务器的匿名用户(常用)
no_all_squash:无论NFS客户端使用什么账户访问,都不进行压缩
anonuid:配置all_squash使用,指定NFS的用户UID,必须存在系统
anongid:配置all_squash使用,指定NFS的用户UID,必须存在系统
/web/data 172.16.1.0/24(rw,sync,anonuid=1000,anongid=1000,all_squash)