zoukankan      html  css  js  c++  java
  • apache(httpd服务器)私人学习笔记

    俗话说“好记性不如烂笔头”,编程的海洋如此的浩大,养成做笔记的习惯是成功的一步!

    此笔记主要是apache-httpd-2.4.23版本的笔记,并且笔记都是博主自己一字一字编写和记录,有错误的地方欢迎大家指正。



    一、基本概念:
    1、apahce-httpd  是apache组织开发的http服务器,原名为apache server,是apache组织的第一个产品。


    2、apahce服务器与tomcat服务器是有区别的:
    apache不能解析jsp页面和执行java文件,只能处理http的文件请求(js、css、html、img)等,但处理速度和性能非常快。
    tomcat可以解析jsp和执行java文件,并且可以处理http的文件请求,但是性能不如apahce快。
     
    故通常都是使用apache+tomcat配合使用,所有请求都由apahce进行转发或处理,jsp和servlet请求转发给tomcat处理,
    其余的则由apache自行处理。


     
    3、关于集群。通常是 一台apache服务器 + 多台tomcat服务器进行集群的,有三种集群方式:mod_jk、ajp_proxy和http_proxy,
      其中使用最多的是mod_jk方式来整合apache与tomcat服务器。如果想对apache服务器实现集群,即使用多台apahce服务器,
      可以借助Linux-HA项目Heartbeat高可用集群系统来实现apache的多机整合,也可以使用Keepalived来实现apache集群。



    二、配置信息:
    1、目录下的httpd-2.4.23.tar.gz 是linux系统专用的apache server,并且还没有进行编译,需要通过make命令进行编译C语言的文件。
    注意 httpd-2.4.23 是 httpd-2.4.23.tar.gz 的解压文件而已。





    2、编译httpd的步骤:
    步骤一:httpd依赖于其他库,具体在compile-depend目录下的三个压缩包,需要进行解压和编译。

    (1)apr-1.5.2.tar.gz包,是apache可移植性运行时库,是针对不同操作系统的底层函数库。
      解压apr-1.5.2.tar.gz包后,进入到apr目录,然后执行以下命令进行编译:
       ./configure --prefix=/usr/local/apr && make && make install



    (2)apr-util-1.5.4.tar.gz包,是apache可移植性运行时库的工具包。
      解压apr-util-1.5.4.tar.gz包后,进入到apr目录,然后执行以下命令进行编译:
       ./configure --prefix=/usr/local/apr-util -with-apr=/usr/local/apr/bin/apr-1-config && make && make install


    (3)pcre-8.38.tar.gz包,全称Perl Compatible Regular Expressions,是Perl正则表达式函数库。
      解压pcre-8.38.tar.gz包后,进入到apr目录,然后执行以下命令进行编译:
    ./configure --prefix=/usr/local/pcre && make && make install

    如果报出You need a C++ compiler for C++ support.的错误,则表示需要安装c++的编译插件:
    yum install -y gcc gcc-c++

    安装了gcc插件后,可以使用命令 rpm -qa gcc 来判断是否安装成功,然后再编译pcre即可。



    步骤二:解压httpd-2.4.23.tar.gz,然后进入到解压的目录httpd-2.4.23下,目录下有个configure文件,是可执行的shell
      脚本,用于配置编译的内容和选项。
      运行如下脚本(参数是常用配置):
    ./configure --prefix=/usr/local/apache2 --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util/ 
    --with-pcre=/usr/local/pcre --enable-rewrite --enable-ssl --enable-so 
    --enable-headers --enable-expires --with-mpm=worker --enable-modules=most --enable-deflate
    && make && make install

    说明:
    --prefix=/usr/local/apache2表示指定apache的安装路径,默认安装路径为/usr/local/apache2。
    --with-apr --with-apr-util --with-pcre:表示依赖的第三方库的位置。
    --enable-rewrite提供URL规则的重写,即根据已知的URL地址,转换为其它想要的URL地址。
    --enable-ssl 激活ssl加密的使用。
    --enable-so激活apache服务的DSO(Dynamic Shared Objects动态共享目标),即在以后可以以DSO的方式编译安装共享模块。
    --enable-headers提供允许对HTTP请求头的控制。
    --enable-expires激活文件控制HTTP的“Expires:”和“Cache-Control:”头内容,即对网站图片等内容,提供客户端浏览器缓存的设置。
    --with-mpm=worker选择apache mpm的模式为worker模式。如果不指定此参数,默认的模式是prefork进程模式。
    --enable-deflate提供对内容的压缩传输编码支持。使用此参数会大大提高传输速度,提升访问者访问的体验。
    && make && make install:编译apache源码,如果没安装编译插件则安装。

    注意:
    (1)上面的命令为了显示而使用了手动换行,但是复制到linux上进行执行命令时,必须去除换行后才执行,否则报错。

    (2)如果编译时抛出mod_deflate has been requested but can not be built due to prerequisite failures错误
    则表示没有安装zlib-devel(提供压缩功能)插件,执行命令来安装:yum install zlib-devel

    (3)如果编译时抛出error: mod_ssl has been requested but can not be built due to prerequisite failures错误
    则表示没有安装openssl-devel(加密功能)插件,执行命令来安装:yum install openssl-devel


      
      
    3、apache的MPM模块(多路处理模块),主要有三种;prefork、worker和event,不同系统都用默认的使用模式,
    Linux默认使用prefork模式,这三种其中的区别是:
    a)prefork: 使用多个子进程,每个子进程只有一个线程。每个进程在某个确定的时间只能维持一个连接。
     在大多数平台上,Prefork MPM在效率上要比Worker MPM要高,但是内存和CPU使用要大得多。

    b)worker: 使用多个子进程,每个子进程有多个线程。每个线程在某个确定的时间只能维持一个连接。
      通常来说,在一个高流量的HTTP服务器上,Worker MPM是个比较好的选择,因为Worker MPM的
      内存使用比Prefork MPM要低得多。但如果一个线程崩溃,整个进程就会连同其所有线程一起"死掉"。

    c)event:  基于事件监听形式的,它把服务进程从连接中分离出来。在服务器处理速度很快,但是不能在
    安全HTTP(HTTPS)访问下工作,并且目前处于试验状态,官方目前不建议使用。





    4、httpd.conf的相关配置:
    (1)指定服务器地址和端口:
    ServerName localhost:80


    (2)修改web部署的目录:
    步骤一:默认为DocumentRoot "C:/wamp/bin/apache/Apache2.2.21/htdocs",现修改成DocumentRoot "D:/Apache"
    步骤二:默认为<Directory "C:/wamp/bin/apache/Apache2.2.21/htdocs">,现修改成<Directory " D:/Apache">


    (3)修改访问的默认文件名称:
    DirectoryIndex index.html


    (4)配置多虚拟主机:
    <!--指定虚拟主机127.0.0.1:80-->
    <VirtualHost 127.0.0.1:80>
    ServerName "127.0.0.1:80"
    DocumentRoot "D:AppServwww"
    <Directory "D:AppServwww">
    Options Indexes FollowSymLinks
    AllowOverride None
    Order allow,deny
    Allow from all
    </Directory>
    </VirtualHost>

    <!--指定虚拟主机127.0.0.2:80-->
    <VirtualHost 127.0.0.2:80>
    ServerName "127.0.0.2:80"
    DocumentRoot "D:AppServwww2"
    <Directory "D:AppServwww2">
    Options Indexes FollowSymLinks
    AllowOverride None
    Order allow,deny
    Allow from all
    </Directory>
    </VirtualHost>






    三、使用笔记:

    1、 apache的首次启动:
    (1)防止apache启动报错,在apache启动前指定端口号和ip(默认就是80端口):
    修改配置文件:/usr/local/apache2/conf/httpd.conf
     
    添加端口内容: ServerName localhost:80
     
     
    (2)执行启动命令启动apache:
    /usr/local/apache2/bin/apachectl start 


    (3)如果想系统启动时开启apache服务,在/etc/rc.local下添加如下命令:
    /usr/local/apache2/bin/apachectl start 



    2、在 "已编译好的apache服务器/apache2.tar.gz" 文件,存放的是已经经过编译的apache服务器,可以直接在linux服务器上部署使用。

    注意:
    (1)apache2.tar.gz文件是编译到/usr/local/apache2中的,那么解压后也需要放到/usr/local/目录中,以免出现问题。

    (2)apache2.tar.gz的编译中,配置的mpm模块为worker模式,并且支持ssl加密,对传输内容也支持压缩。



    3、编译后的apache目录介绍:
    bin: 可执行的二进制文件
    build:未知
    cgi-bin:  未知
    conf: 存放服务器的配置文件,其中httpd.conf 是主要的配置文件。
    error:保存错误信息
    htdocs:服务器的项目文档根目录,即项目部署的地方,默认首页就是该目录下的index.html文件。可以修改httpd.conf下的DocumentRoot来指定web目录。
    icons:存放图标
    include:  未知
    logs: 保存服务器日志,其中access_log文件是访问日志文件,error_log文件是错误日志文件
    man:  保存Apache服务器手册页文件,文件被分别保存在man1和man8两个子目录中,可用man命令阅读指定的手册页文件查询目录的帮助信息
    manual: Apache服务器的帮助手册文件,文件是网页格式的,可以通过访问Apache服务器中的/manual目录阅读该目录下的帮助文件内容
    modules:模块目录,例如PHP MEMCACHE编译后的模块在这里面









  • 相关阅读:
    扩展欧几里得算法
    Warshall算法
    自己的博客
    使用forever运行web项目
    C#语言基础 Main 函数中的输出输入
    新手第一天学习 C#语言(进制互换)
    Django + Uwsgi + Nginx 实现生产环境部署1
    基于Flask的web微信
    python保存文件UnicodeEncodeError以及reload(sys)后print失效问题
    轮询/长轮询
  • 原文地址:https://www.cnblogs.com/catgwj/p/7492822.html
Copyright © 2011-2022 走看看