• 第四章 Web服务器(1)


    目录

    1.www简介        

    1.1.常见Web服务程序介绍        

    1.2.服务器主机

    1.3.主要数据

    1.4.浏览器

    1.5网址及HTTP简介

    1.5.1.URL

    1.5.2.http请求方法:

    1.5.3.HTTP协议请求的工作流程

    1.6.www服务器的类型

    1.6.1.静态网站

    1.6.2.动态网站

    2.快速安装Apache

    2.1 安装Apaxhe:

    2.2 httpd所需目录

    2.3主配置文件:

    全局参数:

    局部参数:<>   

    2.4 网站的搭建

    2.4.1 快速搭建一个网站

    2.4.2更换网页目录

    2.4.3 内网穿透

    2.4.4  设置用户密码访问

    2.4.5 通过主配置文件实现密码验证访问网站

    3.虚拟主机功能

    3.1.概述

    3.2基于IP 地址的虚拟主机

    3.2.2 实验6

    3.3.基于端口号的虚拟主机

    3.3.2实验7

    3.4基于域名的虚拟主机

    3.4.1.原理

    3.4.2.域名解析

    3.4.3 实验8

    3.5 使用云服务搭建网站


    1.www简介       

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

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

    1.1.常见Web服务程序介绍
            

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

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

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

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

    1.2.服务器主机


            网站是由域名、网页源程序和主机空间组成的,其中主机空间则是用于存放网页源代码并能够将网页内容展示给用户,虽然本小节与Apache服务没有直接关系,但如果您想要在互联网中搭建网站并被顺利访问,主机空间一定不能选错

            虚拟主机:在一台服务器中分出一定的磁盘空间供用户放置网站、存放数据等,仅提供基础的网站访问、数据存放与传输流量功能,能够极大的降低用户费用,也几乎不需要管理员维护除网站数据以外的服务,适合小型网站
            VPS(Virtual Private Server):在一台服务器中利用OpenVZ、Xen或KVM等虚拟化技术模拟出多个“主机”,每个主机都有独立的IP地址、操作系统,实现不同VPS之间磁盘空间、内存、CPU资源、进程与系统配置间的完全隔离,管理员可自由使用分配到的主机中的所有资源,所以需要有一定的维护系统的能力,适合小型网站

            云服务器(ECS):是一种整合了计算、存储、网络,能够做到弹性伸缩的计算服务,其使用起来与VPS几乎一样,但差别是云服务器建立在一组集群服务器中,每个服务器都会保存一个主机的镜像(备份),大大的提升了安全稳定性,另外还具备了灵活性与扩展性,用户只需按使用量付费的即可,适合大中小型网站。
            独立服务器:这台服务器仅提供给您使用,详细来讲又可以区分为租用方式与托管方式

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

                    托管方式:用户需要自行购置服务器后交给IDC服务供应商的机房进行管理(缴纳管理服务费用),用户对服务器硬件配置有完全的控制权,自主性强,但需要自行维护、修理服务器硬件设备,适合大中型网站
                    另外有必要提醒,选择主机空间供应商时请一定要注意看口碑,综合分析再决定购买,某些供应商会有限制功能、强制添加广告、隐藏扣费或强制扣费等恶劣行为,一定一定不要上当!

    1.3.主要数据


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

    1.4.浏览器
     

            客户端收到服务器的数据之后需要软件解析服务器所提供的数据,最后将效果呈现在用户的屏幕上
            那么著名的浏览器就有内建在Windows操作系统内的IE浏览器 (淘汰)和Microsoft Edge,还有Firefox浏览器和Google的chrome浏览器

    1.5网址及HTTP简介

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

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


    1.5.1.URL


            Uniform Resource Locator,统一资源定位符,对可以从互联网上得到的资源的位置和访问方法的一种简洁的表示,是互联网上标准资源的地址
            网址格式:<协议>://<主机或主机名>[:port]/<目录资源,路径>**
            协议: : http、https、ftp等
            主机地址或者主机名: 主机地址就是服务器在因特网所在的IP地址。如果是主机名的话,那么就需要域名解析了
            端口号 (port): http为80,https为443 (IANA: 互联网数字分配机构)。

                        0-1023:永久地分配给固定的应用程序使用
                        1024-41951:注册端口,但要求不是特别严格,分配给程序注册为某应用使用                                  41952-60000:客户端程序随机使用的端口,动态端口,或私有端口

    1.5.2.http请求方法:


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

    序号方法描还
    1GET请求指定的页面信息,并返回实体主体,
    2HEAD类似于get请求,只不过返回的响应中没有具体的内容,用于获取报头        
    3POST        向指定资源提交数据进行处理请求( 例提交表单或者上传文件 ),数据被包全在请求体中,POST请求可能会导致新的资源的建立和/或已有资源的修改。
    4PUT从客户端向服务器传送的数据取代指定的文档的内容,
    5DELETE请求服务器删除指定的页面。
    6CONNECT HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器
    7OPTIONS允许客户精查者服务器的性能
    8TRACE回显服务器收到的请求,主要用于测试或诊断

    状态代码:由三位数字组成,第一个数字定义了响应的类别,且有五种可能取值。

            1xx: 指示信息一一 表示请求已接收,继续处理

            2xx:成功一一表示请求已被成功接收、理解、接
            3xx:重定向一一要完成请求必须进行更进一步的操作

            4xx:客户端错误一一请求有语法错误或请求无法实现
            5xx:服务器端错误一一服务器未能实现合法的请求

    常见状态代码、状态描述的说明如下:

            200 0K:客户端请求成功
            400 Bad Request:客户端请求有语法错误,不能被服务器所理解

            401Unauthorized: 请求未经授权,这个状态代码必须和 WWW-Authenticate 报头域一起使用
            403 Forbidden: 服务器收到请求,但是拒绝提供服务
            404 Not Found: 请求资源不存在,举个例子: 输入了错误的URL

            500Internal Server Error: 服务器发生不可预期的错误

            503 Server Unavailable: 服务器当前不能处理客户端的请求,一段时间后可能恢复正常

    1.5.3.HTTP协议请求的工作流程


            终端客户在web浏览器地址栏输入访问地址http://www.ceshi.com:80/index.html

            web浏览器请求DNS服务器把域名www.ceshi.com解析成web服务器的IP地址

            web浏览器将端口号 (默认是80) 从访问地址 (URL) 中解析出来

             web浏览器通过解析后的ip地址及端口号与web服务器之间建立一条TCP连接

            建立TCP连接后,web浏览器向web服务器发送一条HTTP请求报文

            web服务器响应并读取浏览器的请求信息,然后返回一条HTTP响应报文

            web服务器关闭HTTP连接,关闭TCP连接,web浏览器显示访问的网站内容到屏幕上

    1.6.www服务器的类型

    1.6.1.静态网站

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

    1.6.2.动态网站

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

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


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

            Apache主要提供www的服务器平台

            MySQL: 传统的文件读取是很麻烦的,如果只要读取该文件当中的一小部分,系统还是会将整个文件读出来,若多个用户同时读取同一个文件时,那就会造成效率与系统上的问题,所以才会有数据库系统的推出。数据库其实是一种特殊格式的文件,这种文件要通过特殊接口(数据库软件)来进行读写。由于这个特殊接口已经针对数据的查询、写入做过优化设计,因此很适合多人同时写入与查询工作。
            PHP:PHP可以被用来建立动态网页,PHP程序代码可以直接在HTML网页当中嵌入,就像编辑HTML网页一样简单。PHP是一种“程序语言”,这种程序语言可以直接在网页当中编写,不需要经过编译即可执行

    2.快速安装Apache

    2.1 安装Apache:

    安装Apaxhe:

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

    利用getenforce查看SELinux状态:

    若正在执行则用命令 

    [root@node2 ~]# setenforce 0                将其关闭

    关闭防火墙:

    [fox@bogon ~]$ systemctl stop firewalld         #  临时关闭防火墙(重启设备后将再次自行启动)
    [fox@bogon ~]$ systemctl disable firewalld      # 取消开机启动(重启设备后将不会自行启动)

    1. [fox@bogon ~]$ systemctl stop firewalld # 临时关闭防火墙(重启设备后将再次自行启动)
    2. [fox@bogon ~]$ systemctl disable firewalld # 取消开机启动(重启设备后将不会自行启动)
    3. Removed "/etc/systemd/system/multi-user.target.wants/firewalld.service".
    4. Removed "/etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service".

    启动Apache:

    1. [root@node2 ~]# systemctl start httpd # 启动
    2. [root@node2 ~]# systemctl enable httpd # 开机启动
    3. Created symlink /etc/systemd/system/multi-user.target.wants/httpd.service → /usr/lib/systemd/system/httpd.service.
    4. [root@node2 ~]# systemctl status httpd # 查看状态
    5. ● httpd.service - The Apache HTTP Server
    6. Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: d>
    7. Active: active (running) since Mon 2023-11-06 13:23:00 CST; 1min 59s ago
    8. Docs: man:httpd.service(8)
    9. Main PID: 2428 (httpd)
    10. Status: "Total requests: 0; Idle/Busy workers 100/0;Requests/sec: 0; Bytes serve>
    11. Tasks: 213 (limit: 11984)
    12. Memory: 41.1M
    13. CPU: 460ms
    14. CGroup: /system.slice/httpd.service
    15. ├─2428 /usr/sbin/httpd -DFOREGROUND
    16. ├─2429 /usr/sbin/httpd -DFOREGROUND
    17. ├─2430 /usr/sbin/httpd -DFOREGROUND
    18. ├─2431 /usr/sbin/httpd -DFOREGROUND
    19. └─2432 /usr/sbin/httpd -DFOREGROUND
    20. 11月 06 13:22:57 node2 systemd[1]: Starting The Apache HTTP Server...
    21. 11月 06 13:22:59 node2 httpd[2428]: AH00558: httpd: Could not reliably determine the >
    22. 11月 06 13:23:00 node2 httpd[2428]: Server configured, listening on: port 80
    23. 11月 06 13:23:00 node2 systemd[1]: Started The Apache HTTP Server.

    2.2 httpd所需目录

    主配置文件所在目录:[root@node2 ~]# cd /etc/httpd/

    主配置文件:[root@node2 httpd]# vim /etc/httpd/conf/httpd.conf 

    存储默认网页的目录:[root@node2 httpd]# cd /var/www/html/

    网站流量的日志以及错误日志文件: [root@node2 ~]# cd /var/log/httpd/

            [root@node2 httpd]# vim access_log 流量的日志

            [root@node2 httpd]#  vim error_log   错误日志

    2.3主配置文件:

    打开方式:[root@node2 httpd]# vim /etc/httpd/conf/httpd.conf 

    全局参数:

    ServerRoot "/etc/httpd":服务目录

    Listen 80:监听端口号

    Include conf.modules.d/*.conf: 加载模块储存位置
    User apache                                                 
    Group apache:Apache所用的工作组及账户
    ServerAdmin root@localhost:管理员的邮箱
    DocumentRoot "/var/www/html": 网页的启动目录

    局部参数:<>   

    目录访问权限:

    1.     AllowOverride none     # 权限是否可以被覆盖改写 
    2.     Require all denied        # 是否允许访问该目录
    3.        

    此处含义为不允许远程连接访问及改写本地更目录

    用户访问网页的权限:

    该局部参数一般与网页的启动目录一同出现

    1. "/var/www">
    2.     AllowOverride None      # 不允许权限被修改
    3.     # Allow open access:
    4.     Require all granted      # 允许访问该网页

    2.4 网站的搭建

    2.4.1 快速搭建一个网站

    [root@node2 httpd]# echo "welcome ti www.openlab.com" > /var/www/html/index.html\

                    # 将字符串写入网页/index.html\ 
    [root@node2 httpd]# ls /var/www/html/
    index.html
    [root@node2 httpd]# systemctl  restart httpd  重启服务

    此时我们可以在VMwork中调用浏览器然后访问

            [root@node2 ~]# firefox

            输入网址:127.0.0.1或者192.168.17.132

    注意:我们还可以在自己的win10浏览器上调用输入:192.168.17.132

    也可以通过curl命令来验证网站是否搭建成功。

    格式:        curl          IP地址           

    作用:将网址下载到本机

    2.4.2更换网页目录

    第一步:准备工作

    [root@node2 ~]# systemctl stop  firewalld              关闭防火墙          
    [root@node2 ~]# systemctl  disable firewalld
    [root@node2 ~]# setenforce 0                                关闭SELinux
    [root@node2 ~]# yum install httpd -y                      安装软件
    [root@node2 ~]# systemctl status httpd                  启动软件
    [root@node2 ~]# systemctl enable httpd                 开机启动

    第二步: 新建网页存储目录/web1,使用xftp将网页数据上传到/web1

    [root@server ~]# mkdir /web1
    [root@server ~]# cd /web1
    [root@server web1]# Is

    css        dingban.mp4         img        index.htm         js         temp第三步:修改主配置文件                 

    1. DocumentRoot    "/webl"                 # 第124行修改为真实的网页存储目录
    2. "/webl">                        # 第129行修改网页存储目录的访问权限
    3.         Allowoverride None
    4.         # A11ow open access:
    5.         Require al] granted

    第四步:重启服务器并测试
    [root@server ~]# systemctl  restart httpd

    windows端打开浏览器输入服务器地址

    2.4.3 内网穿透

    搭建网站使用花生壳进行内网穿透实现公网访问

    第一步:准备工作

    [root@node2 ~]# systemctl stop  firewalld              关闭防火墙          
    [root@node2 ~]# systemctl  disable firewalld
    [root@node2 ~]# setenforce 0                                关闭SELinux
    [root@node2 ~]# yum install httpd -y                      安装软件
    [root@node2 ~]# systemctl status httpd                  启动软件
    [root@node2 ~]# systemctl enable httpd                 开机启动

    第二步:搭建网站

            # 将网页数据上传到/zy下:
    root@server ~]# vim /etc/httpd/conf/httpd.conf                # 修改124及129行数据

    1. DocumentRoot"/zy"
    2. "/zy">

    root@server ~]# systemct] restart httpd         # 重启服务

    第三步:测试

    浏览器中输入IP进行测试

    第四步:使用花生壳进行内网穿透


            # 注册,登录,完成身份证的实名认证

    进入贝瑞花生壳官网>注册(个人注册,使用手机号)

    内网穿透第一步福创建内网映射,

    立即创建:

    添加映射: 

     具体信息如下:

    如下:

            #应用名称: 自定
            # 映射类型: https
            # 外网域名: 系统指定,不能更改
            # 外网端口: 443,默认
            # 内网主机:本机linux服务的IP地址
            #内网端口: 本地linux端的http端口,默认80

    创建成功后显示如下:

    在官网复制Linux版的花生壳,复制链接并安装:

    利用链接下载安装包:

    安装:

    接下来按照提示栏经行操作:

    启动:[root@server ~]# phddns   start

                    phtunnel service start success !       # 表示已启动

    激活:利用提示的链接进入网站激活

    激活成功时:

    此时就可以使用使用图片中的链接访问所搭建的网站。

    注:此时手机端也可以访问。

    2.4.4  设置用户密码访问


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

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

    第一步:准备工作

            [root@node2 ~]# systemctl stop  firewalld              关闭防火墙          
            [root@node2 ~]# systemctl  disable firewalld
            [root@node2 ~]# setenforce 0                                关闭SELinux
            [root@node2 ~]# yum install httpd -y                      安装软件
            [root@node2 ~]# systemctl status httpd                  启动软件
            [root@node2 ~]# systemctl enable httpd                 开机启动

    第二步:编辑httpd目录中的用户主页配置文件(不是httpd.conf文件)

            进入文件:[root@node2 ~]# vim /etc/httpd/conf.d/userdir.conf 

            将 UserDir disabled注释:

            将UserDir public_html释放:

                    代表:启动网站存储数据的默认目录,路径: /home/账户名/public_htm]

    第三步:新建账户设置权限问题。

    [root@server ~]# useradd  andy

    [root@server ~]# passwd  andy

            更改用户 andy 的密码

            新的密码                # 密码: 123456

            无效的密码:

            密码少于 8 个字符

            重新输入新的密码:
            passwd:所有的身份验证令牌已经成功更新。

    [root@server ~]# useradd jenny

    [root@server ~]# passwd jenny

            更改用户 jenny 的密码

            新的密码:

            无效的密码:

            密码少于 8 个字符

            重新输入新的密码:
            密码: 654321
            passwd:所有的身份验证令牌已经成功更新

    切换到andv账户,设置存储网页目录即权限

    [root@node2 ~]# su andy
    [andy@node2 root]$ cd /home/andy/
    [andy@node2 ~]$ ls
    [andy@node2 ~]$ mkdir public_html
    [andy@node2 ~]$ cd public_html/
    [andy@node2 public_html]$ 

    使用xftp将sxhkt网页数据上传到/home/andy/public_htm1目录中

    [andy@server public_htmI]$ cd ~

    [andy@server ~]$ chmod-Rf 755/home/andy

    [andy@server ~]$ ll
            总用量 0
            drwxr-xr-x         7        andy         andy         100         8月 22 11:25         public_html

    # 切换到jenny账户,设置存储网页目录及权限

    [andy@server ~]$ su jenny

            密码:

    [jenny@server andy]$ cd ~

    [jenny@server ~]$ pwd

            /home/jenny

    [jenny@server ~]$ mkdir public_html

    [jenny@server ~]$ cd public_html/

    [jenny@server public_html]$ cd
    [jenny@server ~]$ chmod -Rf 755 /home/jenny
    [jenny@server ~]$ 11

            总用量 0
            drwxr-xr-x         6        jenny         jenny         70         8月22 11:29         public_html

    # 切换到root账户

    [jenny@server ~]$ su root

    密码:
    [root@server jenny]# cd ~

    [root@server ~]# pwd

    /root

    第四步:重启服务并操作

    [root@server ~]# systemctl restart httpd

            测试:

            在windows端浏览器地址栏中,输入:

                    192.168.48.130/~andy

                    192.168.48.130/~jennyy

    第五步:增加密码访问控制:

    [root@server ~]# htpasswd         -c                                 /etc/httpd/passwd         andy

                                               创建存储密码的文件            存储密码的文件(密文)  用户名

    New password:

    Re-type new password:
    Adding password for user andy
    # 分析:
            # htpasswd: 生成密码数据的命令

            # -C: 表示第一次生成,会创建存储密码加密密文的存储文件,之后创建时不能增减-C参数,否则会将存储密码密文的文件会覆盖

            ​# ​​​​​​andy需要验证密码登录的账户

    [root@server ~]# htpasswd /etc/httpd/passwa jenny

    New password:                                #v密码: 654321
    Re-type new password:

    Adding password for user andy

    第六步: 编辑个人主页配置文件,设置访问控制策略

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

    # 定位最后一行输入以下内容:

    1. "/home/andy/public_htm1">            # 设置andy账户目录的区域配置
    2.         authuserfile        "/etc/httpd/passwd" # 设置验证密码的存储文件位置
    3.         authname           "My privately       #登录时的提示信息,可能不显示
    4.         authtype           basic            # 加密模式
    5.         require   user         andy
    6.                                    # 需要验证密码的账户名                                  
    7. /home/jenny/public_htm1">          
    8.         authuserfile         "/etc/httpd/passwd"      
    9.         authname           "My privately                
    10.         authtype               basic                        
    11.         require   user         jenny
    12.  

    第七步:重启服务并测试

    [root@server ~]# systemctl restart httpd
    # 在windows端浏览器地址栏中,输入以下 
            # 192.168.48.130/~andy
            # 192.168.48.130/~jenny

    2.4.5 通过主配置文件实现密码验证访问网站

            通过主配置文件实现密码验证访问网站

    第一步:准备工作

            [root@node2 ~]# systemctl stop  firewalld              关闭防火墙          
            [root@node2 ~]# systemctl  disable firewalld 
            [root@node2 ~]# setenforce 0                                关闭SELinux
            [root@node2 ~]# yum install httpd -y                      安装软件
            [root@node2 ~]# systemctl status httpd                  启动软件
            [root@node2 ~]# systemctl enable httpd                 开机启动

    第二步:新建账户设置密码及权限

    [root@server ~]# useradd t1

    [root@server ~]# passwd t1
    新的密码:                                                # 密码123456
    [root@server ~]# useradd t2

    [root@server ~]# passwd t2
    新的密码:                                                # 密码654321

    第三步: 搭建网站,设置密码访问控制

    #创捷储存网站数据的目录

                    [root@node2 ~]# mkdir -p /www/zy               

    # 将字符串写入网页/www/zy/index.html\ 

                    [root@node2 ~]# cd /www/zy/
                    [root@node2 zy]# enco "hello this is 666"  > index.html

    # 设置登陆密码

                   [root@node2 zy]# htpasswd  -c /etc/httpd/passwdzy t1           

                                                                                                 #  创捷储存登陆网站密码的文件
                            New password:                                             # 密码123456
                            Re-type new password: 
                            Adding password for user t1
                    [root@node2 zy]# htpasswd  /etc/httpd/passwdzy t2
                            New password:                                             # 密码654321
                            Re-type new password: 
                            Adding password for user t2

    第四步: 编辑个人主页配置文件,设置访问控制策略

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

    1. DocumentRoot        "/www/zy"                    # 定位124行进行修改
    2. ">                      # 定位129行修改
    3.                               # 定位135进行修改
    4.         authuserfile    "/etc/httpd/passwdzy"     # 登陆时密码存储的位置
    5.         authname        "My     privately"        # 给出登陆时的提示信息
    6.         authtype        "basic"                   # 写出加密模式
    7.         require         user            t1  t2    # 有多个账户需要验证密码,则通过空格隔开
    8. # 保存并退出

    第四步:重启Apaxhe进行测试

    此时输入网址后会直接弹出登陆选项

    3.虚拟主机功能

    3.1.概述

                如果每台运行 Linux 系统的服务器上只能运行一个网站,那么人气低、流量小的草根站长就要被迫承担着高昂的服务器租赁费用了,这显然也会造成硬件资源的浪费。在虚拟专用服务器(Virtual Private Sever,VPS) 与云计算技术诞生以前,IDC 服务供应商为了能够更充分地利用服务器资源,同时也为了降低购买门槛,于是纷纷启用了虚拟主机功能

            利用虚拟主机功能,可以把一台处于运行状态的物理服务器分割成多个“虚拟的服务器”。但是该技术无法实现目前云主机技术的硬件资源隔离
            Apache 的虚拟主机功能是服务器基于用户请求的不同IP 地址、主机域名或端口号,实现提供多个网站同时为外部提供访问服务的技术,也就是说用户请求的资源不同,最终获取到的网页内容也各不相同


    3.2基于IP 地址的虚拟主机

    3.2.1.原理  

                  如果一台服务器有多个IP地址,而且每个IP地址与服务器上部署的每个网站一一对应,当用户请求的IP地址不同,则会访问到不同网页,且每个网站都有一个独立的IP地址。 (常用)

            注意:主机必须有多个IP地址

    3.2.2 实验6

            增加多个IP地址,实现基于不同的IP地址虚拟主机功能

    第一步:准备工作

            [root@node2 ~]# systemctl stop  firewalld              关闭防火墙          
            [root@node2 ~]# systemctl  disable firewalld 
            [root@node2 ~]# setenforce 0                                关闭SELinux
            [root@node2 ~]# yum install httpd -y                      安装软件
            [root@node2 ~]# systemctl status httpd                  启动软件
            [root@node2 ~]# systemctl enable httpd                 开机启动

    给为网卡怎加俩个地址

    [root@node2 ~]# nmcli connection modify ens160 +ipv4.addresses 192.168.17.150/24
    [root@node2 ~]# nmcli connection modify ens160 +ipv4.addresses 192.168.17.151/24
    [root@node2 ~]# nmcli connection up ens160   
        # 配置完之后一定要启动
    连接已成功激活(D-Bus 活动路径:/org/freedesktop/NetworkManager/ActiveConnection/2)

    第二步:新建俩个存储网页的目录,写入来个网页文件

    [root@node2 ~]# mkdir -p /www/ip150
    [root@node2 ~]# mkdir -p /www/ip151
    [root@node2 ~]# echo "ip150" > /www/ip150/index.html
    [root@node2 ~]# echo "ip151" > /www/ip151/index.html

    第三步:修改配置文件,建立基于IP地址的虚拟主机

    1.         Documentroot "/www/ip150"
    2.        
    3.                 allowoverride   none                # 不允许访问方来修改当前目录的权限
    4.                 require all     granted               # 允许所有用户访问 
    5.        
    6.         servername      192.168.17.150      # 域名必须设置,此时暂无域名因此写自身IP
    7.         Documentroot "/www/ip151"
    8.        
    9.                 allowoverride   none
    10.                 require all     granted
    11.        
    12.         servername      192.168.17.151

    第四步:重启服务并测试

    [root@server ~]# systemctl restart httpd

    [root@server ~]# curl 192.168.48.150  ip150

    [root@server ~]# curl 192.168.48.151  ip151

    3.3.基于端口号的虚拟主机

    3.3.1.原理:

    基于端口号的虚拟主机功能,可以让用户通过一个IP地址的不同端
    口号来访问不同的网站

    3.3.2实验7

    第一步:准备工作

            [root@node2 ~]# systemctl stop  firewalld              关闭防火墙          
            [root@node2 ~]# systemctl  disable firewalld 
            [root@node2 ~]# setenforce 0                                   关闭SELinux
            [root@node2 ~]# yum install httpd -y                       安装软件
            [root@node2 ~]# systemctl status httpd                  启动软件
            [root@node2 ~]# systemctl enable httpd                 开机启动

    第二步:新建俩个储存网页的目录,并写入网页目录 

    1. [root@node1 ~]# mkdir -p /www/port{9527,9528}
    2. [root@node1 ~]# ls /www
    3. port9527  port9528
    4. [root@node1 ~]# cd /www/
    5. [root@node1 www]# cd port9527
    6. [root@node1 port9527]# echo "port9527777"  > index.html # 将内容写入网页
    7. [root@node1 port9527]# ls
    8. index.html
    9. [root@node1 port9527]# echo "port952888888888"  > index.html
    10. [root@node1 port9527]# ls
    11. index.html

    第三步:编辑主配置文件

    # 查看预设置的端口占用情况

    [root@server ~]# netstat -anp  grep 9528
    [root@server ~]# netstat-anp   grep 9528

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

    第四步:重启服务并测试

    [root@server ~]# systemctl restart httpd 

    3.4 基于域名的虚拟主机

    3.4.1.原理

            当服务器无法给每个网站都分配一个独立的IP地址时,可以通过用户请求的域名实现不同域名传输不同的网页数据

    3.4.2.域名解析

            功能:域名<==>IP地址
            浏览器如何通过域名去查询URL对应的IP (对应服务器地址):.浏览器缓存:浏览器会按照一定的频率缓存DNS记录
            操作系统缓存: 如果浏览器缓存中找不到需要的DNS记录,那就去操作系统中的hosts文件找。hosts是一个没有扩展名的系统文件,其作用就是将一些常用的网址域名与其对应的IP地址建立一个关联”数据库”,当用户在浏览器中输入一个需要登录的网址时,系统会首先自动从Hosts文件中寻找对应的IP地址,一旦找到,系统会立即打开对应网页,如果没有找到,则系统会再将网址提交DNS域名解析服务器进行IP地址的解析。
            windows下的hosts文件路径:         C:WindowslSystem32\drivers\etc\hosts

            Linux下的hosts文件路径                   /etc/hosts                                               
            路由缓存:路由器也有DNS缓存
            ISP的DNS服务器:ISP是互联网服务提供商(Internet Service Provider)的简称,ISP有专门的DNS服务器应对DNS查询请求
            根服务器:ISP的DNS服务器还找不到的话,它就会向根服务器发出请求,进行查询 (DNS服务器先问根域名服务器.com域名服务器的IP地址,然后再问.com域名服务器,依次类推) 

    3.4.3 实验8

    第一步:准备工作

            [root@node2 ~]# systemctl stop  firewalld              关闭防火墙          
            [root@node2 ~]# systemctl  disable firewalld 
            [root@node2 ~]# setenforce 0                                   关闭SELinux
            [root@node2 ~]# yum install httpd -y                       安装软件
            [root@node2 ~]# systemctl status httpd                  启动软件
            [root@node2 ~]# systemctl enable httpd                 开机启动

     第二步:新建俩个储存网页的目录,并写入网页目录

    1. [root@node1 ~]# mkdir -p /www/port{9527,9528}
    2. [root@node1 ~]# ls /www
    3. port9527  port9528
    4. [root@node1 ~]# cd /www/
    5. [root@node1 www]# cd port9527
    6. [root@node1 port9527]# echo "hello word hehe"  > index.html # 将内容写入网页
    7. [root@node1 port9527]# ls
    8. index.html
    9. [root@node1 port9527]# echo "hello word cici"  > index.html
    10. [root@node1 port9527]# ls
    11. index.html

    第三步:手动配置Linux手动hosts映射

    [root@node1 ~]# vim /etc/hosts 

    192.168.17.129  www.port9527.com

    192.168.17.129  www.port9528.com

    第四步:编写主配置文件

    1. documentroot /www/port9527
    2. allowoverride none
    3. require all granted
    4. servername "www.port9527.com"
    5. documentroot /www/port9528
    6. allowoverride none
    7. require all granted
    8. servername "www.port9528.com"

    第五步:重启服务并测试

    [root@server ~]# systemctl restart httpd

    [root@node2 ~]# curl www.port9527.com
    hello port9527
    [root@node2 ~]# curl www.port9528.com
    hello port9528

    3.5 使用云服务搭建网站

    第一步:注册腾讯云账号,并使用免费的云服务器

    由于在写实生活中我们无法接触真实的服务器因此选择以下操作

    重置密码确认

    点击登陆然后获取到具体IP地址

    进如Xshell,远程链接到此时的云服务器;如图所示就代表你成功了

    第二步:在shell上下载Apache

    [root@VM-0-6-centos ~]# yum install httpd -y

    查看此时服务器的状态:

    [root@VM-0-6-centos ~]# getenforce 
    [root@VM-0-6-centos ~]# systemctl status firewalld

    第三步:编辑主配置文件

    [root@VM-0-6-centos ~]# vim /etc/httpd/conf/httpd.conf 

    创建网站数据

    [root@VM-0-6-centos www]# mkdir -p /www/word1
    [root@VM-0-6-centos www]# ls

    word1
    [root@VM-0-6-centos ~]# echo "hello word1 NO.1" > /www/word1/index.html
    第四步:重启并用公网地址经行访问

    使用手机端经行访问:

  • 相关阅读:
    linux __ctype_b_loc
    【XSS跨站脚本】反射型xss(非持久型)
    PAT甲级:1055 The World‘s Richest |Python
    torch stack() meshgrid()
    机器视觉面试-查漏补缺
    LeetCode 2097. 合法重新排列数对【欧拉通路,DFS】2650
    数字孪生车间
    数据中台建设方案(Word版源文档)
    应变.破局2022,合众致达逐梦.无惧
    Redis避坑指南:为什么要有分布式锁?
  • 原文地址:https://blog.csdn.net/2302_77035737/article/details/134243728