Linux之NFS服务NFS工作过程 日志服务

您所在的位置:网站首页 简述修改ssh端口的基本流程图 Linux之NFS服务NFS工作过程 日志服务

Linux之NFS服务NFS工作过程 日志服务

2023-10-23 12:39| 来源: 网络整理| 查看: 265

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"             ---网页根路径

                        --读取网页根路径

 

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

 

 

 

 

浏览器验证

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

 

测试    写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 [email protected]  在本机登录一下

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           --追踪日志

 

 

 



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3