目录
状态代码:由三位数字组成,第一个数字定义了响应的类别,且有五种可能取值。
服务:是运行在操作系统后台的一个或多个程序,为用户或系统提供某项特定的服务,服务配置最多的是网络服务。
建议火狐浏览器,windows自带的edge浏览器有时无法访问自建服务器的信息
www简介
www(world wide web):全球信息广播,通常说的上网就是使用www来查询用户所需要的信息,www可以结合文字,图形,影像等格式反馈给用户,并通过单击超链接的方式将信息以internet传递到世界各处去
与其他服务器类似,当连接上www网站,该网站会提供一些数据,而客户端则要使用可以解析这些数据的软件来处理,那就是浏览器。
服务器所提供的最主要数据是超文本标记语言(HTML:Hyper Text Mark Language ),多媒体文件(图片,影像,声音,文字等都属于多媒体或称为超媒体),HTML只是一些纯文本数据,通过所谓的标记来规范所要显示的数据格式(.html .htm .php)
网址及HTTP简介
web服务器提供的这些数据大部分都是文件,那么我们需要在服务器端先将数据文件写好,并且放置在某个特殊的目录下面,这个目录就是我们整个网站的首页,在redhat中,这个目录默认在/var/www/html 浏览器是通过你在地址栏中输入你所需要的网址来取得这个目录的数据的
URL:Uniform Resource Locator,统一资源定位符,对可以从互联网上得到的资源的位置和访问方法的一种简洁表示,是互联网上标准资源的地址。
网址格式:<协议>://<主机IP或主机名>[:port]/<目录资源,路径>
浏览器常支持的协议有:http,https,ftp等
主机名或主机地址:主机地址就是服务器在因特网所在的IP地址,如果是主机名的话,那么 就需要域名解析了
端口号(port):http为80/8080,https为443 (IANA:互联网数字分配机构)
0-1023:永久的分配给固定的应用程序使用,特权口(只有管理员有权限启 用并让进程监听)
1024-41951:注册端口,要求不是特别严格,分配给程序注册为应用使用
41952-60000:客户端程序随机使用的端口,动态端口或私有端口
状态代码:由三位数字组成,第一个数字定义了响应的类别,且有五种可能取值。
1xx:指示信息 —— 表示请求已接收,继续处理
2xx:成功 —— 表示请求已被成功接收、理解、接受
3xx:重定向 —— 要完成请求必须进行更进一步的操作
4xx:客户端错误 —— 请求有语法错误或请求无法实现
5xx:服务器端错误 —— 服务器未能实现合法的请求
常见状态代码、状态描述的说明如下:
200 OK:客户端请求成功
400 Bad Request:客户端请求有语法错误,不能被服务器所理解
401 Unauthorized:请求未经授权,这个状态代码必须和 WWW-Authenticate 报头域 一起使用 403 Forbidden:服务器收到请求,但是拒绝提供服务
404 Not Found:请求资源不存在,举个例子:输入了错误的URL
500 Internal Server Error:服务器发生不可预期的错误
503 Server Unavailable:服务器当前不能处理客户端的请求,一段时间后可能恢复正常
505:服务器并不支持在请求中所标明 HTTP 版本
状态代码有很多,想要了解具体含义的可自行搜索其含义
HTTP协议请求的工作流程
(1)终端客户在web浏览器地址栏输入访问地址http://www.ceshi.com:80/index.html
(2)web浏览器请求DNS服务器把域名www.ceshi.com解析成web服务器的IP地址
(3)web浏览器将端口号(默认是80)从访问地址(URL)中解析出来
(4)web浏览器通过解析后的ip地址及端口号与web服务器之间建立一条TCP连接
(5)建立TCP连接后,web浏览器向web服务器发送一条HTTP请求报文
(6)web服务器响应并读取浏览器的请求信息,然后返回一条HTTP响应报文。
(7)web服务器关闭HTTP连接,关闭TCP连接,web浏览器显示访问的网站内容到屏幕上
协议:约束服务端和客户端请求的格式;区分应用程序
端口:区分不同的流量,接受数据包后判断通过哪个程序解析
HTTP超文本传输协议(HyperText Transfer Protocal)是互联网上最广泛的一种网络协议,所有的www文件都必须遵守这个标准
它是建立在TCP上一种无状态连接,整个基本的工作流程是客户端发送一个HTTP请求,说明客户端想要访问的资源和请求的动作,服务端收到请求之后,服务端开始处理请求,判断客户端是否有权限访问数据资源文件,有权限后查看该数据信息是否存在,如果有的话,信息通过响应包的形式把数据包发送给客户端主机,客户端接收后开始解包,可查看到服务端响应的数据结果。其中一个请求的开始到一个响应的结束称为事务,当一个事务结束后还会在服务端添加一条日志条目。
当一个事务完成之后,HTTP的连接会断开
www服务器的基本配置
1.主要配置文件:/etc/httpd/conf/httpd.conf
2.额外的参数文件:/etc/httpd/conf.d/*.conf
如果你不想要修改原始配置文件httpd.conf的话,那么你可以将你自己的额外参数文件独立出来, 例如你想要有自己的额外设置值,可以将它写入 /etc/httpd/conf.d/zhuji.conf (注意,扩展 名一定是.conf),而启动Apache时,这个文件就会被读入主要配置文件当中了。
3. 默认的首页所在目录 /var/www/html/ ,当输入网址时所显示的数据,就是放在这个目录当中的首 页文件(默认为index.html)。
4. 默认给一些可执行的CGI(网页程序)程序放置的目录 /var/www/cgi-bin/ ,当输入网址/cgi-bin/ 时所显示的数据所在。
5. 默认的Apache日志文件都放在 /var/log/httpd/ ,对于流量比较大的网站来说,一个星期的日志 文件的数据可以达到1GB左右
主配置文件内容:
[root@localhost ~]# vim /etc/httpd/conf/httpd.conf
34 ServerRoot "/etc/httpd" #http服务的主路径为/etc/httpd(全局生效)
45 Listen 80 #指定当前主机监听80端口(也可以指定ip),设置80为web服务器的默认 端口,也可以自定义监听多个端口
59 Include conf.modules.d/*.conf #包括/etc/httpd/conf.modules.d/*.conf的所有文件
69 User apache #服务的用户(ps -ef | grep httpd,先以root用户把/usr/sbin/httpd 服务 启动起来)启动服务后转换的身份,在启动服务时通常以root身份,然后转换身份。若没 有apache用户则进程无法运行
70 Group apache
89 ServerAdmin root@localhost #指定服务管理员的邮箱,有问题的时候给你发邮件
98 #ServerName www.example.com:80 搭建web服务后该服务的访问名称(主机现在 没有可靠的完全性的域名)
注:默认是不需要指定的,服务器通过名字解析过程来获得自己的名字,但如果解析有问题 (如反向解析不正确),或者没有DNS名字,也可以在这里指定ip地址,当这项不正确 的时候服务器不能正常启动。解决办 法就是启动该项把www.example.com:80修改为 自己的域名或者直接修改为localhost
105 <Directory /> #目录为根,<>为起始标志,</>为结束标志
106 AllowOverride none #不允许这个目录下的访问控制文件来改变这里的配置, 这也意味着不用查看这个目录下的访问控制文件。
107 Require all denied #拒绝访问根
108 </Directory> #和是一组标签,目录控制容器
(基于标签式格式添加配置信息,配置参数局部生效,仅对指定的标签生效)
122 DocumentRoot "/var/www/html" #网页文件存放的目录
127 <Directory "/var/www"> #对于 /var/www 该目录所作的设置,对其他目录不生效
128 AllowOverride None #此目录标记不允许覆盖,若再定义同目录的标签,多个 目录标签之间不会覆盖
129 # Allow open access:
130 Require all granted #允许用户访问
131 </Directory>
134 <Directory "/var/www/html">
147 Options Indexes FollowSymLinks #索引,跟踪软链接(实现文件共享)
154 AllowOverride None
159 Require all granted
160 </Directory>
166 <IfModule dir_module> #加载一个目录模块
167 DirectoryIndex index.html #目录的默认索引(网站首页)
168 </IfModule>
174 <Files ".ht*"> #记录账号和密码
175 Require all denied #不能访问
176 </Files>
185 ErrorLog "logs/error_log" #错误日志文件所在位置,可用于查看日志排错
192 LogLevel warn
194 <IfModule log_config_module>
#日志配置模块 /var/log/httpd,日志模块:通过时间节点去记录(man date)
199 LogFormat "%h %l %u %t \"%r\" %>s %b \"%{ Referer}i\" \"%{User- Agent}i\""combined
200 LogFormat "%h %l %u %t \"%r\" %>s %b" common
201
202 <IfModule logio_module>
204 LogFormat "%h %l %u %t \"%r\" %>s %b \" %{Referer}i\" \"%{UserAgent}i\" %I %O" combi nedio
205 </IfModule>
220 CustomLog "logs/access_log" combined #访问日志位置(服务正常运行但不能 访问结果可查看该文件)
221 </IfModule>
223 <IfModule alias_module> #别名模块,别名不创建目录,只是描述名称,通过描述 名称所寻找的是真实路径下对应的文件,真实路径必须存在
250 ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"
251
252 </IfModule>
cgi(通用网关接口)是web服务器运行时外部程序的规范,按cgi编写的程序可以扩展服务器的功能。cgi 应用程序能与浏览器进行交互,还可通过数据库API与数据库服务器等外部数据源进行通信,从数据库服务器中获取数据
257 <Directory "var/www/cgi-bin"> #记录动态资源界面
258 AllowOverride None
259 Options None
260 Require all granted
261 </Directory>
264 <IfModule mime_module> #多用途互联网邮件扩展模块
269 TypesConfig /etc/mime.types
286 AddType application/x-compress .Z #压缩格式,传输时可对文件做压缩出理
287 AddType application/x-gzip .gz .tgz #压缩格式,传输时可对文件做压缩出理
308 AddType text/html .shtml
309 AddOutputFilter INCLUDES .shtml
310 </IfModule>
网页中有文本,语音,视频等,传输过程中mime对数据做一个类型的标记,客户端知道该数据文件的类型并解析
319 AddDefaultCharset UTF-8 默认字符集 #既支持英文也支持中文
321 <IfModule mime_magic_module>
327 MIMEMagicFile conf/magic
328 </Ifmodule>
334 # Some examples:
335 #ErrorDocument 500 "The server made a boo boo."
336 #ErrorDocument 404 /missing.html
337 #ErrorDocument 404 "/cgi-bin/missing_handler.pl"
338 #ErrorDocument 402 http://www.example.com/subscription_info.html351 EnableSendfile on #启用文件发送
357 IncludeOptional conf.d/*.conf #加载 conf.d 目录下所有以 .conf 结尾的文件
问题:
1.设置默认访问apache欢迎界面的配置文件是哪个?apache欢迎界面的具体文件在哪儿?
cat /etc/httpd/conf.d/welcome.conf
cat /usr/share/httpd/noindex/index.html
2.为什么自己定义的静态页面是在/var/www/html目录?为什么静态网页的名字是index.html? DocumentRoot /var/www/html
www服务器搭建
静态网页搭建
服务端:linux 192.168.80.102
客户端:windows浏览器
1.安装Apache包
2.启动程序
后缀 .service 可省略
3.创建网页资源文件,编辑内容
4.关闭防火墙,selinux访问控制程序
(selinux开启的话自定义路径下的网页文件是没有权限访问的,访问时会自动加载欢迎界面;
firewalld开启的话,httpd会打开失败)
两个命令为临时生效,主机重启后需再次关闭;如果不关闭的话,访问界面为apache欢迎界面
永久关闭防火墙
使selinux不会阻止访问内容信息
5.访问网页
6.创建子页面并访问
多ip搭建多个网站
服务器ip :192.168.80.102 对应网页存放路径:/www/openlab
192.168.80.11 /www/nanhang
192.168.80.12 /www/jincheng
配置文件路径 /etc/httpd/conf.d/vhosts.conf
先安装对应的服务软件 Apache http server
1.添加多ip
或者用nmcli添加ip
2.在子配置目录中创建以 ‘.conf’结尾的文件并自定义配置内容
(主配置文件会加载子配置文件中的信息,新建文件名自定义以便于后期排错就好)
ServerName标记后期客户端匹配当前虚拟主机的ip或域名,不能随意写,应写主机的IP或域名
对 '/www' 开启访问权限,‘www’下级目录也会有权限,httpd进程可以访问
3.根据配置创建对应的资源文件并写入内容
4.关闭防火墙,selinux访问控制程序
5.重新加载网卡设备,查看ip,重启httpd进程
6.浏览器访问页面
排错方法
# systemctl status httpd (推荐)
# journalctl -xe (显示当前系统全局日志信息,查找麻烦)
# httpd -t
# 打开配置文件检查内容
多端口搭建多个网站
服务器ip 192.168.10.100 端口 80 8888 10000
建议端口号范围:1024-41951且冷门不被使用的
1.创建子配置文件并编辑信息
2.根据配置信息 创建对应资源文件
3.关闭firewalld selinux并重启httpd
4. elink 或者 web网站测试工具 curl (如果无法判断文件是否正常,通过浏览器刷新查看)
多域名搭建多网站
浏览器如何通过域名去查询URL对应的IP(对应服务器地址):
1、浏览器缓存:浏览器会缓存DNS记录,如果有记录则会匹配
2、操作系统缓存:如果浏览器缓存中找不到需要的DNS记录,那就去操作系统中的hosts文件查找。hosts是一个没有扩展名的系统文件,其作用就是将一些常用的网址域名与其对应的IP地址建 立一个关联"数据库",当用户在浏览器中输入一个需要登录的网址时,系统会首先自动从Hosts文 件中寻找对应的IP地址,一旦找到,系统会立即打开对应网页,如果没有找到,则系统会再将网址提交DNS域名解析服务器进行IP地址的解析。
windows下的hosts文件路径:C:\Windows\System32\drivers\etc\hosts
Linux下的hosts文件路径:/etc/hosts
3、路由缓存:路由器也有DNS缓存。
4、ISP的DNS服务器:ISP是互联网服务提供商(Internet Service Provider)的简称,ISP有专门的DNS服务器应对DNS查询请求。
5、根服务器:ISP的DNS服务器还找不到的话,它就会向根服务器发出请求,进行递归查询 (DNS服务器先问根域名服务器.com域名服务器的IP地址,然后再问.com域名服务器,依次类 推)。
1.创建配置文件并编辑
2.根据配置信息创建对应资源文件
3.关闭firewalld sellinux 重启httpd
4. 访问网页
通过linux访问:配置 /etc/hosts
通过windows访问
修改保存文件需要权限,可以用 Notepad++ 打开 这里不做演示