Apache 下载地址: http://mirror.bit.edu.cn/apache/httpd/
相关软件下载地址:http://mirror.bjtu.edu.cn/apache/apr/apr
         http://mirror.bjtu.edu.cn/apache/apr/apr-util
=============Apache 简介: 进程技术,高资源消耗,但是稳定;

MPM (multi process moudles): 多处理模块;
     Apache工作模式:
    进程池(prefork):适合动态页面,总是提前准备好进程等待访问者,一个进程对应一个web访问请求;
    线程池(worker,event):适合静态页面,比如先开启5个进程,每个进程里开启100线程,一个线程接待一个web访问请求;

httpd------->prefork ---->默认
     httpd.worker------->worker
     httpd.event-------->event
    如果使用简化安装的Apache,如何改变它的MPM工作模式?

=================LAMP平台概述:

=========Apache中的进程与线程:

1》安装Apache软件:
    rpm 和 yum 安装:
  1> yum install httpd
    service httpd restart

启动服务的脚本------》运行/usr/sbin/httpd----》调用/etc/httpd/conf/ httpd.conf;

真正提供httpd服务的程序的名字;

2>源码安装:
      ==下载软件包:
        http://mirror.bit.edu.cn/apache/httpd/
        http://mirror.bjtu.edu.cn/apache/apr/apr
        http://mirror.bjtu.edu.cn/apache/apr/apr-util

      ==安装软件:
        yum -y install gcc autoconf automake make pcre pcre-devel openssl openssl-devel

apr:
      ./configure
      make && make install
    apr-util:
      ./configure --with-apr=/usr/local/apr
      make && make install
    httpd:
    ./configure --prefix=/usr/local/apache --enable-so --enable-ssl --enable-rewrite --with-mpm=worker --with-suexec-bin --with-apr=/usr/local/apr
    make && make install
    可以通过./configure --help 命令来查看脚本支持的所有选项:
      --prefix 指定Apache httpd程序的安装主目录
      --enable-so 开启模块化功能,支持DSO(动态共享对象)
      --enable-ssl 支持SSL加密
      --enable-rewrite 支持地址重写
      --with-mpm 设置Apache 工作模式
      --with-suexec-bin 支持SUID,SGID
      --with-apr 指定apr程序绝对路径

2》修改配置文件:
  主配置文件:/etc/httpd/conf/httpd.conf:
  简单配置:

出现上述提示说明没有标准的域名,需要指定:
   ServerName:www.chw.com:80 -----276行》打开配置,去掉注释,然后修改;

配置文件详情解析:Apache服务的主配置文件主要由指令以及容器组成,容器使用<容器名称>开始,以</容器名称>结尾,容器的指令一般仅在容器内有效:
    1>SeverRoot指令:
      设置软件的安装主目录,如果采用源码安装,则默认路径为/usr/local/apache2;
    2>Listen指令:
       设置服务器监听的IP以及端口号,默认监听服务器本机所有的IP地址的80端口,语法格式为:Listen[IP地址:]端口[协议],其中IP地址与协议为可选项,                    默认监听所有的IP ,使用TCP协议,一个配置文件可以多次使用Listen指令来开启多个端口;
    3>LoadModule指令:
      如果希望Apache动态加载模块,需要在编译Apache时通过enable-so将mod_so以静态方式编译到Apache核心模块中,此指令的作用就是加载模块,语法                 格式为:LoadModule 模块 模块文件名称,其中模块文件一般位于ServerRoot目录下的modules目录中;
    4>LoadFile指令:
      功能类似于上述指令,区别在于后者可以通过绝对路径加载modules目录下的模块文件;

5>ServerAdmin指令:
        当网站出现故障时,需要为客户提供一个可以帮助解决问题的邮件地址,ServerAdmin指令的作用就是提供这样的邮件地址;
    6>ServerName指令:
       设置服务器本机的主机名称以及端口,对URL地址的重定向很重要;
    7>DocumentRoot指令:
        设置WEB服务队客户端开放可见的文档根目录,也就是客户端访问网站的根目录;
    8>ErrorLog指令:
           定位服务器错误日志的位置,默认使用相对路径;
    9>ErrorLogFormat指令:
        设置错误日志的格式;
    10>CustomLog指令:
          设置客户端的访问日志文件名以及日志格式,格式为:CustomLog 文件名 格式;
    11>LogFormat指令:
         描述用户日志文件格式,一般我们会为此指令设置的日志格式创建别名,然后通过CustomLog指令调用该日志格式别名;

12>Include指令:
        允许Apache在主配置文件中加载其他的配置文件;
    13>Options指令:
       为特定目录设置选项,选项可以设置为None,代表不启用任何额外的功能,也可以使用如下常用选项:
        All:开启除MultiViews之外的所有选项;
        ExecCGI:允许执行Options指定目录下的所有CGI脚本;
        FollowSymlinks:允许Options指定目录下的文件链接到目录外的文件或目录;
        Indexes:如果与URL对应的Options目录下找不到DirectoryIndex指定的首页文档,则服务器将会把当前目录的所有文件索引出来;
    14>Order指令:
        控制默认访问状态以及Allow与Deny的次序,如果使用Order deny,allow,则先检查拒绝,再检查允许,当拒绝与允许有冲突时,允许优先,默认规则为                   允许;如果使用Order allow ,deny,则先检查允许,再检查拒绝,当允许与拒绝有冲突时,拒绝优先,默认规则为拒绝;

