Linux之web服务器

目录

www简介

常见Web服务程序介绍

服务器主机

主要数据

浏览器

网址及HTTP简介

URL

http请求方法

状态码

[MIME(Multipurpose Internet Mail Extension)](#MIME(Multipurpose Internet Mail Extension))

www服务器的类型

静态网站

动态网站

Apache服务的搭建

Apache的安装

准备工作

httpd所需文件目录

主配置文件

案例

[案例1 --- 快速搭建网站](#案例1 --- 快速搭建网站)

[案例2 --- 替换网页目录](#案例2 --- 替换网页目录)

[案例3 --- 搭建一个个人用户主页功能网站,实现通过身份验证功能来访问数据](#案例3 --- 搭建一个个人用户主页功能网站,实现通过身份验证功能来访问数据)

[案例4 --- 网页验证密码登录](#案例4 --- 网页验证密码登录)


www简介

Web网络服务也叫WWW(World Wide Web 全球信息广播)万维网服务,一般是指能够让用户通过浏览器访问到互联网中文档等资源的服务

Web 网络服务是一种被动访问的服务程序,即只有接收到互联网中其他主机发出的请求后才会响应,最终用于提供服务程序的 Web 服务器会通过 HTTP(超文本传输协议)或HTTPS(安全超文本传输协议)把请求的内容传送给用户

常见Web服务程序介绍

Windows系统中默认Web服务程序是I I S(Internet Information Services),这是一款图形化的网站管理工具,IIS程序不光能提供Web网站服务,还能够提供FTP、NMTP、SMTP等服务功能,但只能在Windows系统中使用

2004 年 10 月 4 日,为俄罗斯知名门户站点而开发的 Web 服务程序 Nginx 横空出世。Nginx 程序作为一款轻量级的网站服务软件,因其稳定性和丰富的功能而快速占领服务器市场,但Nginx 最被认可的还当是低系统资源占用、内存少且并发能力强,因此得到了国内诸如新浪、网易、腾讯等门户站的青睐

Apache --- 取自美国印第安人土著语Apache,寓意着拥有高超的作战策略和无穷的耐性,由于其跨平台和安全性广泛被认可且拥有快速、可靠、简单的API扩展。目前拥有很高的Web服务软件市场占用率,全球使用最多的Web服务软件,开源、跨平台(可运行于Unix,linux,windows中)

Tomcat ---属于轻量级的Web服务软件,一般用于开发和调试JSP代码,通常认为Tomcat是Apache的扩展程序

服务器主机

网站 --- 是由域名、网页源程序和主机空间组成的,其中主机空间 则是用于存放网页源代码并能够将网页内容展示给用户,如果您想要在互联网中搭建网站并被顺利访问,主机空间一定不能选错

虚拟主机 --- 在一台服务器中分出一定的磁盘空间供用户放置网站、存放数据等,仅提供基础的网站访问、数据存放与传输流量功能,能够极大的降低用户费用,也几乎不需要管理员维护除网站数据以外的服务,适合小型网站

VPS(Virtual Private Server) --- 在一台服务器中利用OpenVZ、Xen或KVM等虚拟化技术模拟出多个"主机",每个主机都有独立的IP地址、操作系统,实现不同VPS之间磁盘空间、内存、CPU资源、进程与系统配置间的完全隔离,管理员可自由使用分配到的主机中的所有资源,所以需要有一定的维护系统的能力,适合小型网站

云服务器(ECS) --- 是一种整合了计算、存储、网络,能够做到弹性伸缩的计算服务,其使用起来与VPS几乎一样,但差别是云服务器建立在一组集群服务器中,每个服务器都会保存一个主机的镜像(备份),大大的提升了安全稳定性,另外还具备了灵活性与扩展性,用户只需按使用量付费的即可,适合大中小型网站 ​​​

独立服务器 --- 这台服务器仅提供给您使用,详细来讲又可以区分为租用方式与托管方式

租用方式 --- 用户只需将硬件配置要求告知IDC服务商,服务器硬件设备由机房负责维护,运维管理员一般需要自行安装相应的软件并部署网站服务,租期可以为月、季、年,减轻了用户初期对硬件设备的投入,适合大中型网

托管方式 --- 用户需要自行购置服务器后交给IDC服务供应商的机房进行管理(缴纳管理服务费用),用户对服务器硬件配置有完全的控制权,自主性强,但需要自行维护、修理服务器硬件设备,适合大中型网站

主要数据

服务器所提供的最主要数据是超文本标记语言(Hyper Text Markup Language,HTML)、多媒体文件(图片、影像、声音、文字等,都属于多媒体或称为超媒体),HTML只是一些纯文本数据,通过所谓的标记来规范所要显示的数据格式

浏览器

客户端收到服务器的数据之后需要软件解析服务器所提供的数据,最后将效果呈现在用户的屏幕上

网址及HTTP简介

web服务器提供的这些数据大部分都是文件,那么我们需要在服务器端先将数据文件写好,并且放置在某个特殊的目录下面,这个目录就是我们整个网站的首页,在redhat中,这个目录默认在 /var/www/html

浏览器是通过你在地址栏中输入你所需要的网址来取得这个目录的数据的

URL

Uniform Resource Locator,统一资源定位符,对可以从互联网上得到的资源的位置和访问方法的一种简洁的表示,是互联网上标准资源的地址

网址格式 --- <协议>://<主机或主机名>[:port]/<目录资源,路径>**

协议 --- http、https、ftp等

主机地址或者主机名--- 主机地址就是服务器在因特网所在的IP地址。如果是主机名的话,那么就需要域名解析了

端口号(port) --- http为80,https为443 (IANA:互联网数字分配机构)

0-1023--- 永久地分配给固定的应用程序使用

1024-41951 --- 注册端口,但要求不是特别严格,分配给程序注册为某应用使用

41952-60000 --- 客户端程序随机使用的端口,动态端口,或私有端口

http请求方法

在http通信中,每个http请求报文都包含一个方法,用以告诉web服务器端需要执行哪些具体的动作,这些动作包括:获取指定web页面、提交内容到服务器、删除服务器上资源文件等

状态码

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 --- 服务器当前不能处理客户端的请求,一段时间后可能恢复正常

MIME(Multipurpose Internet Mail Extension)

MIME(Multipurpose Internet Mail Extension,多用途因特网邮件扩展)最初是为了解决在不同的电子邮件系统之间搬移报文时存在的问题。后来http也支持了这个功能,用它来描述数据并标记不同的数据内容类型

当web服务器响应http请求时,会为每一个http对象数据加一个MIME类型。当web浏览器获取到服务器返回的对象时,会去查看相关的MIME类型,并进行相应的处理

|------------------------|--------------------|
| MIME类型 | 文件类型 |
| text/html | html、htm、shtml文本类型 |
| text/css | css文本类型 |
| text/xml | xml文本类型 |
| image/gif | gif图像类型 |
| image/jpeg | jpeg、jpg图像类型 |
| application/javascript | js文本类型 |
| text/plain | txt文本类型 |
| application/json | json文本类型 |
| video/mp4 | mp4视频类型 |
| video/quicktime | mov视频类型 |
| video/x-flv | flv视频类型 |
| video/x- | wmv视频类型 |
| video/x-msvideo | avi视频类型 |

www服务器的类型

静态网站

仅提供用户浏览的单向静态网页,单纯是由服务器单向提供数据给客户端,Server不需要与client端有互动,可以浏览网站,但是无法数据上传

动态网站

该站可以让服务器与用户互动,常见的例如留言板,博客。这种类型的网站需要通过"网页程序语言"来实现与用户互动的行为。常见的例如:PHP网页程序语言,配合数据库系统来进行数据的读、写。当你在向服务器请求数据时,其实是通过服务器端同一个网页程序在负责将数据读出或写入数据库,变动的是数据库的内容,网页程序并没有任何改变

另外一种交互式的动态网页主要是在客户端实现。服务端将可执行的程序代码(JavaScript)传送给客户端,客户端的浏览器如果提供JavaScript的功能,那么该程序就可以在客户端的计算机上面工作了;另外一种可在客户端执行的就是flash动画格式,在这种动画格式内还可以进行程序设计

搭建动态网站的需求 --- LAMP(Linux+Apache+MySQL+PHP)

Apache服务的搭建

Apache的安装

复制代码
[root@localhost ~]# yum install httpd -y

准备工作

vbnet 复制代码
[root@localhost ~]# setenforce 0

[root@localhost ~]# systemctl stop firewalld

[root@localhost ~]# systemctl disable firewalld

[root@localhost ~]# systemctl start httpd # 启动httpd

[root@localhost ~]# systemctl enable httpd # 设置开机启动

[root@localhost ~]# setenforce 0 #暂时关闭selinux

[root@localhost ~]# systemctl status httpd # 查看httpd状态,q键退出查看

httpd所需文件目录

服务目录:/etc/httpd

主配置文件:/etc/httpd/conf/httpd.conf

网页数据目录:/var/www/html

网站访问日志:/var/log/httpd/access_log

错误日志:/var/log/httpd/error_log

主配置文件

vbnet 复制代码
[root@localhost ~]# vim /etc/httpd/conf/httpd.conf 
vbnet 复制代码
34 ServerRoot "/etc/httpd"   # 服务目录
46 #Listen 12.34.56.78:80   # 设置监听的IP地址及端口
47 Listen 80    # 默认开启监听端口为80
61 Include conf.modules.d/*.conf  # 加载额外配置文件
71 User apache  # 运行服务的用户
72 Group apache # 运行服务的工作组
91 ServerAdmin root@localhost  # 管理者的邮箱
100 #ServerName www.example.com:80  # 设置域名及端口号,必须要有域名解析

107 <Directory />  # <> 表示起始标志,</>  表示结束标志
# 设置目录的权限,,当浏览器中输入URL地址后,若访问服务器某目录下的某个文件,必须要设置其权限,保证数据的安全性
# AllowOverride :是否允许权限覆盖,如果有额外的权限文件,是否允许额外文件来对当前Directory进行权限覆写
108     AllowOverride none   # 不允许覆盖 
109     Require all denied  # 禁止所有来源访问文件或目录
        # Require all granted   允许所有来源访问
110 </Directory>



124 DocumentRoot "/var/www/html"  # 重点,网页存放的默认目录
129 <Directory "/var/www">  # 设置网页目录的权限,与DocumentRoot搭配使用
130     AllowOverride None
131     # Allow open access:
132     Require all granted
133 </Directory>

案例

案例1 --- 快速搭建网站

vbnet 复制代码
[root@localhost ~]# vim /etc/httpd/conf/httpd.conf 

[root@localhost ~]# echo "welcome to www.baidu.com" > /var/www/html/index.html # 写入网页数据

[root@localhost ~]# systemctl restart httpd

# 打开虚拟机的火狐浏览器输入127.0.0.1测试
vbnet 复制代码
# 或者推过curl命令查看网站的网页数据,验证网站是否能访问
[root@localhost ~]# curl 127.0.0.1

案例2 --- 替换网页目录

新建网页存储目录

复制代码
[root@localhost /]# mkdir /web1

创建index.html文件

vbnet 复制代码
[root@localhost web1]# vim index.html
Welcome to Apache
编辑上述内容

修改配置文件

复制代码
[root@localhost web1]# vim /etc/httpd/conf/httpd.conf
# 定位第124行。修改如下:
DocumentRoot "/web1"

# 定位第129行,修改如下:
<Directory "/web1">
    AllowOverride None
    # Allow open access:
    Require all granted
</Directory>

重启服务

复制代码
[root@localhost web1]# systemctl restart httpd

测试

注意:

要关闭selinux

vbnet 复制代码
[root@localhost conf.d]# setenforce 0

案例3 --- 搭建一个个人用户主页功能网站,实现通过身份验证功能来访问数据

如果想在系统中为每一位用户建立一个独立的网站,通常使用基于虚拟主机的功能来创建部署多个网站,但这个工作会让管理者苦不堪言,尤其是用户数据量很大的情况时,而且用户自行管理网站时,还会碰到权限限制,需要为此做很多额外的工作,其实,httpd服务程序提供的个人主页功能可以完全胜任此工作,该功能可以让系统内所有用户在自己的家目录中管理个人网站,且访问也非常容易

准备工作

复制代码
# 关闭selinux和firewalld软件

[root@localhost ~]# yum  install  httpd  -y

[root@localhost ~]# systemctl  start  httpd

[root@localhost ~]# systemctl  enable   httpd

编辑httpd目录中 == 用户主页配置 == 文件(不是httpd.conf)

vbnet 复制代码
[root@localhost ~]# vim /etc/httpd/conf.d/userdir.conf 

    #UserDir disabled  # 增加注释#,默认为关闭状态,增加注释表示开启功能
   	UserDir public_html  # 取消注释#,即开启用户家目录功能,表示网站数据存储在/home/普通账户名/public_html中

创建2个用户

vbnet 复制代码
[root@localhost ~]# useradd t1
[root@localhost ~]# passwd t1
更改用户 t1 的密码 。
新的密码:              # 密码:123456
无效的密码: 密码少于 8 个字符
重新输入新的密码: 
passwd:所有的身份验证令牌已经成功更新。
[root@localhost ~]# useradd t2
[root@localhost ~]# passwd t2
更改用户 t2 的密码 。
新的密码:            # 密码:654321
无效的密码: 密码少于 8 个字符
重新输入新的密码: 
passwd:所有的身份验证令牌已经成功更新。

切换到普通用户 ,进入家目录,新建存储网站数据的public_html,并设置权限

vbnet 复制代码
[root@localhost /]# su t1
[t1@localhost /]$ cd ~    # 进入t1的家目录
[t1@localhost ~]$ pwd
/home/t1
[t1@localhost ~]$ mkdir public_html    # 新建存储网站数据的目录
[t1@localhost ~]$ ls
public_html
[t1@localhost ~]$ cd public_html/
[t1@localhost public_html]$ vim index.html #创建文件并并写数据
This is t1
vbnet 复制代码
[t1@localhost ~]$ chmod -Rf 755 /home/t1    # 设置权限
[t1@localhost ~]$ ll 
vbnet 复制代码
[t1@localhost ~]$ su t2
Password: 
[t2@localhost t1]$ cd ~
[t2@localhost ~]$ mkdir public_html
[t2@localhost ~]$ cd public_html/
[t2@localhost public_html]$ vim index.html
[t2@localhost public_html]$ cat index.html
This is t2
[t2@localhost public_html]$ chmod -Rf 755 /home/t2
[t2@localhost public_html]$ cd ..
[t2@localhost ~]$ ll
total 0
drwxr-xr-x. 2 t2 t2 24 Aug 30 19:11 public_html
[t2@localhost ~]$ 
vbnet 复制代码
[t2@localhost ~]$ su root #切换回管理员
Password: 
[root@localhost t2]# cd ~

重启服务

vbnet 复制代码
[root@localhost ~]# systemctl restart httpd

未报错,则重启成功

测试

vbnet 复制代码
192.168.149.128/~t1
192.168.149.128/~t2

案例4 --- 网页验证密码登录

准备工作

vbnet 复制代码
# 恢复之前配置文件中的配置

[root@localhost ~]# vim  /etc/httpd/conf.d/userdir.conf 

[root@localhost ~]# vim  /etc/httpd/conf/www/httpd.conf

# 关闭selinux和firewalld软件

[root@localhost ~]# setenforce 0

[root@localhost ~]# systemctl stop firewalld

搭建网站,设置密码访问控制

vbnet 复制代码
[root@localhost ~]# cd /
[root@localhost /]# mkdir -p /www/zy
[root@localhost /]# htpasswd -c /etc/httpd/paszy t1
New password: 
Re-type new password:     # 123456
Adding password for user t1
[root@localhost /]# htpasswd  /etc/httpd/paszy t2     不能加-c
New password: 
Re-type new password:     # 654321
Adding password for user t2
[root@localhost /]# 

编辑文件配置

vbnet 复制代码
[root@localhost /]# vim /etc/httpd/conf/httpd.conf #编辑主配置文件
DocumentRoot "/www/zy"   # 设置网页启动目录

<Directory "/www/zy">    # 设置网页启动目录的访问权限
    AllowOverride None
    # Allow open access:
    Require all granted
</Directory>

<Directory  "/www/zy">  
        authuserfile  /etc/httpd/pszy
        authname  "My  privately website"
        authtype  basic
        require   user  t1 t2
</Directory>

重启服务

vbnet 复制代码
[root@localhost /]# systemctl restart httpd

测试

相关推荐
ICscholar2 小时前
ExaDigiT/RAPS
linux·服务器·ubuntu·系统架构·运维开发
sim20202 小时前
systemctl isolate graphical.target命令不能随便敲
linux·mysql
薛定谔的猫19823 小时前
RAG(二)基于 LangChain+FAISS + 通义千问搭建轻量级 RAG 检索增强生成系统
运维·服务器·langchain
米高梅狮子3 小时前
4. Linux 进程调度管理
linux·运维·服务器
再创世纪4 小时前
让USB打印机变网络打印机,秀才USB打印服务器
linux·运维·网络
fengyehongWorld5 小时前
Linux ssh端口转发
linux·ssh
昨夜见军贴06165 小时前
IACheck AI审核如何实现自动化来料证书报告审核,全面提升生产效率与合规水平
运维·人工智能·自动化
知识分享小能手6 小时前
Ubuntu入门学习教程,从入门到精通, Ubuntu 22.04中的Shell编程详细知识点(含案例代码)(17)
linux·学习·ubuntu
浩子智控7 小时前
电子产品设计企业知识管理
运维·服务器·eclipse·系统安全·硬件工程
以太浮标7 小时前
华为eNSP模拟器综合实验之-BGP路由协议的配置解析
服务器·开发语言·php