zoukankan      html  css  js  c++  java
  • Linux课程笔记 Apache的优化

    Apache服务优化

    1 配置Apache日志轮询

    apache自带的日志轮询工具也是可以使用的,但是老师测试会丢日志,所以采用cronolog来配置日志轮询

    tar zxf cronolog-1.6.2.tar.gz

    cd cronolog-1.6.2

    ./configure 

    make 

    make install

    <VirtualHost *:80>

        ServerAdmin qinbf@etiantian.com

        DocumentRoot "/var/html/www"

        ServerName www.etiantian.com

        ServerAlias etiantian.com

        ErrorLog "logs/www.etiantiancom-error_log"

       # CustomLog "logs/www.etiantiancom-access_log" common

    CustomLog "|/usr/local/sbin/cronolog /application/apache/logs/access_www_%w.log" combined

    #注意这里要写全路径,%w表示按周轮询

    </VirtualHost>

    2 错误页面优雅显示

    [root@test3 bin]# grep "ErrorDocument 404" /application/apache/conf/httpd.conf

    #ErrorDocument 404 /missing.html

    #ErrorDocument 404 "/cgi-bin/missing_handler.pl"

    #可以指定404错误提示的页面,可以是URL,也可以是脚本或者文件

    3 mod_deflate文件压缩功能

    3.1 mod_deflate模块介绍

    mod_deflate模块提供了DEFLATE输出过滤器,允许服务器在将输出内容发送到客户端之前进行压缩,提升用户体验。

    3.2 mod_deflate安装检查

    (1) 编译安装httpd情况时是否已经安装mod_deflate,命令为:

    [root@test3 ~]# /application/apache/bin/apachectl -l |grep mod_deflate

      mod_deflate.c

    (2) 如果是以DSO方式编译的(--enable-so开启DSO编译方式),则查看方法为:

    [root@test3 ~]# ls /application/apache/modules/ |grep mod_deflate

    mod_deflate.so

    [root@test3 ~]# grep mod_deflate.so /application/apache/conf/httpd.conf

    LoadModule  deflate_module  modules/mod_deflate.so

    [root@test3 ~]# /application/apache/bin/apachectl -M |grep deflate

     deflate_module(dynamic)  #static是表示在编译的时候就已经安装了

    Syntax OK

    特别说明:以上两种情况不能同时存在,否则会有冲突

    3.3 mod_deflate安装

    cd  /root/tools/httpd-2.2.25/modules/filters

    /application/apache/bin/apxs -c -a -i mod_deflate.c

    ll /application/apache/modules/mod_deflate.so

    #如果提示冲突,要把/application/apache/conf/httpd.conf文件中,LoadModule  deflate_module  modules/mod_deflate.so这句命令注释掉。

    3.4 mod_deflate应用

    <ifmodule mod_deflate.c>

    DeflateCompressionLevel  9

    SetOutputFilter DEFLATE

    DeflateFilterNote  Input  instream

    DeflateFilterNote  Output  outstream

    DeflateFilterNote  Ratio  ratio

    #Logformat  ‘  “%r”  %{outstream}n/%{instream}n  (%{ratio}n%%)’ deflate

    #CustomLog  logs/deflate_log.log deflate

    </ifmodule>

    #把以上这段代码嵌入到/application/apache/conf/extra/httpd-vhosts.conf的/var/html/www配置内容里面(也可以配置到全局目录里面)

    <VirtualHost *:80>

        ServerAdmin qinbf@etiantian.com

        DocumentRoot "/var/html/www"

        ServerName www.etiantian.com

        ServerAlias etiantian.com

        ErrorLog "logs/www.etiantiancom-error_log"

        CustomLog "logs/www.etiantiancom-access_log" common

       <ifmodule mod_deflate.c>

            DeflateCompressionLevel  9

            SetOutputFilter DEFLATE

            DeflateFilterNote  Input  instream

            DeflateFilterNote  Output  outstream

            DeflateFilterNote  Ratio  ratio

            #Logformat  ‘  “%r”  %{outstream}n/%{instream}n  (%{ratio}n%%)’ deflate

            #CustomLog  logs/deflate_log.log deflate

       </ifmodule>

    </VirtualHost>

    测试:把老师的test_deflate.tar.gz压缩包上传到/var/html/www下,然后解压,不需要做任何移动。打开Firefox开发专版,访问192.168.1.4/test/deflate.html,打开firebug,在YSlow中可以看到测试结果。

     

    4 mod_expires缓存功能

    Expire其实就是通过header报文来指定特定类型的文件在浏览器中的缓存时间。大多数的图片,flash在发布后都不是需要经常修改的,做了缓存以后这样的浏览器以后就不需要再从服务器下载这些文件而是直接从缓存中读取,这样再访问页面的速度会大大加快。

    在刚才的mod_deflate模块配置内容下面加入以下配置:

    ExpiresActive on

    ExpiresDefault "access plus 12 month"

    ExpiresByType text/html "access plus 12 months"

    ExpiresByType text/css "access plus 12 months"

    ExpiresByType image/gif "access plus 12 months"

    ExpiresByType image/jpeg "access plus12  12 months"

    ExpiresByType image/jpg "access plus 12 months"

    ExpiresByType image/png "access plus 12 months"

    EXpiresByType application/x-shockwave-flash "access plus 12 months"

    EXpiresByType application/x-javascript "access plus 12 months"

    ExpiresByType video/x-flv "access plus 12 months"

    [root@test3 www]# curl -I 192.168.1.4/01.jpg

    HTTP/1.1 200 OK

    Date: Sun, 17 Nov 2013 03:51:45 GMT

    Server: Apache/2.2.25 (Unix) DAV/2 PHP/5.3.10

    Last-Modified: Sun, 07 Nov 2010 12:20:20 GMT

    ETag: "40904-486f3-4947587f66900"

    Accept-Ranges: bytes

    Content-Length: 296691

    Cache-Control: max-age=31104000

    Expires: Wed, 12 Nov 2014 03:51:45 GMT

    Vary: Accept-Encoding

    Content-Type: image/jpeg

    5 更改Apache默认用户

    创建一个用户例如Apache(最好起一个不常用的名字),用于子进程和子线程。

    useradd  -M  -s /sbin/nologin  apache

    vi  /application/apache/conf/httpd.conf

    User  apache

    Group  apache

    6  worker模式提升并发数

    7  屏蔽apache版本等敏感信息

    (1) 修改httpd.conf文件,打开httpd-default.conf模块

    (2) 修改httpd-default.conf文件,ServerSignature Off以及ServerTokens Prod之后apachectl graceful使设置生效

    8 apache目录文件权限设置(root,目录755,文件644)

    [root@test3 html]# ll

    总计 12

    drwxr-xr-x 2 root root 4096 09-03 18:51 bbs

    drwxr-xr-x 5 root root 4096 11-12 01:53 blog

    drwxr-xr-x 3 root root 4096 11-17 11:43 www

    提示:在网站架构中,应把资源文件,包括用户上传的图片,福建等和程序分离,最好把上传程序也分离,这样就可以从容授权了。

    9 开启httpd-mpm.conf增加连接数

    10 apache防盗链功能

    11 禁止目录Index

    Option  FollowSymLinks 这一个参数去掉Index选项

    12 禁止用户覆盖(重载)

    AllowOverride None  #禁止用户覆盖(重载)

    #加快服务器速度,因为它不再为每个请求寻找每个目录访问控制问价(.htaccess)

    13 关闭CGI

    ScriptAlias /cgi-bin/ "/application/apache2.2.25/cgi-bin/"

    <Directory "/application/apache2.2.25/cgi-bin">

        AllowOverride None

        Options None

        Order allow,deny

        Allow from all

    </Directory>

    删除以上内容

    14 避免使用.htaccess文件(分布式配置文件)

    首先从性能上,就应该避免使用.htaccess文件

    15 apache安装模块

    (mod_evasive20防DDOS、mod_limitipconn(针对单站点)配置、mod_security防SQL注入等

    makejail   http://www.floc.net/makejail

    是一个自动把建立jail所需要的程序放到jail内的软件

    mod_security   http://www.modsecurity.org

    是apache的一个模块,他有请求过滤,日志审计等功能,可以防止SQL Injection,跨站脚本攻击,很不错的一个模块

    16 正确途径取得源代码,勤打apache补丁

    17 apache日志授予root700权限

    chown  -R root.root logs

    chmod  -R 700 logs 

    18 系统内核参数优化

    19 禁止PHP解析指定站点目录

    20 使用tmps文件系统替代频繁访问的目录

    21 尽可能减少HTTP请求数

    22 使用CDN做网站加速

    23 apache程序架构优化

    1) 程序页面服务器  2)图片附件服务器  3)上传服务器  三者的功能尽量分离

    a) 分离最佳方式是分别使用独立的服务器(需要程序支持)

    b) 次选方案在前端负载均衡器通过haproxy/nginx根据目录或扩展名请求后面对应的服务器

  • 相关阅读:
    hdu4841 圆桌问题[STL vector]
    hdu1002 A + B Problem II[大数加法]
    hdu1501 Zipper[简单DP]
    C语言学习之结构体
    C++学习之从C到C++
    一键自动格式化你的代码
    C标准库string.h中几个常用函数的使用详解
    Jlink使用技巧系列教程索引
    Jlink使用技巧之合并烧写文件
    Jlink使用技巧之烧写SPI Flash存储芯片
  • 原文地址:https://www.cnblogs.com/fengze/p/6822998.html
Copyright © 2011-2022 走看看