Web服务器搭建(一)

一、HTTP 介绍

  1. 在web应用中,服务器传给浏览器,实际上是将网页的HTML文件传给了浏览器,让浏览器显示。然而浏览器和服务器之间传输所遵循的协议就是HTTP协议
  2. HTML:是一种用来定义网页的文本,会HTML就可以编写网页
  3. HTTP是在网络上传输的HTML的协议,用于浏览器和服务器之间的通信
HTTP协议是什么:
HTTP协议是浏览器与服务器之间用来传输的约定,请求的时候按照xxx发回的时候按照xxx收 发送的二进制的数据,不是二进制需要解码 get xxxx 200 xxxx等
浏览器访问的全过程:
1…解析域名:
1)检查是否知道默认网管的mac(物理地址) --> 如果没有arp广播
2)组织一个域名解析的请求发给网关 -->网关发到网上 --> 网上一步一步发到dns服务器
  1. DNS服务器解析出来然后回复给客户端(得知ip)
  2. 将ip转发给网关 --> 网关发到网上 --> 在发到http服务器上
  1. 向服务器发送请求(三次握手)
  2. 客户端向服务器发送请求 - -> 服务器解析请求后将数据发个客户端 --> 浏览器显示
  3. 客户端四次挥手

二、web服务器搭建

1. 给浏览器返回一个固定页面

  1. 返回一个固定的页面
    import socket
    
    def http_send(new_server):
        # 接受数据
        data = new_server.recv(1024)
        print(data)
        # 回复数据  换行用\r\n
        respons = "HTTP:/1.1\r\n"
        # 换行
        respons += "\r\n"
        # 内容
        respons += "<h1>hahha</h1>"
        new_server.send(respons.encode("utf-8"))
        new_server.close()
    
    
    def main():
        """返回固定的页面"""
        #1. 创建套接字
        Tcp_server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        # 防止关闭后占用端口(重复利用这个资源)
        Tcp_server.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
        # 绑定ip和端口
        Tcp_server.bind(("",7890))
        # 变为等待状态
        Tcp_server.listen(128)
        while True:
            # 等待其他客户端连接 addr:访问的地址
            new_server, clientaAddr = Tcp_server.accept()
            # 接受数据并向客户端发送数据
            http_send(new_server)
        Tcp_server.close()
    
    
    if __name__ == "__main__":
        main()
    

