rsyslog服务基础
一、基础概念
系统引导启动、应用程序启动、应用程序运行过程中经常会输出一些信息,按正常逻辑其所有输出信息都应该是输出至其所在的控制台上,但是一些守护进程本来与终端没有关系,当它需要输出信息的时候保存于何处呢?既然记录输出信息是一个通过功能,就可以找一个应用程序把所有数据流都收束在一起之后记录在文件中,syslog就是实现这个功能的,而rsyslog是syslog的进阶版,它是syslog多线程的下一代实现方案
1. 通用格式
既然都使用rsyslog服务记录日志,那它的记录格式也是统一的,我们在/var/log/message中看到一般都是这种格式的
通用格式: 时间产生的日期时间 主机 进程[pid]: 事件内容
2. rsyslog中的重要术语
(1) 日志级别(priority)
事件有等级的概念,日志记录的时候是事无巨细还是只记录重要的信息。很显然,为了系统I\O,为了节约空间,我们也不应该事无巨细的记录,应该仅记录一些非常关键的信息。因此,为了能完成这些信息流的过滤和收束,syslog为每一个程序所产生的信息定义了级别(priority)
debug:调试 ...
chrony服务
一、简单介绍
chrony是网络时间协议NTP的另一种实现,与网络时间协议后台程序ntpd不同,它可以更快、更准确的同步系统时钟
chrony的优势
更快的同步时间只需要数分钟而非数小时,从而最大程度减少了时间和频率的误差,这对于非全天24小时运行的台式计算机或系统而言非常有用
能够更好的响应时钟频率的快速变化,这对于具备不稳定时钟的虚拟机或导致时钟频率发生变化的节能技术而言非常有用
在初始同步后,它不会停止时钟,以防对需要系统时间保持单调的应用程序造成影响
应对临时非对称延迟(例如,在大规模下载造成链接饱和时)提供了更好的稳定性
无需对服务器进行定期轮询,因此具备间歇性网络链接的系统任然可以快速同步时钟
二、安装配置
1. 安装
yum install chorny -y
2. 配置文件
/etc/chrony.conf:主配置文件
/usr/bin/chronyc:交互式测试程序文件
/usr/sbin/chronyd:服务端进程文件
3. 主配文件中的指令
server:指向时间服务器allow:192.168/24local stratum 10:如果自己的联系不到时间 ...
samba服务
一、简单介绍
NFS网络文件系统是不能跨操作系统使用的,至少说现在跨windows和linux之间完成文件系统级的共享nfs是无法完成的,据说在上个世纪90年度的时候,在澳大利亚有一个大学生就面临这样的现状,于是他决定造一个能跨多种平台实现文件共享的文件系统级的服务。在当时各windows主机之间所能实现的共享方式就是smb协议(Service Message Block),现在我们通常称之为CIFS协议。但是windows是闭源的,有些功能需要在内核中实现,我们不可能知道windows的源码的,于是这个作者就从linux开始解决问题。它需要实现可以基于NetBIOS协议解析主机名称、实现smb协议、可以兼容windows活动目录,于是samba就诞生了,它的作者是Andrew Tridgell
二、程序环境
1. 相关程序包
samba:服务端程序包
samba-client:客户端程序
samba-dc:使samba称为域控的程序包
samba-python:与python交互的必要程序包
samba-python-test:与python交互的必要程序包
samba-test: ...
NFS文件系统
一、简单介绍
NFS是网络文件系统,其工作于内核中,通过与Linux的vfs接口向用户输出一个与本地文件系统无差的文件系统。用户首先通过mount命令将远程的NFS文件系统挂载至本地的某个目录上,当进程访问这个目录时,NFS会根据用户请求创建一个TCP/IP的长连接,所有的请求都通过这个链接远程传输给NFS服务器。简单来讲就是将本地文件系统的API转换为能够通过套接字远程调用的API,这个可以远程调用的接口使得客户端在访问时,可以基于协议报文发过来一个请求,而后NFS服务器将其转换为在本地磁盘上所存储的文件,可以将NFS理解为附加在本地文件系统上的虚拟层,有了这个虚拟层之后才使得本地的某个文件系统通过网络能输出给其他主机访问。而这个过程是基于RPC机制实现的
NFS是由Sun公司研发的,它的第一版就从来没有走出过Sun公司,后来公开的是NFS v2版本,早期时候nfs为了高效传输使用的是udp协议,但是udp没有校验功能,所以在NFSv3开始就支持tcp和udp了,不过官方建议及默认设置都是使用tcp进行传输的,其监听在2049/TCP端口,到了NFSv4在UID映射上有了更加苛刻的要 ...
vsftpd基础
一、简单介绍
ftp是一种非常古老的应用层协议,全称为文件传输协议(file transfer protocol),它比http协议年龄大的多,TCP/IP协议刚刚诞生不久,ftp就诞生了。主要用于在各主机之间完成文件传送
二、链接类型
1. 命令链接
用于传输命令
2. 数据链接
用于传输数据,只有需要进行数据传输时才建立,数据传输完成就拆除
主动模式(PORT):当需要传输数据时,服务端会通过20/TCP端口去链接客户端命令链接端口随后的端口,而后开始传输数据
被动模式(PASV):当需要传输数据时,客户端通过命令链接通知客户端一个随机端口,而后客户端也通过一个随机端口去链接客户端告知的端口。有意思的是,服务端并不会直接告诉客户端随机端口号,而是将随机端口号除以256后,将商和余数发送给客户端
三、ftp协议的实现
1. 服务端程序
Serv-U
IIS
filezilla
wuftpd
proftpd
pureftpd
vsftpd
2. 客户端程序
ftp命令
filezilla
CuteFTP
FlashFXP
lftp
四、vsftpd配置
1. 文件路径
主 ...
PHP简介与LAMP部署
一、PHP简介
PHP是通用服务器端脚本编程语言,其主要用于开发web动态页面,是最早实现将脚本嵌入HTML源码文档中的服务器端脚本语言之一。php自身有一个命令行接口,使其可以在大多数系统上作为一个独立的shell来使用
1. PHP诞生及版本更迭
PHP的作者是Rasmus Lerdorf,于1994年开始开发PHP,最初的版本使用Perl语言研发并将它称作“Personal Home Page Tool”,实现显示作者简历并记录用户对其网站访问量统计。后来,作者使用C语言将这些Perl脚本重写为CGI程序并将其重命名为“Personal Home Page/Forms Interpreter”(个人主页面和表单解析器)或“PHP/FI”,还为其增加了运行web表单(Web forms)的能力和与数据库交互的特性,此时,PHP/FI已经可以用于开发简单的动态web程序了,这即是PHP1.0。1995年6月,作者把它的PHP发布于comp.infosystems.www.authoring.cgi Usenet讨论组,从此PHP开始走进人们的视野。1997年其2.0版本发布
199 ...
http协议及httpd配置
一、HTTP
http协议全称为超文本传输协议(hyper text transfer protocol),是一种应用层协议,监听在80/tcp。所谓超文本就是使用html编程语言开发的纯文本文件
1. 超文本标记语言
超文本标记语言(hyper text mark language)就是用来开发超文本文档的, 通过一些标签对文本进行修饰,客户端的浏览器引擎负责解析这些标签,将结果显示在浏览器上
<html> <head> <title> TITLE</title> </head> <body> <h1></h1> <p> lianjie... <a href="https://www.busyops.com"> lianjie... </a></p> <h2></h2> </body></htm ...
Socket基础
一、socket
IPC(Inter-Process Communication)叫做进程间通信,实现IPC的方式由很多,像共享内存、信号等。而socket就是IPC机制的一种实现,任何运行在用户空间内的进程需要通信时,就可以基于套接字编程的方式来调用套接字,就是通过向内核中的tcp/ip协议栈注册端口来实现不同或同一主机上的进程间通信。早期出现在BSD 4.2系统上,后来就被广泛的移植到Unix系统及Linux系统上。第一个被广泛使用的socket调用接口大概出现在1983年左右,所以目前套接字是一个很成熟、运用广泛的跨主机通信机制的实现方案
1. 套接字类型
(1)按使用的协议进行分类
SOCK_STREAM:tcp套接字,流式通信协议,使用tcp端口的套接字
SOCK_DGRAM:udp套接字,使用udp端口的套接字
SOCK_RAW:裸套接字,应用层的进程不使用tcp协议或udp协议,而是直接调用网络层封装报文后实现通信,这种就叫做裸套接字
(2) 套接字域(Socket Domain)
根据其所使用的不同IP地址家族,定义的套接字域,所以就有了这样的分类
AF_INET ...
openssh
一、前言
默认情况下管理本地主机都是通过系统自带的mingetty程序,其可以启动一个login程序进行对用户进行认证,但mingetty程序没有负责远程管理用户登录的能力。而在机房中可能存在成千上万的主机,又不可能给每台主机配置显示器、键盘实现本地连接,所以要想对服务器进行管理的话,就需要服务器在本地启动一个服务程序,这个程序能够把对于本地的很多基于终端方式的请求映射到另一个主机的客户端程序上,二者之间使用某种特定协议来交换数据报文。早期的时候这种登录方式是使用telnet实现的,服务器端运行telnet server,客户端运行telnet client,二者通过telnet协议互相通信,telnet使用23/tcp端口。不过,telnet协议诞生的很早,那个时候懂得计算机的人都不多,更何况懂得网络了,所以设计时力求简单,其没有任何安全加密功能。对于现在的网络环境,已经相当不安全了。后来出现的ssh协议,它不但解决了远程登录安全加密功能,还解决了当初unix系统上的远程复制功能
二、openssh
1. ssh协议
ssh(Secure SHell protocol)是一个协议,而 ...
DNS协议及Bind应用
一、DNS基础概念
域名服务协议(Domain Name Service),属于应用层协议,需要借助通信子网完成通信,采用c/s架构,端口号为53/udp和53/tcp
1. 诞生背景
DNS协议不是在网络诞生最初就有的,据说全球最早接入网络的计算机只有四台,使用IP地址就可以完成主机间的通信,但是随着时间的推移接入网络的主机越来越多,并且人类最容易记住的连续数字不超过6个的,但是IP地址长度却可能到12位,所以最初的解决方案就是在本地引入一个文件(hosts文件),这个文件里面记录了每一个需要通信的IP地址和主机名称的对应关系,可以将这个文件理解为数据库。最初这个文件是由IANA负责维护的,使用时去指定网站下载最新版的hosts文件覆盖本地即可,接着结合系统中的两个库调用getipbyhostname()和gethostnamebyip()就可以完成名称解析了。在互联网主机还不太多的时候,这个方案确实解决了很大的问题,但是这种方式时效性太差,并且那个时候服务器性能也不行,读一个hosts文件就可能占据大量内存。虽然hosts文件不太适用于新时代了,但是这个机制也没有被抛弃。接着IAN ...