服务:是运行在操作系统后台的一个或多个程序,为用户或系统提供某项特定的服务。
服务配置最多的是网络服务,网络服务通常就是为其他用户,其他计算机提供某项功能服务。
Http (HyperText Transfer Protocal)超文本传输协议,是互联网上最广泛的一种网络协议,所有的www文件都必须遵守这个标准。
WEB服务器
Web服务器一般指网站服务器,是指驻留于因特网上某种类型计算机的程序,可以向浏览器等Web客户端提供文档,也可以放置网站文件,让全世界浏览;可以放置数据文件,让全世界下载。目前最主流的三个Web服务器是Apache和Microsoft的Internet信息服务器(Internet Information Services,IIS)unix nginx。
WEB服务器也称为WWW(WORLD WIDE WEB)服务器,主要功能是提供网上信息浏览服务。 Web服务器是可以向发出请求的浏览器提供文档的程序。
1、服务器是一种被动程序:只有当Internet上运行其他计算机中的浏览器发出的请求时,服务器才会响应。
2、Internet上的服务器也称为Web服务器,是一台在Internet上具有独立IP地址的计算机,可以向Internet上的客户机提供WWW、Email和FTP等各种Internet服务。
3、当Web浏览器(客户端)连到服务器上并请求文件时,服务器将处理该请求并将文件反馈到该浏览器上,附带的信息会告诉浏览器如何查看该文件(即文件类型)。服务器使用HTTP(超文本传输协议)与客户机浏览器进行信息交流,这就是人们常把它们称为HTTP服务器的原因。
Web服务器不仅能够存储信息,还能在用户通过Web浏览器提供的信息的基础上运行脚本和程序。
linux下的web服务器,软件使用的apache,apache也是美国军方的一种大型直升机阿帕奇。开放源代码的Apache(阿帕奇)服务器起初由Illinois大学Urbana-Champaign的国家高级计算程序中心开发,后来Apache被开放源代码团体的成员不断地发展和加强。逐渐,它开始在功能和速度上超越其他Web服务器。由于Apache服务器拥有牢靠可信的稳定性美誉,因此从1995年1月以来,Apache一直是Internet上最流行的Web服务器,下面这张图我们就可以看出来,apache的市场占有率是遥遥领先其他的浏览器。
谈到apache,我们不得不提到lamp
静态网页:html
动态网页 : 和后台数据库实现一些交互 php jsp python perl …
Linux+Apache+Mysql+Perl/PHP/Python一组常用来搭建动态网站或者服务器的开源软件,本身都是各自独立的程序,但是因为常被放在一起使用,拥有了越来越高的兼容度,共同组成了一个强大的Web应用程序平台。随着开源潮流的蓬勃发展,开放源代码的LAMP已经与J2EE和.Net商业软件形成三足鼎立之势,并且该软件开发的项目在软件方面的投资成本较低,因此受到整个IT界的关注。从网站的流量上来说,70%以上的访问流量是LAMP来提供的,LAMP是最强大的网站解决方案.
lnmp
协议://域名/资源
ip:端口
访问标准:用户,计算机通过访问固定的ip地址及端口号访问服务器的某项网络服务。
Apache (Apache http Server) 开源软件基金会 的一个开源网页服务器 IIS nginx
应用服务器 嵌入界面内的一些服务代码动态脚本 php ASP
技术框架C/S 请求应答标准 http 80 8080 HTTPS 443
2.HTML(标准通用标记语言下的一个应用)文档格式。
下面就是http的运行原理了
1、Web浏览器使用HTTP命令向一个特定的服务器发出Web页面请求。
2、若该服务器在特定端口(通常是TCP 80端口)处接收到Web页面请求后,就发送一个应答并在客户和服务器之间建立连接。
3、服务器Web查找客户端所需文档,若Web服务器查找到所请求的文档,就会将所请求的文档传送给Web浏览器。若该文档不存在,则服务器会发送一个相应的错误提示文档给客户端。
4、Web浏览器接收到文档后,就将它显示出来。
5、当客户端浏览完成后,就断开与服务器的连接。
请求方法有多种:
响应:通过报文返回一个状态码
--200 正常,请求成功
--401 静止访问,未授权(没有登录或者登陆失败)
--403 禁止访问,通常代表已认证通过,但没有访问权限
--404 未找到资源
--500 服务器内部错误(服务器内部出现问题,服务器内部故障,或者访问过多没有显示就可能会出现500错误)
代理服务器: S和C之间的访问实体
缓存服务器: 特殊的代理服务器
网关服务器: 一个http/FTP网关服务器C---http -- 8080 (FTP<-->HTTP )-----S FTP
<源ip地址><源端口号> <目标ip地址><端口>
网站访问格式: http://域名、ip:80
yum install httpd
启动脚本:/usr/lib/systemd/system/httpd.service
使用端口:80(http),443(https)
[root@localhost httpd]# netstat -tlnup | grep 443
所需RPM包:httpd-2.4.6-17.el7.x86_64.rpm
配置路径: /etc/httpd/*
主配置目录: /etc/httpd/conf
子配置目录: /etc/httpd/conf.d(apache是一个模块化的一个配置服务,所以我们可以根据每个模块进行一些配置,不仅对程序本身进行模块化配置对配置文件也进行了模块化配置)
默认网站存放路径:/var/www/html/
<>
</>
主配置文件介绍:
ServerRoot "/etc/httpd" 服务配置文件的根
Listen 80
Include conf.modules.d/*.conf
User apache 进程属主
Group apache
ServerAdmin root@localhost 服务管理员邮箱
ServerName 0.0.0.0:80
<Directory /> 目录标签
AllowOverride none 可以覆盖前面的配置
Require all denied 禁止访问根
</Directory>
DocumentRoot "/var/www/html"
<Directory "/var/www">
AllowOverride None
Require all granted
</Directory>
<Directory "/var/www/html">
Options Indexes FollowSymLinks 选项索引跟踪软连接
AllowOverride None
Require all granted
</Directory>
<IfModule dir_module>
DirectoryIndex index.html 索引目录为index.html
</IfModule>
<Files ".ht*"> 安全策略控制文件都是以.ht开头
Require all denied
</Files>
ErrorLog "logs/error_log" 链接到日志的文件
LogLevel warn
<IfModule log_config_module>
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
%h 客户端IP
%l 使用identd时才会有信息,一般情况下都是-
%u 远程用户(从验证获取到的)
%t 收到请求时的时间
%r 请求的首行
%s 服务器端返回的状态码
%b 除HTTP头以外的返回的字节数
%{Referer}i 从那个页面链接跳转到的此页面
%{User-agent}i 用户的User-Agent
LogFormat "%h %l %u %t \"%r\" %>s %b" common
<IfModule logio_module>
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio
</IfModule>
CustomLog "logs/access_log" combined
</IfModule>
<IfModule alias_module>
ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"
</IfModule>
<Directory "/var/www/cgi-bin">
AllowOverride None
Options None
Require all granted
</Directory>
<IfModule mime_module>
TypesConfig /etc/mime.types
AddType application/x-compress .Z
AddType application/x-gzip .gz .tgz
AddType text/html .shtml
AddOutputFilter INCLUDES .shtml
</IfModule>
AddDefaultCharset UTF-8
<IfModule mime_magic_module>
MIMEMagicFile conf/magic
</IfModule>
EnableSendfile on 支持发送文件
IncludeOptional conf.d/*.conf
/usr/share/doc/httpd-2.4.6/httpd-vhosts.conf
配置httpd apache主要学会以下基本功能
httpd.conf文件的格式
Web服务的基本配置
设置目录权限
虚拟主机的配置
https的配置
1.先介绍下apache的常用目录
1.1这个是apache的所有配置文件存放的目录
1.2网页默认放置的路径
Cgi-bin 是一种特殊的目录,在进行交互式的www访问(如填写在线表格)时,需要对服务器上有相应程序对访问这输入的信息进行处理,这写程序就是就是cgi程序。而这些程序只能放在cgi-bin这个目录
1.3Apache的主配置文件
httpd.conf配置文件主要由3个部分组成
全局环境
主服务器配置
虚拟主机
每部分都有相应的配置语句,该文件所有配置语句的语法为“配置参数名称 参数值”的形式。
httpd.conf的配置语句除了选项的参数值以外,所有选项指令均不区分大小写,可以在每一行前用“#”号表示注释。
全局配置的相关参数,全局的参数一般不用改动
MIME(Multipurpose Internet Mail Extensions)多用途互联网邮件扩展类型。是设定某种扩展名的文件用一种应用程序来打开的方式类型,当该扩展名文件被访问的时候,浏览器会自动使用指定应用程序来打开。多用于指定一些客户端自定义的文件名,以及一些媒体文件打开方式。
它是一个互联网标准,扩展了电子邮件标准,使其能够支持:
ServerRoot
设定Apache 安装的绝对路径
Listen 80 侦听端口号
服务的用户、组
一般在apache里,都说用户,这个组没多大意思的,是建立用户的时候就建立默认组了,网页的所有组或者所有者改成apache
服务错误日志发送的邮箱
1.为什么静态页面是在/var/www/html目录?为什么静态网页是index.html
2.默认访问的的欢迎界面的配置文件是什么?欢迎界面是在哪个位置?
3.搭建web服务显示欢迎界面
4.搭建web服务,网页内容显示“haha”
2.下面我们就开始搭建服务器
2.1默认http访问界面
2.2http访问静态界面
2.3基于ip地址对web服务器的访问 域名 ip 端口
1.4基于端口
1.5基于域名
1、新建一个网站,域名为www.haha.com,同时可通过www1.haha.com访问,文件存放在/www/haha目录,网页内容为This is www.haha.com.
2、新建一个网站,域名为www.xixi.com,文件存放在/www/xixi目录,网页内容为This is www.xixi.com
Hosts是一个没有扩展名的系统文件,其作用就是将一些常用的网址域名与其对应的IP地址建立一个关联"数据库",当用户在浏览器中输入一个需要登录的网址时,系统会首先自动从Hosts文件中寻找对应的IP地址,一旦找到,系统会立即打开对应网页,如果没有找到,则系统会再将网址提交DNS域名解析服务器进行IP地址的解析。
应用层
表示层 应用层 人机交互
会话层
传输层 传输
网络层 互联网层
数据链路层
物理层 物理层
1.6SSL认证
http和TCP之间插入了(TSL / SSL) 密码加密层 SSL -----443
超文本传输协议HTTP协议被用于在Web浏览器和网站服务器之间传递信息。HTTP协议以明文方式发送内容,不提供任何方式的数据加密,如果攻击者截取了Web浏览器和网站服务器之间的传输报文,就可以直接读懂其中的信息,因此HTTP协议不适合传输一些敏感信息,比如信用卡号、密码等。
为了解决HTTP协议的这一缺陷,需要使用另一种协议:安全套接字层超文本传输协议HTTPS。为了数据传输的安全,HTTPS在HTTP的基础上加入了SSL协议,SSL依靠证书来验证服务器的身份,并为浏览器和服务器之间的通信加密。
HTTPS和HTTP的区别主要为以下四点:
一、https协议需要到ca (Certificate Authority)申请证书,一般免费证书很少,需要交费。
二、http是超文本传输协议,信息是明文传输,https 则是具有安全性的ssl加密传输协议。
三、http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
四、http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。
SSL建立过程
三次握手
协商算法
服务器发送证书给客户端
客户端生成对称密钥
客户端发送http请求
服务器通过对称密钥加密后把网页送到客户端
证书的格式 认证中心所发放的证书均遵循X.509 V3 标准
X.509通用的证书格式包含三个文件:key,csr,crt。
key是服务器上的私钥文件,用于对发送给客户端数据的加密,以及对从客户端接收到数据的解密
csr是证书签名请求文件,用于提交给证书颁发机构(CA)对证书签名
crt是由证书颁发机构(CA)签名后的证书,或者是开发者自签名的证书,包含证书持有人的信息,持有人的公钥,以及签署者的签名等信息
pki:public key Infrastructure 公钥基础设施,是一种遵循标准的利用公钥加密技术为电子商务的开展提供了一套安全基础平台的技术规范。
提供公钥加密和数字签名服务的系统或平台,目的是为了管理密钥和证书。
1.7虚拟目录和用户控制。
虚拟目录实现原理:
目的:在一台计算机上创建多个WEB站点,并为每个WEB站点设置不同的主目录和虚拟子目录,每个WEB站点作为各自独立的网站分配给不同的公司或部门。
好处:多个公司或部门的网站就可以共用同一台计算机,而用户感觉每个公司和部门都有各自独立的网站。多个没有实力在Internet上架设自己专用服务器的中小公司可以联合租用一台WEB服务器,对外提供各自的WEB服务而互不影响。
原理:
WEB服务器上的每个WEB站点必须设置有不同的标识信息
WEB浏览器发出的连接和请求信息中包含WEB站点的标识信息
WEB站点的标识信息:
IP地址、端口号、主机名
1.8动态网站搭建
安装包mod_wsgi //web server Gateway Interface// alt 属性是一个必需的属性,它规定在图像无法显示时的替代文本
Listen 8909
mkdir /var/www/alt
<Directory "/var/www/alt">
AllowOverride None
# Allow open access:
Require all granted
</Directory>
<VirtualHost 192.168.0.129:8909>
WSGIScriptAlias / /var/www/alt/webinfo.wsgi
</VirtualHost>
python脚本内容 vim /var/www/alt/webinfo.wsgi
def application(environ, start_response):
status = '200 OK'
output = 'Hello World'
response_headers = [('Content-type', 'text/plain'),
('Content-Length', str(len(output)))]
start_response(status, response_headers)
return [output]
我们搭建网站的方式有多种,
一.1台服务器,1个IP地址,1个网站 访问量大的网站
二.1台服务器,2个IP地址,2个网站,使用不同的IP地址搭建网站。
三.1台服务器,1个IP地址,2个网站,使用不同的端口,比如第一个网站使用默认的80端口,第二个网站使用8080端口。
四.1台服务器,1个IP地址,2个网站,使用不同的主机名,比如www.163.com和tech.163.com 可以是一台服务器上的两个网站,都用的80端口。也就是基于名称的虚拟主机。
搭建web服务实现基于域名www.haha.com并保证web服务传输数据实现加密
https
应用层
表示层 应用层
会话层
传输层 传输层
网络层 互联网层
数据链路层 网络层
物理层
A
B