NFS服务NFS工作过程 日志服务
NFS:Network File System(网络文件系统),是一种基于TCP/IP传输的网络文件系统协议,最早由SUN公司研发。目前使用的NFS 4.X版本
通过使用NFS协议,客户机可以像访问本地目录一样,访问远程服务器中的共享资源。
1.当在NFS服务器设置好一个共享目录/home/public后,
2.其他的有权访问NFS服务器的NFS客户端就可以将这个目录挂载到自己文件系统的某个挂载点,这个挂载点可以自己定义,
如上图客户端A与客户端B挂载的目录就不相同。并且挂载好后我们在本地能够看到服务端/home/public的所有数据。
3.如果服务器端配置的客户端只读,那么客户端就只能够只读。如果配置读写,客户端就能够进行读写。挂载后,NFS客户端查看磁盘信息命令:df –h。
4. NFS本身的服务并没有提供数据传递的协议,而是通过使用RPC(远程过程调用 Remote Procedure Call)来实现远程到本地的过程映射。当NFS启动后,会随机的使用一些端口,NFS就会向RPC注册这些端口,RPC记录下这些端口,同时开启111端口监听请求,一旦有请求,就告诉客户端:服务端所使用的端口,然后建立client端和server端端口的连接以进行数据的传输。因此,在启动nfs之前,首先要确保rpc服务启动。
工作过程
1、首先服务器端启动RPC服务,并开启111端口
2、服务器端启动NFS服务,并向RPC注册端口信息
3、客户端启动RPC(portmap服务),向服务端的RPC(portmap)服务请求服务端的NFS端口
4、服务端的RPC(portmap)服务反馈NFS端口信息给客户端。
5、客户端通过获取的NFS端口来建立和服务端的NFS连接并进行数据的传输。
2.NFS缺点 主要软件包 rpcbind nfs-utils 和端口守护进程nsfd
1、rpcbind: RPC主程序负责NFS的端口映射工作,监听在111端口,程序名为portmapper,可通过rpcinfo命令查看端口映射情况,如:rpcinfo -p localhost
2、nfs-utils: NFS主程序:就是提供 rpc.nfsd 及 rpc.mountd 这两个 NFS daemons 与其他相关 documents 与说明文件、执行文件等的软件,是 NFS 服务所需要的主要软件。
3、进程说明
mountd:是nfs服务的认证服务的守护进程,client在收到返回的真正端口时,就会去连接mountd,认证取得令牌。
nfsd:nfs的守护进程,负责接收到用户的调用请求后与内核发出请求并得到调用结果响应给用户,工作在tcp和udp的2049端口。
Idmapd:解决不同主机用户不存在情况下的文件归属的问题,挤压限制(squash)超级用户的文件系统中的权限 (没有目录的问题)
4、NFS的缺点:客户端主机基于rpc远程调用机制,没有用户的认证机制,且文件的传输都是基于明文的方式,所以安全性很差。通常只在局域网内使用,NFS基于IP来进行认证,需要辅助的守护进程nfsd来进行
1.架设NSF服务 服务端共享目录
1.服务端安装NFS 查看端口 先启动 rpcbind 服务, 在启动nfs-utils
NFS服务的程序包名称为 nfs-utils
nfs本身程序监听端口为2049,服务启动后服务模块自动装载到内核中。
yum -y install nfs-utils rpcbind --安装两个软件服务
systemctl start rpcbind
systemctl start nfs --启动服务先启动rpc,
netstat -antulp | grep :111 --查看端口
netstat -antulp | grep :2049
rpcinfo -p localhost--查看端口映射
##
NFS服务程序启动的相关程序
/sbin/mount.nfs
/usr/sbin/rpc.idmapd
/usr/sbin/rpc.mountd
/usr/sbin/rpc.nfsd
2.NFS服务端的配置文件:/etc/exports 增加挂载目录 和ip 可读可写的权限
vim /etc/exports
注意:①服务端的NFS配置文件的编写,用空格区分开,主机和选项之间的括号不能有空格
②测试机必须要安装rpcbind和nfs-utils程序,才能挂载服务端的文件系统
/etc/export内相关内容选项的含义:
①rw 指定的主机可读、可写
②ro 指定的主机仅可读
③async 异步访问 (这个选项可以改进性能,如果没有完全关闭NFS守护进程重启NFS服务器,可能会造成数据丢失,可不加)
④root_squash:挤压root用户权限(默认开启的选项)
⑤all_squash:挤压所有用户权限
mkdir -p /var/www/html mkdir -p /var/www/bbs --服务端创建共享目录
systemctl restart rpcbind systemctl restart nfs -重启服务注意顺序
3.客户端安装nfs-utils rpcbind 查看挂载nfs文件系统
yum -y install nfs-utils rpcbind
systemctl start rpcbind
systemctl start nfs
不用重启NFS服务重新导入文件系统(建议在客户端没有在线挂载的情况使用)
exportfs -a
客户端开机自动挂载nfs文件系统
vim /etc/fstab
SERVER:/XXX/XXX/XXX /mount_point nfs defaults,_netdev 0 0
4.客户端查询 是否可以挂载 服务端的共享目录
命令格式 : showmount -e SERVER_IP
showmount -e 192.168.10.10
5.客户端永久挂载 服务端共享的文件系统 目录
命令格式 mount -t nfs 192.168.10.10:/var/www/html /mnt
nfs挂载文件系统 nfs服务器ip 共享的命令 挂载在客户端的位置
mount -t nfs 192.168.10.10:/var/www/html /mnt --临时挂载
df -h --查看是否成功
永久挂载
umount /mnt/ ---卸掉
df -h
cp /etc/fstab /etc/fstab.bak -复制备份挂载
vim /etc/fstab --增加永久挂载 共享目录
192.168.10.10:/var/www/html /mnt nfs defaults,_netdev 0 0
或者去修改
mount -a 自动挂载fstab的文件 df -h -查看
6.测试服务端共享目录里建立 文件 客户端查看
服务端建立 共享的文件 index.html
服务端查看 说明成功了
7.服务端增加新共享目录
服务端建立新的分享目录
vim /etc/exports
cd /var/www/
mkdir kkk
exportfs -a
exportfs -ar
客户端查看 服务端的共享目录
showmount -e 192.168.10.10
2. 构建两台web服务器,安装httpd服务, 使客户访问web服务器的网站都一样 , nfs相当于硬盘,存放两台web共享的同一个网页
1.第一台web服务器 安装httpd 查看网页根路径 然后挂载nfs
yum -y install httpd ----安装软件
cd /var/www/html/ ---查看网页根路径
mount -t nfs 192.168.10.10:/var/www/html /var/www/html/ --挂载NFS
cd /var/www/html/ ---查看网页根路径
cat index.html --查看网页内容
systemctl start httpd -- 启动服务网页查看
2.第二台WEB服务器 安装httpd 修改网页根路径 挂载NFS
yum -y install httpd --安装
vim /etc/httpd/conf/httpd.conf --修改默认的网页路径为kkk
DocumentRoot "/var/www/kkk" ---网页根路径
<Directory "/var/www/kkk"> --读取网页根路径
vim /etc/httpd/conf/httpd.conf
cd /var/www/
mkdir kkk ---创建挂载目录
mount -t nfs 192.168.10.10:/var/www/html /var/www/kkk/ 挂载到网页根路径
cd kkk
cat index.html --查看网页
systemctl start httpd 启动服务 网页查看
3搭建LAMP ,客户端可查看NFS分享的目录php(第一台web)
1.配置yum挂载光盘,安装软件包
2.开始安装httpd服务,更改配置,
yum -y install httpd
去创建测试网页
Vim /var/www/html/index.html
添加主机名字
vim /etc/httpd/conf/httpd.conf
3.安装php以及mariadb数据库,php结合数据库的驱动模块
yum -y install php php-mysql mariadb mariadb-server mysql-devel
4.安装php所依赖的库和相关工具包 更改yum为联网模式(本来的模式)
yum -y install php-gd libjpeg* php-imap php-ldap php-odbc php-pear php-xml php-xmlrpc php-mbstring php-mcrypt php-bcmath php-mhash libmcrypt
修改yum 源,回复原来的yum配置
其中,红色的包安装不了,
解决方法:将服务器使用桥接模式或者nat连接到公网,可以访问公网。
更改电脑管理服务vmware DHCP和NAT开启 ,增加虚拟机网络适配器,虚拟网络开启DHCP 然后再安装这两个
yum -y install epel-release
yum -y install php-imap php-mcrypt libmcrypt
5.验证php的模块 ls /etc/httpd/modules/libphp5.so
ls /etc/httpd/modules/libphp5.so
6.更改httpd主配置文件,让索引页支持php
vim /etc/httpd/conf/httpd.conf --主配置文件 插入index.php
7.重启服务,查看80端口 使其php模块生效
systemctl restart httpd
netstat -anutlp | grep :80
修改NFS服务端共享目录权限,使其可写
chmod o+w /var/www/html/ -- 共享目录加入可写的权限
vim /etcexport --修改客户端ip的权限
9.编写PHP测试页,浏览器验证php和httpd的连接效果
到 apache 网站根目录下创建 vim /var/www/html/index.php
<?php
phpinfo();
?>
浏览器验证
http://192.168.10.20
10.将mariadb数据库的主配置文件做修改
cat /usr/share/mysql/my-medium.cnf > /etc/my.cnf --覆盖
11.启动mariadb数据库服务
systemctl start mariadb.service
netstat -antulp | grep :3306 3306是否监听
ls /var/lib/mysql/mysql.sock
12.进入mysql数据库的命令行界面去设置用户密码
mysql
13.修改数据库的账号和密码(一定要在mysql的解释器窗口)
[root@client html]# mysql 命令行进入mysql
MariaDB [(none)]>delete from mysql.user where user=''; 删除空用户
在mysql库.user表里面 当user这个字段空 则删除
MariaDB [(none)]>update mysql.user set password=password('123456') where user='root'; 给root用户设置密码
update 更新 mysql库.user表 set password这个字段的值为123456
但是这个1234536需要 password来加密 是一个函数 where查询或更新的条件
MariaDB [(none)]>grant all on *.* to 'root'@'%' identified by '123456';
设置权限 允许root用户在任何地方连接数据库 可不写,但只能在本机登录
*.*所有库的 ,所有表的 all 所有权限 都给'root' '%'让root用户可以在任何地方登录 identified所有主机终端 by '123456'; 以这个密码登录 '%相当于任意字符*
MariaDB [(none)]> flush privileges; 刷新权限
quit 退出
重新登录
mysql -u root -p 指定用户 密码
show databases; -查看数据库有几个
14.退出数据库,并将数据库进行 重新重启
systemctl restart mariadb
systemctl restart httpd
15.编写测试页test_mysql.php 网页验证php和mariadb数据库的连接
编写测试页 vim /var/www/html/test_mysql.php
<?php
$link=mysqli_connect('192.168.10.20','root','123456');
if($link)
echo "^_^ ok ^_^";
else
echo "T_T not ok T_T";
?>
测试 写ip 192.168.10.40 root用户 密码123456
必须跟前面指定的要一样
网页测试
http://192.168.10.20/test_mysql.php
16.在网页根路径部署discuz论坛项目,验证LAMP架构可用性 进行unzip解压
解压之后出现 upload目录 ,将其重命名并移动到网页根路径
unzip Discuz_X3.1_SC_UTF8.zip 解压
cp -rf upload /var/www/html/discuz
17.为discuz项目提供后台数据库,以便于项目数据的便捷存储
进入mariadb数据命令行界面
mysql -u root -p --进入mysql
create database bbs; --创建bbs数据库
18.创建普通用户来管理discuz对应的bbs数据的所有数据
grant all on bbs.* to 'runbbs'@'%' identified by '123456';
把bbs .* 数据库里面 所有的表 给一个'runbbs' all所有的权限 '%使这个用户可以从任何终端登录 identified 主机 密码是1234536
flush privileges; 刷新
quit
19.更改php主配置文件,使其支持短格式选项
可在网页 php 那里找到php的主配置文件
vim /etc/php.ini
211 short_open_tag = On --支持短格式
重启httpd服务
systemctl restart httpd
20.开始部署安装配置 discuz论坛项目
chmod -R 777 /var/www/html/discuz 设置权限
在浏览器输入http://192.168.10.20/discuz/install/
选择全新安装,点击下一步,
输入数据库ip地址:192.168.10.20,数据库的名称:bbs,数据库用户名:runbbs,管理员的密码:123456
http://192.168.10.20/discuz/admin.php 登录管理员
管理员页面:http://192.168.10.20/discuz/admin.php? 输入admin的密码,登录
可以去修改install目录 更改名字 使客户不能查看
cd /var/www/html/discuz/
4.第二台web服务端 配置安装httpd 和php即可
1.安装http修改配置文件/etc/httpd/conf/httpd.conf为php的网页
yum -y install httpd --安装http
cd /var/www/
ls
cd kkk --查看NFS共享目录 (自己设置的)
ls
vim /etc/httpd/conf/httpd.conf ---修改配置文件 增加php网页
165 DirectoryIndex index.php index.html
2.安装php 修改
yum -y install php php-mysql mariadb mariadb-server mysql-devel
yum -y install php-gd libjpeg* php-imap php-ldap php-odbc php-pear php-xml php-xmlrpc php-mbstring php-mcrypt php-bcmath php-mhash libmcrypt
cd /etc/yum.repos.d/ --修改为原来的环境,联网 增加net网卡
mv CentOS-Base.repo CentOS-Base.repo.kkkcd
mv CentOS-Base.repo.bak CentOS-Base.repo
yum -y install epel-release ---联网下载
yum -y install php-imap php-mcrypt libmcrypt
3.网页测试 是否为第一台共享的discuz
http://192.168.10.30/discuz/
5.Rsyslog服务 日志服务
日志:记录服务器发生的事件,包括错误情况、用户登录的情况、服务器访问的情况等。
1:历史日志(记录日志的时间、发生的事件详情)
2:日志级别(Loglevel):事件关键性程度
文件记录日志的格式(文本格式):
事件日期时间 主机 进程(pid) 事件内容
跟踪日志
tail -f /var/log/messages --跟踪日志
tail -100 /var/log/messages --查看日志后一百条
1.常见日志文件说明 /var/log/
/var/log/message包括整体系统信息,包括系统启动期间的日志。此外mail,cron,daemon,kern,auth等内容也记录在此日志中。
/var/log/dmesg 包含一些内核缓冲信息,在系统启动时,会在屏幕上显示许多与硬件相关的信息。
/var/log/auth.log 包含系统授权信息,如用户登录和使用的权限机制等
/var/log/boot.log 包含系统启动的日志
/var/log/kern.log 包含内核产生的日志,有助于在定制内核时解决问题
/var/log/lastlog记录所有用户最近信息,不是一个ASCII文件,需要使用lastlog命令查看内容
/var/log/btmp 记录所有失败登录信息.使用last命令可以查看btmp文件
/var/log/cron 每当cron进行开始一个工作时,就会将现相关信息记录在这个文件夹中
/var/log/secure 包含验证和授权方面的信息sshd会将所有信息记录在这/var/log/wtmp /var/log/utmp包含登录信息。wtmp可以找出谁正在登录进入系统,谁使用命令显示这个文件或信息等
/var/log/sa 包含每日由sysstat软件包收集的sar文件
/var/log/sssd 用户守护进程安全服务
示例
/var/log/secure
who 查看登录信息
2.)rsyslog(系统日志服务):两个进程
为帮助很多应用程序记录日志,不必每个应用程序自我实现单独记录日志,分为两个进程:
syslogd:记录用户进程记录日志
klogd: 记录内核日志
3.)Rsyslog 日志分类
facility:把某一类具有相同特性的由各个应用程序产生的日志数据流归类到同一日志管道中,此管道为facility,可简单理解为系统是日志的分类
系统中有诸多facility,从功能或程序上对日志进行分类,
例如:
auth、authpriv、cron、daemon、kern、lpr、mail、mark、news、security、user、uucp、local0-local7、syslog
分类解释
auth 认证系统,即询问用户名和口令
cron 系统执行定时任务时发出的信息
daemon 某些系统的守护程序的日志
kern 内核的syslog信息
lpr 打印机的syslog信息
mail 邮件系统的syslog信息
mark 定时发送消息的时标程序
news 新闻系统的syslog信息
user 本地用户应用程序的syslog信息
uucp uucp子系统的syslog信息
local0-7 本地类型的syslog信息,这些信息可以由用户来定义
* 代表所有分类
4.)priority日志级别 指定级别格式 级别状态
级别:
debug info notice warn(warning) err(error) crit(critical) alert emerg
如:
facility.priority /var/log/messages
分类 级别 写到的路径 实点代表往上所以级别
代表什么样的类日志,什么样的级别 ,写的log路径在哪
指定级别的格式:
*:所有级别
auth.*
none:没有级别
mail.none
priority:此级别以及更高级别的日志信息
=priority:此级别
级别状态 从下往上 越来越严重
emerg 紧急,处于Panic状态。通常应广播到所有用户;
alert 告警,当前状态必须立即进行纠正。例如,系统数据库崩溃;
crit 关键状态的警告。例如,硬件故障;
error 错误;
warn 警告;
notice 注意;非错误状态的报告,但应特别处理;
info 通报信息;
debug 调试程序时的信息;
none 通常调试程序时用,指示带有none级别的类型产生的信息无需送出。如*.debug;mail.none表示调试时除邮件信息外其它信息都送出。
5.)/etc/rsyslog.conf主配置文件详解 日志配置规则 和rsyslog程序包
rsyslog程序包即为rsyslog
rsyslog的主配置文件 /etc/rsyslog.conf
日志主程序 /usr/sbin/rsyslogd
6服务启停脚本:/etc/init.d/rsyslog
主配置文件详解:
1、#### MODULES ####
指定装载的模块
2、$ModLoad imuxsock
支持本地日志记录的模块
3、$ModLoad imjournal
支持本地系统访问产生日志的功能
4、$ModLoad imklog
支持本地内核产生日志的功能
5、# Provides UDP syslog reception
#$ModLoad imudp
#$UDPServerRun 514
# Provides TCP syslog reception
#$ModLoad imtcp
#$InputTCPServerRun 514
基于UDP和TCP方式进行远程收集日志,以及解开对应的端口
日志配置的规则
*.info;mail.none;authpriv.none;cron.none /var/log/messages
日志所有分类的 info以上级别 分号 除了mail..不记录. 其余写到这个目录
none 不记录
authpriv.* 验证授权 /var/log/secure
authpriv的所有级别,记录在的位置
mail.* mail这个分类的所有级别写到 -/var/log/maillog
减号 -号代表异步写入
cron.* cron这个分类的所有级别写到 /var/log/cron
*.emerg 所有分类的 emerg以上的级别 发给所有的用户 :omusrmsg:*
后面的*代表当前登录系统的所有用户
uucp,news.crit 表示uucp和news分类的crit级别 写到 /var/log/spooler
逗号表示并列
local7.* local7分类的所有级别 /var/log/boot.log
local7被boot引导记录日志占用,其他local0-6可以自定义boot.log是启动的日志信息
6.将sshd服务进行 单独记录日志
1.配置sshd主配置文件,使其单独记录日志
vim /etc/ssh/sshd_config
systemctl restart sshd
重载sshd服务即可对sshd服务生效
2.在rsyslog主配置文件进行配置单独为sshd服务记录日志,并重启rsyslog服务,生效
vim /etc/rsyslog.conf
systemctl restart rsyslog.service 重启服务
3.测试
ssh root@192.168.10.30 在本机登录一下
exit
cd /var/log
ls 查找sshd.log
7.构建单独的rsyslog服务器(扮演成服务器)注意:需要关闭防火墙
实验目的:将node2上的日志传输到node1上
1.在服务器端node1配置
1)编辑配置文件:vim /etc/rsyslog.conf
注:日志的传输方式有三种:TCP、UDP、RELP
UDP传输, 但信息有损耗
TCP明文的传输,只在特定情况下丢失信息,并被广泛使用
RELP传输,不会丢失信息,但只在rsyslogd 3.15.0及以上版本中可用
2)启用三种传输方式
1.启用UDP传输方式:取消15、16行的注释
systemctl restart rsyslog 重启服务
或者.启用TCP传输方式:取消19、20行的注释
3)开启传输端口监听
vim /etc/sysconfig/rsyslog
SYSLOGD_OPTIONS="-r514 -c2" 加上或者修改其中内容
注:-r:指定监听端口
-c2:使用兼容模式
4)重启服务:systemctl restart rsyslog
2.客户端配置
1)指定日志传输方式: vim /etc/rsyslog.conf
在最后添加 使用哪种方式进行日志传输
UDP传输:*.* @192.168.10.30:514 所有分类的所有级别@日志服务端ip和端口号
或者 tcp两个@@
TCP传输:*.* @@192.168.10.30:514 所有分类的所有级别@@日志服务端ip:端口号 30为服务端的ip 端口为514
2)客户端重启服务:systemctl restart rsyslog
测试
在客户端生成一条日志,看服务器端是否接受到这个日志
在客户端:logger -t kern -p err "hello,wahaha"
在服务器端:tail -f /var/log/messages --追踪日志