zoukankan      html  css  js  c++  java
  • apache

    一、目前服务器软件的使用排名,占有率
    https://w3techs.com/technologies/overview/web_server/all

    二、当前互联网主流web服务

    当前互联网主流web服务
    静态服务:
    1、apache -->中小型静态web服务的主流,web服务器中的老大哥。
    2、nginx -->大型新兴网站静态web服务主流。
    3、lighttpd -->静态web服务不温不火,逐渐被淘汰。
    静态效率高

    动态服务:
    1、IIS -->微软的web服务器(asp,.aspx)
    2、tomcat -->中小企业动态web服务主流,互联网java容器主流(jsp,do)
    3、resin -->大型动态web服务主流,互联网java容器主流(jsp,do)
    4、php(fcgi)-->大中小网站,php程序的解析容器。
    a.配合apache,php不是守护进程,而是mod_php5.so(module)
    b.配合nginx,lighttpd,php守护进程模式,fcgi模式。


    apache的特点:
    功能强大、配置简单、速度快、应用广泛、性能稳定可靠,并可做代理服务器或负载均衡来使用。
    apache的应用场合:
    使用apache运行静态html网页、图片(处理静态小文件能力不及nginx)。
    使用apache结合php引擎运行php、perl、python等程序,lamp。
    使用apache结合tomcat/resin运行jsp,java等程序,成为中小企业的首选。
    使用apache做代理、负载均衡、rewrite规则过滤等等。

    三、源码安装apache

    3.1)源码下载

    http://mirror.bit.edu.cn/apache/httpd/

    3.2)安装

    cd httpd-2.2.27
    ./configure 
    --prefix=/application/apache2.2.27 
    --enable-deflate 
    --enable-expires 
    --enable-headers 
    --enable-modules=most 
    --enable-so 
    --with-mpm=worker 
    --enable-rewrite
    

    检验编译是否正确

    echo $?
    

    安装

    make && make install
    

    做个软链接,舒服

    ln -s apache2.2.27 apache
    

    3.3)检查语法,开启服务

    检查语法
    [root@rsyncserver ~]# /application/apache/bin/apachectl -t
    开启服务
    [root@rsyncserver ~]# /application/apache/bin/apachectl start
    

    此时在客户端浏览器访问服务器的ip会显示It works!

    如果一个进程在执行的过程中太慢,可以尝试跟踪一下进程     strace

    3.4)查看服务器网页存放默认的根目录,,,站点目录

    [root@rsyncserver conf]# grep -i documentroot httpd.conf
    # DocumentRoot: The directory out of which you will serve your
    DocumentRoot "/application/apache2.2.27/htdocs"
    # This should be changed to whatever you set DocumentRoot to.
    # access content that does not live under the DocumentRoot.
    

    四、httpd.conf

    配置文件下默认定义的首页的名字

    <IfModule dir_module>
        DirectoryIndex index.html   //改成了oldboy.html,可以有多个,按照空格分
    </IfModule>
    

    改了名字之后需要平滑重启

    [root@rsyncserver htdocs]# /application/apache/bin/apachectl -t
    Syntax OK
    [root@rsyncserver htdocs]# /application/apache/bin/apachectl graceful
    

    配置文件里面的目录访问权限

    <Directory />
        Options FollowSymLinks
        AllowOverride None
        Order deny,allow
        Deny from all
    </Directory>
    禁止任何用户访问/目录
    
    <Directory "/application/apache2.2.27/htdocs">
     Options Indexes FollowSymLinks
     AllowOverride None
     Order allow,deny
     Allow from all
    </Directory>
    

    如果此时htdocs里面没有找到默认的首页名字就会显示目录结构,,,,所以第一个优化就是将Indexes 改成-Indexes或者删除。此时如果没有响应的默认首页,就会报403的错,这是个非常重要的安全参数!!!

    五、extra

    重点:httpd-vhosts.conf httpd-mpm.conf httpd-default.conf(了解,其中有参数可以关闭服务器端向客户端展示的服务器版本)

    httpd-default.conf

    ServerSignature Off
    
    ServerTokens Prod
    

    还有的可以看本地图片,在http-apache中。

    六、虚拟主机,部署多个站点,每个站点用不同的域名和站点目录,不同的端口,不同的ip

    虚拟主机的分类:
    a.基于域名(重要的)
    b.基于端口(自己了解)
    c.基于ip(自己了解)
    这些都可以相互配合,例如域名加端口,ip加端口

    Apache 在接受到请求时,首先会默认第一个VirtualHost,然后再找匹配的,如果没有匹配的,就是第一个VirtualHost起作用。 因此在httpd.conf中,将<Dicrectory />(这个是所有目录的默认配置)和 <Direcotry /opt/lampp/htdocs>的权限,都是deny from all.作为默认。

    6.1)基于域名例子:

    域名						站点目录
    http://www.etiantian.org			/var/html/www
    http://blog.etiantian.org			/var/html/blog
    http://bbs.etiantian.org			/var/html/bbs
    

    6.1.2)创建三个web站点目录

    [root@rsyncserver ~]# mkdir -p /var/html/{www,blog,bbs}
    [root@rsyncserver ~]# tree /var/html/
    /var/html/
    ├── bbs
    ├── blog
    └── www
    

    6.1.3)在三个站点目录中写入一个首页,并导入数据

    [root@rsyncserver ~]# for name in www blog bbs;do echo "http://$name.etiantian.org" >>/var/html/$name/index.html;done
    [root@rsyncserver ~]# for name in www blog bbs;do cat /var/html/$name/index.html;done
    http://www.etiantian.org
    http://blog.etiantian.org
    http://bbs.etiantian.org
    

    6.1.4)配置虚拟主机

    [root@rsyncserver extra]# vim httpd-vhosts.conf
    NameVirtualHost *:80
    
    <VirtualHost *:80>
        ServerAdmin 491964349@qq.com
        DocumentRoot "/var/html/www"
        ServerName www.etiantian.org
        ServerAlias etiantian.org
        ErrorLog "logs/www-error_log"
        CustomLog "logs/www-access_log" common
    </VirtualHost>
    
    
    <VirtualHost *:80>
        ServerAdmin 491964349@qq.com
        DocumentRoot "/var/html/blog"
        ServerName blog.etiantian.org
        ErrorLog "logs/blog-error_log"
        CustomLog "logs/blog-access_log" common
    </VirtualHost>
    
    <VirtualHost *:80>
        ServerAdmin 491964349@qq.com
        DocumentRoot "/var/html/bbs"
        ServerName bbs.etiantian.org
        ErrorLog "logs/bbs-error_log"
        CustomLog "logs/bbs-access_log" common
    </VirtualHost>
    

    6.1.5)此时是不可以访问页面的,因为没有在主配置主文件添加响应的插件

    [root@rsyncserver extra]# vim ../httpd.conf 
    # Server-pool management (MPM specific)
    Include conf/extra/httpd-mpm.conf
    # Virtual hosts
    Include conf/extra/httpd-vhosts.conf
    

    6.1.6)检查、平滑重启

    [root@rsyncserver bin]# ./apachectl -t
    Syntax OK
    [root@rsyncserver bin]# ./apachectl graceful
    

    6.1.7)本地解析

    因为我的域名是私有的本地的,所以我要在本地做解析,然后再windows C:WindowsSystem32driversetchosts 下加上
    192.168.222.140 www.etiantian.org blog.etiantian.org bbs.etiantian.org

    然后再windows端访问ping www.etiantian.org是否通

    6.1.8)此时还是不可以访问,因为少了个很重要的步骤,主配置文件没有开启权限目录的响应配置

     vim httpd.conf 
    <Directory "/var/html">
     Options -Indexes FollowSymLinks
     AllowOverride None
     Order allow,deny
     Allow from all
    </Directory>
    

    此时就可以了。

    6.2)基于端口加域名的例子,内网用的多,这个是基于上面的配置的,如果单纯的配置这个,还要参考上面的一些配置

    [root@rsyncserver conf]# vim httpd.conf 
    Listen 80
    Listen 8000
    Listen 9000
    
    [root@rsyncserver extra]# vim httpd-vhosts.conf 
    NameVirtualHost *:80
    NameVirtualHost *:8000
    NameVirtualHost *:9000
    <VirtualHost *:80>
        ServerAdmin 491964349@qq.com
        DocumentRoot "/var/html/www"
        ServerName www.etiantian.org
        ServerAlias etiantian.org
        ErrorLog "logs/www-error_log"
        CustomLog "logs/www-access_log" common
    </VirtualHost>
    
    
    <VirtualHost *:8000>
        ServerAdmin 491964349@qq.com
        DocumentRoot "/var/html/blog"
        ServerName blog.etiantian.org
        ErrorLog "logs/blog-error_log"
        CustomLog "logs/blog-access_log" common
    </VirtualHost>
    
    <VirtualHost *:9000>
        ServerAdmin 491964349@qq.com
        DocumentRoot "/var/html/bbs"
        ServerName bbs.etiantian.org
        ErrorLog "logs/bbs-error_log"
        CustomLog "logs/bbs-access_log" common
    
    [root@rsyncserver bin]# ./apachectl -t
    Syntax OK
    [root@rsyncserver bin]# ./apachectl graceful
    
    
    访问的时候需要加上端口号
    

    6.3)基于ip的虚拟主机

    [root@rsyncserver extra]# ifconfig eno16777736:0 192.168.222.141/24 up
    [root@rsyncserver extra]# ifconfig eno16777736:1 192.168.222.142/24 up
    
    [root@rsyncserver extra]# vim httpd-vhosts.conf 
    如果出现问题可以加NameVirtualHost *:80
    
    <VirtualHost 192.168.222.140:80>
        ServerAdmin 491964349@qq.com
        DocumentRoot "/var/html/www"
        ServerName 192.168.222.140
        ServerAlias etiantian.org
        ErrorLog "logs/www-error_log"
        CustomLog "logs/www-access_log" common
    </VirtualHost>
    
    
    <VirtualHost 192.168.222.141:80>
        ServerAdmin 491964349@qq.com
        DocumentRoot "/var/html/blog"
        ServerName 192.168.222.141
        ErrorLog "logs/blog-error_log"
        CustomLog "logs/blog-access_log" common
    </VirtualHost>
    
    <VirtualHost 192.168.222.142:80>
        ServerAdmin 491964349@qq.com
        DocumentRoot "/var/html/bbs"
        ServerName 192.168.222.142
        ErrorLog "logs/bbs-error_log"
        CustomLog "logs/bbs-access_log" common
    </VirtualHost>
    
    
    对于主配置文件httpd.conf里面的监听端口非常的重要
    

    6.4)问题

    httpd: Could not reliably determine the server's fully qualified domain name, using fe80::20c:29ff:fe07:4bb7 for ServerName
    fully qualified domain name=FQDN
    [root@rsyncserver extra]# vim ../httpd.conf 
    ServerName 127.0.0.1:80
    [root@rsyncserver extra]# ../../bin/apachectl graceful
    [root@rsyncserver extra]# 
    此时在启动就没有问题了,这个无关紧要
    

    七、apache日志轮询,,,,可以参考http://oldboy.blog.51cto.com/2561410/584513

    7.1)apache日志格式详细说明

    通用日志格式(Common Log Format)
    组合日志格式(Commbined Log Format) 这个工作中用的多

    7.2)安装apache日志轮询软件

    unzip cronolog-1.6.2.zip 
    cd cronolog-1.6.2
    chmod 744 configure
    ./configure 
    make && make install
    echo $?
    

    7.3)cronolog日志轮询配置说明:

    提示:轮询日志的正确写法,被轮询的日志路径要写全路径
    按天轮询(生产环境常见用法,推荐使用):

    [root@promote /]# mkdir -p app/logs
    
    [root@promote extra]# vim httpd-vhosts.conf
    <VirtualHost *:80>
        ServerAdmin 491964349@qq.com
        DocumentRoot "/var/html/bbs"
        ServerName bbs.etiantian.org
        ErrorLog "logs/bbs-error_log"
        CustomLog "|/usr/local/sbin/cronolog /app/logs/access_bbs_%Y%m%d.log" combined			====改此处配置
    </VirtualHost>
    

      

  • 相关阅读:
    [转载]Sublime Text 3 搭建 React.js 开发环境
    浏览器缓存之Expires Etag Last-Modified max-age详解
    第16周作业
    第15周作业
    第14周作业
    第13周作业集
    软件工程结课作业
    第13次作业--邮箱的正则表达式
    第12次作业--你的生日
    第11次作业--字符串处理
  • 原文地址:https://www.cnblogs.com/bill2014/p/7453044.html
Copyright © 2011-2022 走看看