目录
一. Web服务简介
以下是一些 Web 服务的基本概念和特征
以下是一些主流的 Web 服务器
WEB 服务协议
二. Apache 服务的搭建与配置
2.1 Apache 介绍
2.2 Apache安装
2.3 Apache目录介绍
三. 访问控制
四. 修改默认网站发布目录
五. 虚拟主机
5.1 基于域名的虚拟主机
5.2 基于端口的虚拟主机
5.3 基于 IP 地址的虚拟主机
一. Web服务简介
Web 服务是一种基于网络的软件系统,它通过标准的网络协议(通常是 HTTP 或 HTTPS)提供服务。这些服务可以是静态的,如提供静态网页或文件,也可以是动态的,如处理用户请求并生成动态内容。
以下是一些 Web 服务的基本概念和特征
-
HTTP 协议: Web 服务通常使用 HTTP(Hypertext Transfer Protocol)或其安全版本 HTTPS(HTTP Secure)作为通信协议。HTTP 定义了客户端和服务器之间的请求和响应格式,以及状态码和头部信息等规范。
-
RESTful API: REST(Representational State Transfer)是一种基于 HTTP 协议设计的软件架构风格,用于创建可扩展的 Web 服务。RESTful API 通过定义资源、HTTP 方法和状态码来实现对资源的操作,如 GET(获取)、POST(创建)、PUT(更新)和 DELETE(删除)等。
-
SOAP: SOAP(Simple Object Access Protocol)是另一种用于构建 Web 服务的协议,它使用 XML 格式来定义消息结构和通信协议。SOAP 比较复杂,通常用于企业级应用和基于 XML 的数据交换。
-
Web 服务器: Web 服务运行在 Web 服务器上,它可以是专用的服务器软件(如 Apache、Nginx、Microsoft IIS 等),也可以是集成在应用程序中的服务器组件(如 Node.js、Django、Flask 等)。
-
动态内容生成: Web 服务可以根据用户请求生成动态内容,通常使用服务器端脚本语言(如 PHP、Python、Ruby 等)处理请求并生成 HTML、JSON 或 XML 等格式的响应。
-
扩展性和可伸缩性: 良好设计的 Web 服务具有良好的扩展性和可伸缩性,能够处理大量的并发请求并在需要时进行水平或垂直扩展。
Web 服务在互联网应用开发中起着至关重要的作用,它为用户提供了访问和交互的渠道,并为开发人员提供了构建各种类型应用的基础设施。
以下是一些主流的 Web 服务器
-
Apache HTTP Server: 通常简称为 Apache,是最流行的开源 Web 服务器软件之一。它具有稳定性高、功能强大、模块化设计等特点,支持多种操作系统,如 Linux、Unix、Windows 等。
-
Nginx: Nginx 是一款高性能的开源 Web 服务器和反向代理服务器。它的设计目标是解决 C10k 问题(同时连接数超过 10000),具有低内存消耗、高并发处理能力、灵活的配置等优点,被广泛用于构建高性能的 Web 服务。
-
Microsoft IIS: Internet Information Services(IIS)是由 Microsoft 开发的 Web 服务器软件,用于在 Windows 环境下运行。它集成在 Windows Server 中,支持 ASP.NET、PHP、Node.js 等多种 Web 技术,并提供了强大的管理工具和安全功能。
-
LiteSpeed Web Server: LiteSpeed 是一款高性能的商业 Web 服务器软件,与 Apache 兼容,但通常比 Apache 更快更稳定。它支持 Apache 的配置文件和模块,提供了缓存、反向代理、负载均衡等功能。
-
Caddy: Caddy 是一款现代化的开源 Web 服务器,具有自动 HTTPS 部署、HTTP/2 支持、简单的配置等特点。它使用 Go 语言编写,易于部署和管理,适用于各种类型的 Web 应用。
-
Tomcat: Apache Tomcat 是一个开源的 Java Servlet 容器,用于运行 Java Web 应用。它是 Apache 软件基金会的一个项目,支持 Java Servlet、JavaServer Pages(JSP)等技术,并且可以与 Apache HTTP Server 或 Nginx 结合使用。
这些 Web 服务器各有特点,选择适合自己需求的服务器取决于项目的要求、性能需求、支持的技术栈以及个人偏好等因素。
WEB 服务协议
Web 服务协议是指在 Web 服务中用于通信和数据交换的协议。下面是一些常见的 Web 服务协议:
-
HTTP(Hypertext Transfer Protocol): HTTP 是 Web 服务中最常用的协议之一,它定义了客户端和服务器之间的通信规范。HTTP 使用请求-响应模型,客户端向服务器发送请求,并接收服务器返回的响应。HTTP 通常用于传输 HTML 页面、图片、样式表等静态资源,以及 JSON 或 XML 格式的数据。
-
HTTPS(HTTP Secure): HTTPS 是在 HTTP 协议基础上添加了加密和身份验证机制的安全通信协议。它通过使用 SSL/TLS 协议对通信进行加密,保护用户数据的安全性和隐私。HTTPS 在互联网上广泛用于安全性要求较高的网站和应用。
-
SOAP(Simple Object Access Protocol): SOAP 是一种基于 XML 的通信协议,用于在分布式环境中进行应用程序之间的通信。它定义了 XML 格式的消息结构和通信规范,支持复杂的数据类型和协议扩展。SOAP 主要用于构建企业级应用和 Web 服务。
-
REST(Representational State Transfer): REST 是一种基于 HTTP 协议设计的软件架构风格,用于构建可扩展的 Web 服务。RESTful API 使用 HTTP 方法(如 GET、POST、PUT、DELETE 等)对资源进行操作,并通过 URI 来唯一标识资源。RESTful API 通常使用 JSON 或 XML 格式来表示资源和交换数据。
-
GraphQL: GraphQL 是一种用于构建 API 的查询语言和运行时。与传统的 RESTful API 不同,GraphQL 允许客户端定义需要返回的数据结构,以减少网络请求次数和数据传输量。GraphQL 通常使用 HTTP 或 WebSocket 协议进行通信。
这些协议在不同的场景和需求中发挥着重要的作用,开发人员可以根据项目的需求和特点选择适合的协议来实现 Web 服务。
二. Apache 服务的搭建与配置
2.1 Apache 介绍
Apache 是一个开源的跨平台 Web 服务器软件,全称为 Apache HTTP Server。它是目前世界上最流行的 Web 服务器软件之一,由 Apache 软件基金会开发和维护。Apache 以其稳定性、可靠性、灵活性和强大的功能而闻名,被广泛用于搭建各种类型的网站和 Web 应用。
2.2 Apache安装
Apache的主程序名叫httpd
[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# systemctl disable firewalld
[root@localhost ~]# setenforce 0
[root@localhost ~]# yum install -y httpd
[root@localhost ~# systemctl start httpd
[root@localhost ~]# netstat -lntp | grep 80 #查看apache端口
tcp6 0 0 :::80 :::* LISTEN 2776/httpd#端口80.可以改启动
httpd -k start 或 systemctl start httpd
停止
httpd -k stop 或 systemctl stop httpd
重启
httpd -k restart 或 systemctl restart httpd
index.html:默认访问网站的主页名称
默认发布网站的目录:/var/www/html
2.3 Apache目录介绍
Apache的工作目录:
conf 存储配置文件
conf.d 存储配置子文件
logs 存储日志
modules 存储模块
run 存储Pid文件,存放的pid号码。是主进程号
认识主配置文件/etc/httpd/conf/httpd.conf
ServerRoot "/etc/httpd" #定义工作目录
Listen 80 #监听端口
Listen 192.168.2.8:80 指定监听的本地网卡 可以修改
User apache # 子进程的用户,有可能被人改称www账户
Group apache # 子进程的组
ServerAdmin root@localhost # 设置管理员邮件地址
DocumentRoot "/var/www/html" # 发布网站的默认目录,想改改这里。
IncludeOptional conf.d/*.conf # 包含conf.d目录下的所有*.conf配置文件# 设置DocumentRoot指定目录的属性
<Directory "/var/www/html"> # 网站容器开始标识
Options Indexes FollowSymLinks # 找不到主页时,链接到网站目录以外,如测试页面
AllowOverride None # 对网站设置特殊属性:none不设置特殊属性,all允许
Require all granted # granted表示允许所有人访问,denied表示拒绝所有人访问
</Directory> # 容器结束
DirectoryIndex index.html # 定义主页文件,会自动访问该文件。
三. 访问控制
可以直接编辑apache主配置文件
修改如下代码,进行特定的访问控制:
#1.允许所有IP访问
#默认情况下不用任何修改就是所有人可以访问
<RequireAll>
Require all granted
</RequireAll>#2.拒绝所有IP访问
<RequireAll>
Require all deined
</RequireAll>#3.拒绝特定IP访问
<RequireAll>
Require not ip 192.168.226.129
Require all granted
</RequireAll>#4.允许特定IP访问
<RequireAll>
Require ip 192.168.226.129
</RequireAll>
四. 修改默认网站发布目录
[root@localhost ~]# vim /etc/httpd/conf/httpd.conf#在119行修改网站根目录为/www
DocumentRoot "/www" #在131行把这个也对应的修改为/www
<Directory "/www">[root@localhost ~]# mkdir /www #创建定义的网站发布目录
[root@localhost ~]# echo "这是新修改的网站根目录/www" > /www/index.html #创建测试页面
[root@localhost ~]# systemctl restart httpd #重启服务
五. 虚拟主机
虚拟主机是一种在单个物理服务器上托管多个域名或网站的技术。通过虚拟主机,可以在同一台服务器上运行多个独立的网站,并使它们彼此隔离,就像它们运行在不同的物理服务器上一样。这种技术可以最大程度地利用服务器资源,并提供更灵活和经济高效的解决方案。
5.1 基于域名的虚拟主机
[root@localhost ~]# cd /etc/httpd/conf.d/#创建配置文件
[root@localhost conf.d]# vim test.conf#修改配置文件为如下内容
# 定义第一个虚拟主机,监听所有地址的80端口
<VirtualHost *:80> # 设置此虚拟主机的服务器名称为 www.ceshi.com ServerName www.ceshi.com # 设置此虚拟主机的文档根目录为 /var/www/ceshi DocumentRoot /var/www/ceshi # 配置对文档根目录的访问权限和指令覆盖 <Directory "/var/www/ceshi"> # 不允许 .htaccess 文件覆盖主配置文件中的指令 AllowOverride None # 允许所有用户访问此目录 Require all granted </Directory> # 结束第一个虚拟主机的配置
</VirtualHost> # 定义第二个虚拟主机,监听所有地址的80端口
<VirtualHost *:80> # 设置此虚拟主机的服务器名称为 www.luzheng.com ServerName www.luzheng.com # 设置此虚拟主机的文档根目录为 /var/www/luzheng DocumentRoot /var/www/luzheng # 配置对文档根目录的访问权限和指令覆盖 <Directory "/var/www/luzheng"> # 不允许 .htaccess 文件覆盖主配置文件中的指令 AllowOverride None # 允许所有用户访问此目录 Require all granted </Directory> # 结束第二个虚拟主机的配置
</VirtualHost>#######################################################################[root@qfedu.com conf.d]# mkdir /var/www/ceshi
[root@qfedu.com conf.d]# mkdir /var/www/luzheng#创建测试页面
[root@localhost conf.d]# echo "这是个测试页面" > /var/www/ceshi/index.html
[root@localhost conf.d]# echo 'hello word!' > /var/www/luzheng/index.html
#重启服务
[root@localhost conf.d]# systemctl restart httpd
配置好apache配置文件,最后就要去windows中配置下域名拉
在windows电脑的C:\Windows\System32\drivers\etc这个目录下有个hosts的配置文件新增IP和对应的域名即可,一般要用管理员身份才可以进行编辑修改这个hosts文件。注意你添加的时候要把IP修改成你的电脑的IP。
192.168.226.100 www.ceshi.com
192.168.226.100 www.luzheng.com
注:如果配置都对的前提下打不开或者打开的不对,就用浏览器的无痕模式,或者切换浏览器尝试即可。
5.2 基于端口的虚拟主机
[root@localhost ~]# vim /etc/httpd/conf/httpd.conf +43#添加监听端口 如下图
[root@localhost ~]# cd /etc/httpd/conf.d/#创建配置文件
[root@localhost conf.d]# vim test.conf#修改配置文件为如下内容
<VirtualHost *:80>ServerName www.ceshi.comDocumentRoot /var/www/ceshi<Directory "/var/www/ceshi">AllowOverride All # 允许 .htaccess 文件中的指令覆盖主配置文件中的指令Require all granted</Directory>
</VirtualHost><VirtualHost *:81>ServerName www.luzheng.comDocumentRoot /var/www/luzheng<Directory "/var/www/luzheng">AllowOverride AllRequire all granted</Directory>
</VirtualHost>[root@qfedu.com conf.d]# mkdir /var/www/ceshi
[root@qfedu.com conf.d]# mkdir /var/www/luzheng#创建测试页面
[root@localhost conf.d]# echo "这是个测试页面" > /var/www/ceshi/index.html
[root@localhost conf.d]# echo 'hello word!' > /var/www/luzheng/index.html
#重启服务
[root@localhost conf.d]# systemctl restart httpd
5.3 基于 IP 地址的虚拟主机
使用ifconfig给一个网卡新增ip
ifconfig ens33:0 192.168.226.200
#这里的ens33:0是网络接口ens33的一个别名(也称为子接口)#取消一个IP
ifconfig ens33:0 192.168.226.200 down
使用ip命令给一个网卡新增ip
ip a a 192.168.226.201/24 dev ens33
ip addr add 192.168.226.201/24 dev ens33 label ens33:1
#这里label ens33:0 是起得一个别名#删除一个IP
ip addr del 192.168.226.201/24 dev ens33
[root@localhost ~]# vim /etc/httpd/conf.d/test.conf<VirtualHost 192.168.226.200:80>ServerName www.ceshi.comDocumentRoot /var/www/ceshi<Directory "/var/www/ceshi">AllowOverride None # 不允许 .htaccess 文件覆盖主配置文件中的指令Require all granted</Directory>
</VirtualHost><VirtualHost 192.168.226.201:81>ServerName www.luzheng.comDocumentRoot /var/www/luzheng<Directory "/var/www/luzheng">AllowOverride None Require all granted</Directory>
</VirtualHost>[root@localhost ~]# systemctl restart httpd
可以配置域名解析,也可以不用配域名解析
如果用域名去访问,记得去windows中删除之前配置得域名,更新成新得IP,如图: