linux服务类基础知识

常见的web服务器

  • apache (httpd) html+php #通过libphp5.so模块处理php网页
  • nginux html +php
  • tomcat jsp+html
  • windows (IIS) asp.net

什么是 Apache
Apache Web 服务器端软件之一。它快速、可靠并且可通过简单的 API 扩展,将 Perl/Python 等解释器编 译到服务器中!Apache HTTP 服务器是一个模块化的服务器,各个功能使用模块化进行插拔

什么是 Mysql
MySQL 是一个关系型数据库管理系统,他也是最流行的关系型数据库管理系统!特别是在 WEB 应用方面!
关系型数据库:它通过数据、关系和对数据的约束三者组成的数据模型来存放和管理数据官方

什么是 PHP
PHP(外文名:PHP: Hypertext Preprocessor,中文名:“超文本预处理器”)是一种通 用开源脚本语言。主要适 用于 Web 开发领域。PHP 独特的语法混合了 C、Java、Perl 以及 PHP 自创的语法。它可以 比 CGI 或者 Perl 更快速地执行动态网页。用 PHP 做出的动态页面与其他的编程语言相比, PHP 是将程序嵌入到 HTML(标准通用标记语言下的一个应用)文档中去执行,执行效率比 完全生成 HTML 标记的 CGI 要高许多;PHP 还可以执行编译后代码,编译可以达到加密和 优化代码运行,使代码运行更快。
简单的说,PHP 就是一个脚本解释器!

PHP 服务器安装好之后,升级切记注意,不要盲目升级!因为它会废弃很多废弃低效的语法!

linux服务类基础知识_第1张图片

  • Apache的libphp5.so随着apache服务器一起运行,而Nginx和php-fpm是各自独立运行,所以在服务的运行过程中,Nginx和php-fpm都需要分别启动!
  • 修改Nginx配置文件,启动nginx服务,修改php配置文件,启动php-fpm服务

Web 服务器的工作模式和端口

工作模式是:B/S 模式
工作端口是:apache 常端口80 443/https SSL 端口,tomcat 8080/ httpds:8443
安装包:httpd,nginx,tomcat

Apache

• 修改web网站根目录-配置别名-虚拟目录
• 实现apache打开软链接功能-禁止显示目录列表-用户认证
• apache虚拟主机基于-IP-域名-端口三种搭建方式 #一台机器运行多个网站
安装包

httpd-2.4.6-90.el7.centos.x86_64 #服务软件
httpd-tools-2.4.6-90.el7.centos.x86_64 #工具包,ab压力测试工具
php-mysql   #php连接mysql数据软件

主要配置文件

