什么是 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 服务器安装好之后,升级切记注意,不要盲目升级!因为它会废弃很多废弃低效的语法!
工作模式是:B/S 模式
工作端口是:apache 常端口80 443/https SSL 端口,tomcat 8080/ httpds:8443
安装包:httpd,nginx,tomcat
• 修改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功能丰富,可作为HTTP服务器,也可作为反向代理服务器,邮件服务器。支持FastCGI、SSL、Virtual Host、URL Rewrite、Gzip等功能。并且支持很多第三方的模块扩展。
Nginx常用功能
1、Http代理,反向代理:作为web服务器最常用的功能之一,尤其是反向代理。
Nginx在做反向代理时,提供性能稳定,并且能够提供配置灵活的转发功能。Nginx可以根据不同的正则匹配,采取不同的转发策略,比如图片文件结尾的走文件服务器,动态页面走web服务器,只要你正则写的没问题,又有相对应的服务器解决方案,你就可以随心所欲的玩。并且Nginx对返回结果进行错误页跳转,异常判断等。如果被分发的服务器存在异常,他可以将请求重新转发给另外一台服务器,然后自动去除异常服务器。
2、LB负载均衡(七层)
Nginx提供的负载均衡策略有2种:内置策略和扩展策略。内置策略为轮询,加权轮询,Ip hash(哈希)。扩展策略,就天马行空,只有你想不到的没有他做不到的啦,你可以参照所有的负载均衡算法,给他一一找出来做下实现。
上3个图,理解这三种负载均衡算法的实现
Ip hash算法,对客户端请求的ip进行hash操作,然后根据hash结果将同一个客户端ip的请求分发给同一台服务器进行处理,可以解决session(会话)不共享的问题。
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 服务器是一个免费的开放源代码的 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
常用选项:
-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 #客户端
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管理的必装服务)
使用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架构?
始部署sersync服务
一台装sersync一台装rsync服务
Sersync服务器(数据源,源机器):192.168.0.63
Rsync服务器(备份端,目标机器):192.168.0.64
同步过程和原理:
FTP服务概述:
FTP服务器(File Transfer Protocol Server)是在互联网上提供文件存储和访问服务的计算机,它们依照FTP协议提供服务。
FTP(File Transfer Protocol: 文件传输协议)作用: Internet 上用来传送文件的协议
常见FTP服务器:
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 相关文档
工作流程(原理):#面试经常会遇到这样问题,大家需要注意下 。 主动模式:客户端开高位端口,服务端20端口连接。被动模式:服务端开高位端口,客户端20端口连接。
这里的主动和被动,是相对于的FTP server 端来判断的
如果server 去连接client 开放的端口,说明是主动的,相反,如果client去连接server开放的端口,则是被动的。
NFS服务端概述:
NFS,是Network File System的简写,即网络文件系统。网络文件系统是FreeBSD支持的文件系统中的一种,也被称为NFS. NFS允许一个系统在网络上与他人共享目录和文件。通过使用NFS,用户和程序可以像访问本地文件一样访问远端系统上的文件。
模式: 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
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