zoukankan      html  css  js  c++  java
  • Linux 之HTTP服务,APACHE

    1.基础知识

    HTTP:超文本传输协议,超链接
    URI:Uniform Resource Identifier,全局范围内唯一命名符
    MIME:Multipurpose Internet Mail Extension,多用途互联网邮件扩展
    将非文本数据在传输前重新编码为文本文件,接收方能够用相反的方式将其重新还原为原来的格式,还能够调用相应的程序来打开此文件

    动态网页:服务器端存储的文档非HTML格式,而是编程语言开发的脚本,根据浏览器的地址,属性参数(get/post等等),脚本接受参数之后在服务器端执行一次,运行完成之后生产HTML格式的文档。

    IP:
    Source IP
    Destination IP
    TCP:
    Source Port
    Destination Port
    HTTP首部:
    GET/2.html
    Host:www.magedu.com(为web的虚拟主机提供,只能是域名)

    HTTP报文:
    请求报文
    <method><request-URL><version>
    <headers>
    //空白行是必须的
    <entity-body> //报文主体

    GET / HTTP/1.1
    Host: www.magedu.com
    Connection: keep-alive

    响应报文
    <version><status><respon-phrase>
    <headers>
    //空白行是必须的
    <entity-body> //报文主体

    HTTP/1.1 200 OK
    X-Powered-By: PHP/5.2.1
    Vary: Accept-Encoding,Cookie,User-Agent
    Cache-Control: max-age=3,must-revalidate
    Content-Encoding: gzip
    Content-Length: 6931

    状态码:
    1xx: 纯信息
    2xx: 成功类
    3xx: 重定向
    4xx: (客户端)的错误类信息
    5xx: (服务端)的错误类信息

    Web服务器的主要操作
    1、建立连接
    2、接收请求
    3、处理请求
    4、访问资源
    5、构建响应
    6、发送响应
    7、记录日志



    HTTP/1.1
    HTTP Method
    GET,HEAD,POST,PUT,DELETE,TRACE,OPTIONS,CONNECTION

    APACHE:
    NCSA,httpd
    A patchy Server = apache

    FSF: GUN,GPL
    ASF: Apache Software Foundation
    web: httpd
    Tomcat
    Hadoop

    httpd:
    Web Server,Open Source
    事先创建进程:
    按需维持适当的进程
    模块化设计,核心比较小,各种功能通过模块添加(可以单独编译模块,可以运行时配置)
    支持多种方式的虚拟主机配置
    Socket IP:Port
    虚拟主机:一台物理服务器,WEB程序只有一个,WEB程序可以服务多个不同的站点
    基于IP的虚拟主机
    基于Port的虚拟主机
    基于域名的虚拟主机

    客户端请求报文的方法:
    Method URL version
    header

    body


    httpd: SELinux(实现让其处于permissive)
    [root@nginx ~]# getenforce
    Disabled

    永久生效vi /etc/sysconfig/selinux



    /usr/sbin/httpd(MPM: prefork)
    httpd: root,root (小于1024的端口必须管理员启动)
    httpd: apache,apache (WORK工作进程)

    /etc/rc.d/init.d/httpd
    Port: (80/tcp),(ssl: 443/tcp)
    /etc/httpd: 工作根目录
    主配置文件: httpd.conf
    /etc/httpd/conf.d/*.conf
    /etc/httpd/modules: 各种模块路径
    /etc/httpd/logs: ---> /var/log/httpd: 日志目录
    日志文件有两类:访问日志access_log,错误日志err_log
    /var/www
    html: 静态页面的访问路径
    cgi_bin: 动态页面的访问路径
    cgi: Common Gateway Interface, 调用这种协议(CGI),web服务器启动一种程序处理动态内容,然后获取返回的结果。
    Client ---> httpd(index.cgi) --->Spawn Process(index.cgi)发起进程,执行 --->httpd --->Client

    fastcgi:

    动静分离:web服务器,返回静态内容;应用程序服务器,返回动态内容

    http://10.160.65.44/manual/
    安装httpd-manaual,然后生成/etc/httpd/conf.d/manual.conf的配置文件

    MPM: Multi Path Modules
    mpm_winnt
    prefork (一个请求用一个进程响应)
    worker (一个请求用一个线程响应,启动多个进程,每个进程生产多个线程,多个线程可以共享一个进程资源,但涉及到锁)
    event (一个进程处理多个请求)

    修改启动方式:vi /etc/sysconfig/httpd

    URL路径跟本地文件系统路径不是一回事,URL是相对于DocumentRoot的路径而言的。

    Options:
    None:不支持任何选项
    Indexes: 允许索引目录(网站一定不要允许,列出所有文件)
    FollowSynLinks:允许网页访问符号链接指向的文件
    ExecCGI:允许执行CGI脚本
    MultiViews:多视角,国际网站,不同地域显示不同语言

    2.网站需要提供用户名密码访问

      修改配置文件/etc/httpd/conf/httpd.conf

    # AllowOverride controls what directives may be placed in .htaccess files.
    # It can be "All", "None", or any combination of the keywords:
    #   Options FileInfo AuthConfig Limit
    #
    #   AllowOverride None
        AllowOverride AuthConfig
        AuthType Basic
        AuthName "Restricted Site..."
        AuthUserFile "/etc/httpd/conf/htpasswd"
        Require valid-user

      利用htpasswd命令创建AuthUserFile文件:

    [root@nginx conf]# htpasswd -c -m /etc/httpd/conf/htpasswd hadoop    //-c创建新文件   -m密码以MD5方式存放
    New password: 
    Re-type new password: 
    Adding password for user hadoop
    [root@nginx conf]# htpasswd  -m /etc/httpd/conf/htpasswd tom
    New password: 
    Re-type new password: 
    Adding password for user tom
    [root@nginx conf]# cat htpasswd 
    hadoop:$apr1$SktXz...$be6hoavgRDZnCp4WGarIE.
    tom:$apr1$gdws0/..$kO9siT77R9cAax4HiYVDx0

      这样访问的时候需要提供用户名和密码。

       也可以使用组的方式来限定用户访问:

    3. 虚拟主机

      基于IP的虚拟主机访问,在/etc/httpd/conf.d/下面增加virtual.conf配置文件,给eth0绑定一个IP

      ip addr add  192.168.144.45/24  dev eth0

      ip addr show

    <VirtualHost 192.168.144.44:80>
            ServerName hello.magedu.com
            DocumentRoot "/www/magedu.com"
    </VirtualHost>
    <VirtualHost 192.168.144.45:80>
            ServerName www.a.org
            DocumentRoot "/www/a.org"
    </VirtualHost>

      分别在目录下建立index.html文件,通过不同的IP访问不同的主页面。

      

      基于Port的虚拟主机访问,需要注意的是在/etc/httpd/conf/httpd.conf配置文件中需要增加监听端口

    #Listen 12.34.56.78:80
    Listen 80
    Listen 8080
     
    <VirtualHost 192.168.144.44:80>
            ServerName hello.magedu.com
            DocumentRoot "/www/magedu.com"
    </VirtualHost>
    <VirtualHost 192.168.144.45:80>
            ServerName www.a.org
            DocumentRoot "/www/a.org"
    </VirtualHost>
    <VirtualHost 192.168.144.44:8080>
            ServerName www.b.net
            DocumentRoot "/www/b.net"
    </VirtualHost>

      这样,可以通过相同的IP,不同的端口进行不同主页的访问。

      

      通过主机名的访问,需要在配置文件中加入NameVirtualHost 192.168.144.44:80

    NameVirtualHost 192.168.144.44:80
    <VirtualHost 192.168.144.44:80>
            ServerName hello.magedu.com
            DocumentRoot "/www/magedu.com"
    </VirtualHost>
    <VirtualHost 192.168.144.45:80>
            ServerName www.a.org
            DocumentRoot "/www/a.org"
    </VirtualHost>
    <VirtualHost 192.168.144.44:80>
            ServerName d.gov
            DocumentRoot "/www/d.gov"
    </VirtualHost>
    <VirtualHost 192.168.144.44:8080>
            ServerName www.b.net
            DocumentRoot "/www/b.net"
    </VirtualHost>

      然后在WINDOWS的hosts文件中解析这两条记录

    10.160.65.44    hello.magedu.com
    10.160.65.44    d.gov

      通过域名访问,可以访问不同的主页。

      

        

  • 相关阅读:
    Problem of saving images in WPF (RenderTargetBitmap)zz
    巴特沃斯(Butterworth)滤波器 (2)
    巴特沃斯(Butterworth)滤波器 (1)
    vs发布的程序不依赖运行时库msvcp100.dll
    [leetcode]Word Search @ Python
    [leetcode]Merge Sorted Array @ Python
    [leetcode]Set Matrix Zeroes @ Python
    [leetcode]Restore IP Addresses @ Python
    [leetcode]Interleaving String @ Python
    [leetcode]Distinct Subsequences @ Python
  • 原文地址:https://www.cnblogs.com/python-study/p/6163700.html
Copyright © 2011-2022 走看看