ls /etc/httpd/conf/httpd.conf  #主配置文件
ls /etc/httpd/conf.d/*.conf  #本地加载的配置文件
autoindex.conf  README  userdir.conf  welcome.conf
ls /var/log/httpd/ #日志文件
access_log  error_log   
/var/www/html/ #文本发布目录

自带命令

httpd  [  -d serverroot ] [ -f config ]  [ -k start|restart|graceful|stop|graceful-stop ]  ,用以启动、关闭和重新启动Web服务器进程  

    -f <设定文件>  :指定配置文件

    -d <服务器根目录>: 指定服务器的根目录

    -l :显示服务器编译时所包含的模块 #查看模块用

    -t :测试配置文件的语法是否正确

    -M :显示所有httpd 加载的模块

httpd -k stop | start | restart | graceful  

apachectl stop | start | restart | graceful 生产环境中重启httpd服务,建议使用apachectl命令,使用graceful 选项

htpasswd[-cimBdpsDv]  passwordfile username,用于创建和更新储存用户名、域和用户基本认证的密码文件。        

    -c:创建一个加密文件;只在第一次添加用户时使用

    -n:不更新加密文件,只将加密后的用户名密码显示在屏幕上;

    -m:默认采用MD5算法对密码进行加密;

    -s:采用SHA算法对密码进行加密;

    -b:在命令行中一并输入用户名和密码而不是根据提示输入密码;

    -D:删除指定的用户。
 htpasswd -cm 存放用户名和密码的文件名用户名
 htpasswd -cm /etc/httpd/conf/passwd.secret DK

Nginx

Nginx功能丰富,可作为HTTP服务器,也可作为反向代理服务器,邮件服务器。支持FastCGI、SSL、Virtual Host、URL Rewrite、Gzip等功能。并且支持很多第三方的模块扩展。
Nginx常用功能
1、Http代理,反向代理:作为web服务器最常用的功能之一,尤其是反向代理。

这里我给来2张图,对正向代理与反响代理做个诠释,
linux服务类基础知识_第2张图片

Nginx在做反向代理时,提供性能稳定,并且能够提供配置灵活的转发功能。Nginx可以根据不同的正则匹配,采取不同的转发策略,比如图片文件结尾的走文件服务器,动态页面走web服务器,只要你正则写的没问题,又有相对应的服务器解决方案,你就可以随心所欲的玩。并且Nginx对返回结果进行错误页跳转,异常判断等。如果被分发的服务器存在异常,他可以将请求重新转发给另外一台服务器,然后自动去除异常服务器。

2、LB负载均衡(七层)

Nginx提供的负载均衡策略有2种:内置策略和扩展策略。内置策略为轮询,加权轮询,Ip hash(哈希)。扩展策略,就天马行空,只有你想不到的没有他做不到的啦,你可以参照所有的负载均衡算法,给他一一找出来做下实现。

上3个图,理解这三种负载均衡算法的实现

linux服务类基础知识_第3张图片

Ip hash算法,对客户端请求的ip进行hash操作,然后根据hash结果将同一个客户端ip的请求分发给同一台服务器进行处理,可以解决session(会话)不共享的问题。
linux服务类基础知识_第4张图片
3、web缓存

Nginx可以对不同的文件做不同的缓存处理,配置灵活,并且支持FastCGI_Cache,主要用于对FastCGI的动态程序进行缓存。配合着第三方的ngx_cache_purge,对制定的URL缓存内容可以的进行增删管理。
软件包

nginx-1.8.0

Nginx配置文件架构

vim /etc/nginx/nginx.conf

ls /etc/nginx/conf.d/  #自定义自动加载配置
ls /var/log/nginx/  #nginx日志文件存放目录
access.log  error.log   
...              #全局块

events {         #events块
   ...
}

http      #http块
{
    ...   #http全局块
    server        #server块
    { 
        ...       #server全局块
        location [PATTERN]   #location块
        {
            ...
        }
        location [PATTERN] 
        {
            ...
        }
    }
    server
    {
      ...
    }
    ...     #http全局块
}

1、全局块:配置影响nginx全局的指令。一般有运行nginx服务器的用户组,nginx进程pid存放路径,日志存放路径,配置文件引入,允许生成worker process数等。

2、events块:配置影响nginx服务器或与用户的网络连接。有每个进程的最大连接数,选取哪种事件驱动模型处理连接请求,是否允许同时接受多个网路连接,开启多个网络连接序列化等。

3、http块:可以嵌套多个server,配置代理,缓存,日志定义等绝大多数功能和第三方模块的配置。如文件引入,mime-type定义,日志自定义,是否使用sendfile传输文件,连接超时时间,单连接请求数等。

4、server块:配置虚拟主机的相关参数,一个http中可以有多个server。

5、location块:配置请求的路由,以及各种页面的处理情况(实现静态动态分离用到)。


Tomcat (apache基金会)

Tomcat 服务器是一个免费的开放源代码的 Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试 JSP 程序的首选。 Tomcat 和 IIS 等 Web 服务器一样,具有处理 HTML 页面的功能。不过,Tomcat 处理静态 HTML 的能力不如 Apache 服务器。

JSP:全名为Java Server Pages,中文名叫java服务器页面, 是由Sun Microsystems公司倡导、许多公司参与一起建立的一种动态网页技术标准。JSP技术有点类似ASP技术,它是在传统的网页HTML(标准通用标记语言的子集)文件(.htm,.html)中插入Java程序段(Scriptlet)和JSP标记(tag),从而形成JSP文件,后缀名为(*.jsp)。 用JSP开发的Web应用是跨平台的,既能在Linux下运行,也能在其他操作系统上运行。

java
JDK : java development kit (套件) 。简单的说 JDK 是面向开发人员使用的 SDK,它提供了 Java的开发环境和运行环境。就是Java开发工具,是进行Java开发的基础。

软件包

MySQL-Connector /kəˈnektə(r)/ -Java(jsp连接mysql数据库的安装包): mysql-connector-java-5.1.36
Tomcat:     (tomcat主程序)                      apache-tomcat-8.5.24
JDK:        (JAVA环境安装包)  			         jdk-8u152-linux-x64.tar.gz
tomcat-Native  (用户提高tomcat性能,提升性能APR 提升的是静态页面处理能力)

配置文件

ls /usr/local/tomcat/conf/
Catalina         catalina.properties  logging.properties  tomcat-users.xml  web.xml
catalina.policy  context.xml          server.xml          tomcat-users.xsd
server.xml		是Tomcat的主配置文件(全局),服务器设置的,例如端口设置,路径设置。
context			里设置tomcat数据源,用来连接数据库。
tomcat_user		主要是用户名和密码的设置。
web				是默认首页等等之类的设置

文件服务器

传输备份命令:scp rsync

scp远程上传和下载

常用选项:
 -r: 复制目录时使用
 -P:大写的P指定端口
scp [email protected]:/home/test.txt /test #下载文件
scp test.txt [email protected]:/home #上传文件
scp -r [email protected]:/home/test /test #下载目录
scp -r test [email protected]:/home #上传目录


rsync

安装包

rsync #客户端
Xinetd  #守护进程服务端

配置文件

/etc/rsyncd.conf  #需自己创建,可以定义非系统用户备份。客户端指定密码文件登录

Rysnc特性和优点
1.可以镜像保存整个目录树和文件系统。
2.可以很容易做到保持原来文件的权限、时间、软硬链接等等。
3.无须特殊权限即可安装。
4.快速:第一次同步时 rsync 会复制全部内容,但在下一次只传输修改过的文件。
5.压缩传输:rsync 在传输数据的过程中可以实行压缩及解压缩操作,因此可以使用更少的带宽。
6.安全:可以使用scp、ssh等方式来传输文件,当然也可以通过直接的socket连接。
7.支持匿名传输,以方便进行网站镜象。
8.选择性保持:符号连接,硬链接,文件属性,权限,时间等性和优点

常见备份分类

完整备份:每次备份都是从备份源将所有的文件或目录备份到目的地
差量备份:备份上次完全备份以后有变化的数据(他针对的上次的完全备份,他备份过程中不清除存档属性)
增量备份:备份上次备份以后有变化的数据.(他才不管是那种类型的备份,有变化的数据就备份,他会清除存档属性)

运行模式和端口

采用C/S模式(客户端/服务器模式)[ 就是一个点到点的传输,直接使用rsync命令 ]
端口873

发起端和备份源
四个名词的解释:
发起端: 负责发起rsync同步操作的客户机叫做发起端,通知服务器我要备份你的数据
备份源: 负责相应来自客户机rsync同步操作的服务器脚在备份源,需要备份的服务器

服务端:运行rsyncd服务,一般来说,需要备份的服务器
客户端:存放备份数据

数据同步方式
推push /pʊʃ/ :一台主机负责把数据传送给其他主机,服务器开销很大,比较适合后端服务器少的情况
拉pull /pʊl/ :所有主机定时去找一主机拉数据,可能就会导致数据缓慢

Xinetd管理Rsync工作原理 (rsync是通过Xinetd管理的必装服务)
linux服务类基础知识_第5张图片

使用rsync来同步是先通过xinetd监听873号端口,如果rsync进来的是873号端口,那么xinetd就会通知它所管辖的rsync服务来做回应,接下来就是rsync俩服务于之间的通讯

Rsync命令
rsync命令和scp命令很相似
常用的 –avz

sync -avz filename [email protected]:/root  #上传
sync -avz [email protected]:/root/filename /data  #下载

rsync -avz -e "ssh -p 222 " /var/www/html/ [email protected]:/web-back  #指定端口号
**-a, --archive archive mode 权限保存模式,相当于 -rlptgoD 参数,存档,递归,保持属性等**
-r, --recursive 复制所有下面的资料,递归处理
-p, --perms 保留档案权限 ,文件原有属性
-t, --times 保留时间点,文件原有时间
-g, --group 保留原有属组
-o, --owner 保留档案所有者(root only)
-D, --devices 保留device资讯(root only)
-l, --links 复制所有的连接 ,拷贝连接文件
**-z, --compress 压缩模式, 当资料在传送到目的端进行档案压缩.**
-H, --hard-links 保留硬链接文件
-A, --acls 保留ACL属性文件,需要配合--perms
-P,-P参数和 --partial --progress 相同.只是为了把参数简单化,表示传进度
--version, 输出rsync版本
**-v , --verbose 复杂的输出信息**
-u, --update 仅仅进行更新,也就是跳过已经存在的目标位置,并且文件时间要晚于要备份的文件,不覆盖新的文件
--port=PORT, 定义rsyncd(daemon)要运行的port(预设为tcp 873)
**--delete, 删除那些目标位置有的文件而备份源没有的文件(生产环境慎用,以免删除旧数据)**
**--password-file=FILE ,从 FILE 中得到密码(实现免密码登录,定时脚本备份)**
--bwlimit=KBPS, 限制 I/O 带宽
--filter “-filename”,需要过滤的文件
--exclude=filname,需要过滤的文件
--progress,显示备份过程

Rsync+sersync实现数据实时同步

一、为什么要用rsync+sersync架构?

  • 1、sersync是基于inotify开发的,类似于inotify-tools的工具
  • 2、sersync可以记录下被监听目录中发生变化的(包括增加、删除、修改)具体某一个文件或者某一个目录的名字,然后使用rsync同步的时候,只同步发生变化的文件或者目录

始部署sersync服务
一台装sersync一台装rsync服务
Sersync服务器(数据源,源机器):192.168.0.63
Rsync服务器(备份端,目标机器):192.168.0.64

同步过程和原理:

  1. 用户实时的往sersync服务器上写入更新文件数据;
  2. 此时需要在同步主服务器上配置sersync服务;
  3. 在另一台服务器开启rsync守护进程服务,以同步拉取来自sersync服务器上的数据;
    通过rsync的守护进程服务后可以发现,实际上sersync就是监控本地的数据写入或更新事件;然后,在调用rsync客户端的命令,将写入或更新事件对应的文件通过rsync推送到目标服务器

FTP服务器

FTP服务概述:
FTP服务器(File Transfer Protocol Server)是在互联网上提供文件存储和访问服务的计算机,它们依照FTP协议提供服务。
FTP(File Transfer Protocol: 文件传输协议)作用: Internet 上用来传送文件的协议

常见FTP服务器:

  • windows:Serv-U FTP Server,filezilla_server
  • Linux:ProFTPD:(Professional FTP daemon)一个Unix平台上或是类Unix平台上(如Linux, FreeBSD等)的FTP服务器程序。

vsftp

VSFTP是一个基于GPL发布的类Unix系统上使用的FTP服务器软件,它的全称是Very Secure FTP 从此名称可以看出来,编制者的初衷是代码的安全。

特点:

  • 它是一个安全、高速、稳定的FTP服务器;

  • 模式: C/S 模式

  • 端口:20 (传数据) 21 (传指令)

软件

vsftpd-2.2.2-6.el6_0.1.x86_64.rpm

配置文件位置:
2.vsftpd 相关文档

  • /etc/vsftpd/vsftpd.conf:vsftpd 的核心配vi置文件
  • /etc/vsftpd/ftpusers:用于指定哪些用户不能访问FTP 服务器。 黑名单
  • /etc/vsftpd/user_list:指定允许使用vsftpd 的用户列表文件。 白名单

工作流程(原理):#面试经常会遇到这样问题,大家需要注意下 。 主动模式:客户端开高位端口,服务端20端口连接。被动模式:服务端开高位端口,客户端20端口连接。
linux服务类基础知识_第6张图片
linux服务类基础知识_第7张图片
linux服务类基础知识_第8张图片
linux服务类基础知识_第9张图片
这里的主动和被动,是相对于的FTP server 端来判断的
如果server 去连接client 开放的端口,说明是主动的,相反,如果client去连接server开放的端口,则是被动的。


ftp用户认证三种模式:匿名,本地用户,虚拟用户。

linux服务类基础知识_第10张图片

NFS概述-配置NFS服务器并实现开机自动挂载

NFS服务端概述:
NFS,是Network File System的简写,即网络文件系统。网络文件系统是FreeBSD支持的文件系统中的一种,也被称为NFS. NFS允许一个系统在网络上与他人共享目录和文件。通过使用NFS,用户和程序可以像访问本地文件一样访问远端系统上的文件。
linux服务类基础知识_第11张图片
模式: C/S 模式
端口:
RHEL7是以NFSv4作为默认版本,NFSv4使用TCP协议(端口号是2049)和NFS服务器建立连接
在这里插入图片描述
安装包

 nfs-utils

配置文件位置

vim /etc/exports
/media  *(rw) #192.168.1.0/24 (rw)

客户端查看命令

showmount -e IP地址

客户端挂载命令

mount -t nfs 192.168.1.2:/data   /opt/data

SSH 服务

OpenSSH服务需要4 个软件包

openssh-5.3p1-114.el6_7.x86_64:包含OpenSSH服务器及客户端需要的核心文件
openssh-clients-5.3p1-114.el6_7.x86_64:OpenSSH客户端软件包
openssh-server-5.3p1-114.el6_7.x86_64:OpenSSH服务器软件包
openssh-askpass-5.3p1-114.el6_7.x86_64:支持对话框窗口的显示,是一个基于X 系统的密码诊断工具

OpenSSH配置文件

/etc/ssh/ssh_config为客户端配置文件

/etc/ssh/sshd_config为服务器端配置文件

密匙认证

ssh-keygen #生成ssh秘钥对

拷贝公钥到服务端

ssh-copy-id -i 192.168.0.63

通过fail2ban软件防止暴力破解ssh密码 #分析日志登录失败ip,加入防火墙
通过denyhosts 软件防护
shell脚本来防止暴力破解ssh


iptables

你可能感兴趣的:(面试基础)