具体案例:
          Order deny,allow
          Deny from all 拒绝所有;

          Order Allow,Deny
          allow from all 允许所有;

          Order Allow,Deny
          allow from 192.168.1.2 除此IP外拒绝所有;

          Order Allow,Deny
          allow from 192.168.1.2
          Deny from All 拒绝所有人访问;

          Order Deny,Allow
          Deny from all
          allow from 192.168.1.2 除此IP外拒绝所有;

15>IfDefine容器:
          此容器封装的指令仅在启动Apache时测试条件为真才会被处理,测试条件需要在启动Apache时通过-D定义:
        实例:
          service httpd -D UseCache -D MemCache restart

        <IfDefine MemCache>
          LoadModule mem_cache_module modules/mod_mem_cache.so
        </IfDefine>

        <IfDefine UseCache>
          LoadModule cache_module modules/mod_cache.so
        </IfDefine>

16>IfModule容器:
        此容器封装仅在条件满足时才会处理的指令,根据指定的模块是否已被加载来决定条件是否满足;
      案例:
        <IfModule unixd_module>
        User daemon
        Group daemon
        </IfModule>
     17>Directory容器:
        该容器内 指令仅应用于特定的文件系统目录,子目录以及目录下的内容;
     18><DirectoryMatch>
        此指令类似于上述指令,但可以直接使用正则表达式匹配,无须使用~符号;
     19>Files容器:
        容器内的指令仅应用于特定的文件,它可以使用~匹配正则表达式;
     20>FilesMatch容器:
        仅使用正则表达式匹配需要的文件,;
     21>Location容器:
        容器内定义的指令仅对特定的URL有效,语法格式为:<Location URL-path|URL> </Location>,如果需要使用正则表达式,可以用~符号来匹配;

22>LocationMathch容器和VirtualHost容器:
        仅使用正则表达式来匹配URL,等同于使用了~符号匹配的Location;

=============虚拟主机应用案例:
    虚拟主机是在一台服务器上同时运行多个WEB业务,Apache服务支持基于域名以及基于IP的虚拟主机类型,但是更多时候我们更喜欢基于域名的虚拟主机,服务器可以根据客户端访问HTTTP的头部信息来实现网站的分离解析,客户端可以使用不同的域名访问位于同一IP地址的服务器资源;

1》修改主配置文件:
    将主配置文件中的Include conf/extra/httpd-vhosts.conf语句开启,Include指令将会读取次配置文件的内容作为主配置文件的一部分,并且两个虚拟主机的端口     也应该不同,所以主配置文件应该监听两个端口;

2》修改次配置文件:

3》为两个不同的虚拟主机创建各自的页面根目录:
    当访问这两个网站时,如果没有合法的DNS服务器,可以通过修改hosts文件来进行域名解析,如果需要进行基于IP 地址的虚拟主机,只需将*修改为固定的IP地址即可,多个虚拟主机需要使用多个VirtualHost封装;

# prefork MPM
# StartServers: number of server processes to start
# MinSpareServers: minimum number of server processes which are kept spare
# MaxSpareServers: maximum number of server processes which are kept spare
# ServerLimit: maximum value for MaxClients for the lifetime of the server
# MaxClients: maximum number of server processes allowed to start
# MaxRequestsPerChild: maximum number of requests a server process serves
<IfModule prefork.c>
StartServers 8
MinSpareServers 5
MaxSpareServers 20
ServerLimit 256
MaxClients 256
MaxRequestsPerChild 4000
</IfModule>

# worker MPM
# StartServers: initial number of server processes to start
# MaxClients: maximum number of simultaneous client connections
# MinSpareThreads: minimum number of worker threads which are kept spare
# MaxSpareThreads: maximum number of worker threads which are kept spare
# ThreadsPerChild: constant number of worker threads in each server process
# MaxRequestsPerChild: maximum number of requests a server process serves
<IfModule worker.c>
StartServers 4
MaxClients 300
MinSpareThreads 25
MaxSpareThreads 75
ThreadsPerChild 25
MaxRequestsPerChild 0
</IfModule>
当上述的数值赋值不当时,刷新服务时的提醒?

*******注意:
    linux内核默认情况下一个进程可以打开的文件的数量是1024;

可以使用命令来修改这个值:
    ulimit -n 25535 只能暂时有效;
    默认情况下Apache编译进来了哪些模块:

3》启动服务,配置防火墙规则或关闭防火墙:
    service httpd restart
    iptables -I INPUT -p tcp --dport 80 -j ACCEPT
    service iptables save