2.返回一个HTML的index页面

  1. 返回一个HTML的index页面 (html是在网上随便找的,用来测试的)
  2. 静态文件的目录结构
    ├─html
    │  │  all page
    │  │  README.md
    │  │
    │  └─Trave
    │      │  about.html
    │      │  index.html
    │      │  information.html
    │      │  order.html
    │      │  preview.html
    │      │
    │      ├─css
    │      │      about.css
    │      │      basic.css
    │      │      home.css
    │      │      information.css
    │      │      order.css
    │      │      preview.css
    │      │
    │      └─img
    │          ├─about
    │          │      trea1.png
    │          │      trea2.png
    │          │      trea3.png
    │          │      trea4.png
    │          │
    │          ├─home
    │          │      adver.jpg
    │          │      logo.png
    │          │      tour1.jpg
    │          │      tour2.jpg
    │          │      tour3.jpg
    │          │      tour4.jpg
    │          │      tour5.jpg
    │          │      tour6.jpg
    │          │      tour7.jpg
    │          │      tour8.jpg
    │          │      tour9.jpg
    │          │
    │          ├─information
    │          │      disc.png
    │          │      headline.jpg
    │          │      hot1.jpg
    │          │      hot2.jpg
    │          │      hot3.jpg
    │          │      hot4.jpg
    │          │      hot5.jpg
    │          │      hot6.jpg
    │          │      hot7.jpg
    │          │      hot8.jpg
    │          │      logo.png
    │          │      tour1.jpg
    │          │      tour2.jpg
    │          │      tour3.jpg
    │          │      tour4.jpg
    │          │      tour5.jpg
    │          │      tour6.jpg
    │          │      tour7.jpg
    │          │      tour8.jpg
    │          │      tour9.jpg
    │          │
    │          └─ticket
    │                  headline.jpg
    │                  hot1.jpg
    │                  hot2.jpg
    │                  hot3.jpg
    │                  hot4.jpg
    │                  hot5.jpg
    │                  hot6.jpg
    │                  hot7.jpg
    │                  hot8.jpg
    │                  logo.png
    │
    └─image
        └─down_img
                1.jpg
                2.jpg
    
  3. python 文件:
    import socket
    
    
    def service_client(new_socket):
        # 接受数据
        data = new_socket.recv(1024)
        print(data.decode("utf-8"))
        # 传递数据
        response = "HTTP:/1.1 200 OK\r\n"
        response += "\r\n"
        # 打开文件
        file_name = "../static/html/Trave/index.html"
        f = open(file_name, "rb")
        data_contend = f.read()
        f.close()
        # 发送文件 header
        new_socket.send(response.encode("utf-8"))
        # 发送文件body
        new_socket.send(data_contend)
        # 关闭套接字
        new_socket.close()
    
    
    def main():
        """控制流程"""
        # 创建套接字
        tcp_server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        tcp_server.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
        # 绑定ip和port
        tcp_server.bind(("", 8080))
        # 设置成监听模式
        tcp_server.listen(128)
        while True:
            # 等待客户端连接
            new_client, addr = tcp_server.accept()
            # 接受客户端的消息  回复客户端的消息
            service_client(new_client)
        tcp_server.close()
    
    
    
    
    if __name__ == "__main__":
        main()
    
  4. index页面:
    <!DOCTYPE html>
    <html lang="en">
    
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <meta http-equiv="X-UA-Compatible" content="ie=edge">
        <title>Document
  • 2
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
WEB 服务器硬件配置方案 入门级常规服务器硬配置方案: 硬件名称 基本参数 数量 参考价 CPU 奔腾E2160系列,LPGA封装,双核,工作功率65W,核心电压1.25V,主频1800MHZ,总线频率800MHZ,倍频9,外频200MHZ,128M一级缓存,1M二级缓存,指令集 MMX/SSE/SSE2/SSE3/Sup-SSE3/EM64T 1 ¥460 内存 Kingston DDRII 667 1G,采用PBGA封,频率667MHZ 1 ¥135 主板 采用Intel P965/ICH8芯片组,集成Realtek ALC 662声卡芯片,适用Core2 Extreme/Core 2 Quad/Core 2 Duo/奔腾4/赛扬D/PentiumD系列处理器。前端总线频率FSB 1066MHz 1 ¥599 硬盘 台式机 硬盘容量:160GB 转速/分:7200转/分 缓存(KB):8000KB 接口类型:Serial ATA 接口速率:Serial ATA 300 1 ¥380 机箱 机箱类型:金河田飓风II 机箱样式:立式 机箱结构:Micro ATX/ATX 3.5英寸仓位:1个软驱仓位+6个硬盘仓位 光驱仓位:4个 产品电源:金河田355WB 3C 1 ¥230 光驱 选配,普通DVD光驱 1 - 散热器 热器类型:CPU散热器 散热方式:风冷 风扇转数(RPM):2200 轴承类型:合金轴承 适用范围:Intel LGA775 Conroe、PentiumD、Pentium4 Celeron D全系列 最大风量(CFM):43CFM 1 ¥60 UPS UPS电源类型:后备式UPS 额定输出容量:0.5kva 1 ¥200 稳压器 选配 1 - 显示器 普通显示器 1 - 鼠标键盘 普通PS键盘和鼠标 1 ¥100 备注:作为WEB服务器,首先要保证不间断电源,机房要控制好相对温度和湿度。这里有额外配置的UPS不间断电源和稳压器,此服务器配置能胜基本的WEB请求服务,如大量的数据交换,文件读写,可能会存在带宽瓶颈。
搭建一个Linux上的web服务器,首先需要选择合适的Linux发行,如Ubuntu、CentOS等。接下来需要安装并配置一个web服务器软件,如Apache或Nginx。可以使用包管理工具(如apt或yum)来安装这些软件。 安装完成后,需要对服务器进行配置。首先,需要为服务器分配一个静态IP地址,以便能够远程访问服务器。可以在网络配置文件中进行设置。接下来,需要设置防火墙以确保服务器的安全性,并允许HTTPHTTPS访问。可以使用iptables或firewalld等工具来配置防火墙。 配置完成后,需要将网站的文件和数据上传到服务器。可以使用FTP或SCP等工具进行文件传输。同时,需要设置适当的文件权限,以确保网站文件能够被web服务器访问。 接下来,需要为网站创建一个虚拟主机配置文件。这样可以指定网站的域名和相应的文件路径。可以在Apache的虚拟主机配置文件中使用ServerName和DocumentRoot指令来完成配置。对于Nginx,需要在配置文件中添加server块。 最后,需要启动并测试web服务器。可以使用命令行或web浏览器来访问服务器的IP地址或域名,以确认服务器已经搭建成功,并能够正常提供网站内容。 总之,搭建一个Linux上的web服务器需要选择合适的发行、安装和配置web服务器软件、设置静态IP地址、配置防火墙、上传网站文件、创建虚拟主机配置文件,并最终启动并测试web服务器的运行。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值