Apache网站服务的更多相关文章

  1. 《linux就该这么学》第十二节课:第10章,Apache网站服务

    第十章 10.1.网站服务程序 (让用户能够通过网站访问服务器上的资源) 目前提供的网站服务有IIS,Nginx,Apache等,IIS是windows中默认的web服务程序. Nginx是后起之秀, ...

  2. Apache网站服务源码安装与站点部署

    简介: 在Internet 网络环境中,Web服务无疑是最为主流的应用系统,有了WEB站点,企业可以充分展示自己的产品,公司,宣传自己的企业形象,提供各种网上交流,业务平台等. Apache起源:源于 ...

  3. Linux命令详解-Apache网站服务器配置和管理

    1.Apache网站服务器配置和管理 1.源码包安装 2.rpm包安装 rpm –a | grep httpd 3.启动服务 service httpd start 4.配置文件: /etc/http ...

  4. PHPWAMP自启异常,服务器重启后Apache等服务不会自动重启的原因分析

    在使用“PHPWAMP自动任务”时,不少学生遇到如下问题: “phpwamp绿色集成环境重启动电脑(服务器)后,不会自动启动网站服务” (如果是其他环境或是自己搭建时遇到此问题,也是可以用此法解决) ...

  5. php特级课---4、网站服务监控

    php特级课---4.网站服务监控 一.总结 一句话总结:这些是架构师的知识 网络流量监控:cacti,mrtg 邮件报警系统:postfix 压力测试工具:Apache压力测试软件-ab,Mysql ...

  6. Shell 命令行统计 apache 网站日志访问IP以及IP归属地

    Shell 命令行统计 apache 网站日志访问IP以及IP归属地 我的一个站点用 apache 服务跑着,积攒了很多的日志.我想用 shell 看看有哪些人访问过我的站点,并且他来自哪里. 因为日 ...

  7. 部署Nginx网站服务实现访问状态统计以及访问控制功能

    原文:https://blog.51cto.com/11134648/2130987 Nginx专为性能优化而开发,最知名的优点是它的稳定性和低系统资源消耗,以及对HTTP并发连接的高处理能力,单个物 ...

  8. CentOS7 实战源码部署apache网站服务器

    简介:实战演练apache网站服务器的搭建 Apache简介: Apache软件基金会的一个开源免费的网页服务器,也是目前世界上使用最广泛的一种web server , apache最出名的是它跨平台 ...

  9. Nginx网站服务

    1.常见的网站服务 静态网站服务: Apache服务 nginx服务 动态网站服务: Tomcat服务 PHP 2.nginx网站服务特点 (1)nginx具有高并发(特别是静态资源).占用系统资源少 ...

随机推荐

  1. form中input是类型有哪些?

    text:文本框 password:密框码 radio:单选按钮 checkbox:复选框 file:文件选择域 hidden:隐藏域 button:按钮 reset:重置按钮 submit:表单提交 ...

  2. 第九章 消息总线: Spring Cloud Bus

    在微服务架构的系统中, 我们通常会使用轻量级的消息代理来构建一个共用的消息主题让系统中所有微服务实例都连接上来, 由于该主题中产生的消息会被所有实例监听和消费, 所以我们称它为消息总线. 在总线上的各 ...

  3. SuggestFrameWork js代码结构

    关于suggestFrameWork的使用教程网上很多,如果您仅仅想知道如何使用请移步.这里展现一下js代码实现结构 下载地址 http://sourceforge.net/projects/sugg ...

  4. MYSQL用户权限管理GRANT使用

    http://yanue.net/post-97.html GRANT语句的语法: mysql> grant 权限1,权限2,-权限n on 数据库名称.表名称 to 用户名@用户地址 iden ...

  5. Java--神奇的hashcode

    一.Object的HashCode定义 public native int hashCode(); Object类的hashCode方式使用了native修饰也就意味着真正的实现调用的其他语言编写的方 ...

  6. 「小程序JAVA实战」小程序模块之间引用(19)

    转自:https://idig8.com/2018/08/09/xiaochengxu-chuji-19/ 上一节,讲了页面引用模块的概念,如果是模块之前引用呢?源码:https://github.c ...

  7. Win7 资源管理器右键固定的文件夹不见了

    把常用的文件夹固定到任务栏的资源管理器右键菜单中 某天突然就不见了! %APPDATA%\Microsoft\Windows\Recent\AutomaticDestinations “最近" ...

  8. Qt(自适应窗口)

    关于窗口布局: 默认控件的大小为最小尺寸: 如果此时右键设置布局时,窗口大小会自动缩放对应大小,不利于调整. 建议窗口控件设置好最小尺寸,便于窗口布局时,控件不会变形,例如: 改变minimumsiz ...

  9. redis 批量删除键

    主题 为啥会有这篇文章呢? 在redis里我需要批量删除一些 "特殊" 的数据...这些特殊的数据用正常方法比较难删除...所以记录一下我的删除方法.. 背景与问题 我再用Spri ...

  10. ARP跨网段广播

    如果源主机和目的主机不在同一网段,ARP请求的广播帧无法穿过路由器,源主机如何与目标主机实现通信? 补充一下问题,避免因问题不完整而出现误解. ---------------------------- ...