Apache

作者: 无处裸奔 | 来源:发表于2019-09-27 09:10 被阅读0次

    Apache

    Apache介绍

    Apache源于NCSAhttpd服务器(National center for supercomputing Applications,简称NCSA),经过多次修改,成为世界上最流行的Web服务器软件之一。Apache取自”a patchy server“的读音,意思是充满补丁的服务器。因为它是自由软件,所以不断的有人来为它开发新的功能、新的特性、修改原来的缺陷。Apache的特点是简单、速度快、性能稳定,并且可以作为代理服务器使用

    Apache源码包下载

    wget http://mirror.bit.edu.cn/apache/httpd/httpd-2.4.29.tar.gz
    

    Linux系统中源代码包安装过程

    配置(configure)

    • 每个软件的源代码目录中都会存在一个名为configure的脚本文件,配置和安装过程被configure脚本中一系列命令行选项控制。每个软件包的配置方式是不同的,所以可以在其源代码目录中,通过./configure --help命令了解所有可用的编译选项及简短解释。配置好后,便可以开始编译模块。

    编译(make)

    • 软件配置过程成功完成以后,会在当前目录下生成一个MAKEFILE文件。可以通过make命令按MAKEFILE文件的配置进行编译,编译成功以后则可执行的二进制的文件,便可以开始进行软件安装了。

    安装(make install)

    • 根据配置和编译过程,在Linux命令行中通过执行make install命令,将软件安装到指定的位置

    Apache安装

    设计安装选项

    • 指定安装位置 usr/local/apache2/
    • 指定配置文件安装位置etc/httpd/

    安装过程

    • 查询是否有低版本的Apache

      • rpm -qa|grep -i httpd
    • 如果存在低版本的Apache需要卸载

      • rpm -e httpd-manual --nodeps
      • rpm -e redhat-config-httpd --nodeps
      • rpm -e httpd --nodeps
    • 解压并删除apache源码包

      • tar zxvf httpd-2.4.29.tar.gz
      • rm -rf *.tar.gz
    • 配置Apache

      • ./configure \   # 执行当前目录下软件自带的配置命令
        --prefix=/usr/local/apache2 \   # 指定Apache软件安装的位置
        --sysconfdir=/etc/httpd \   # 指定Apache服务器的配置文件存放位置
        --with-z=/usr/local/zlib \  # 指定zlib库文件的位置
        --disable-userdir \ # 请求的映像到用户特定目录
        --enable-so \   # 以动态共享对象(DSO)编译
        --enable-rewrite=shared \   # 基于规则的URL操控
        --enable-expires=shared \   # 期满头控制
        --enable-deflate=shared \   # 缩小传输编码的支持
        --enable-static-support \   # 建立一个静态链接版本的支持
        
    • 编译和安装Apache

      make && make install

    • 启动、关闭和重启Apache服务

      • /usr/local/apache2/bin/apachectl start`
      • /usr/local/apache2/bin/apachectl stop
      • /usr/local/apache2/bin/apachectl restart
    • 查看Apache服务器是否开启成功

      • netstat -tnl
    • 设置Apache开机自启动

      • echo "/usr/local/apache2/bin/apachectl start" >> /etc/rc.d/rc.local
    • 查看Apache开机自启动是否设置成功

      • tail -5 /etc/rc.d/rc.local

    目录结构说明

    bin Apache执行文件的目录

    • apachectl
    • htpasswd

    cgi-bin 预设给一些CGI网页程序存放的目录

    error 默认错误应答文件存放的目录

    htdocs 默认Web文档根目录

    icons 预设的小图标存放的目录

    logs 默认日志存放的目录

    • 动态查看访问日志
      • tail -f access_log

    man 帮助手册存放的目录

    modules 动态加载模块存放的目录

    检查http.conf文件配置语法

    # linux
    /usr/local/apache2/bin/apachectl -t
    
    # windows
    C:\APP\myphp_www\PHPTutorial\Apache\bin\httpd.exe -t
    

    httpd.conf文件配置

    ### 全局配置 Global Environment
    
    # Apache服务器的根目录
    ServerRoot  "usr/local/apache2"
    
    # 监听IP、端口和协议
    # Listen [ip]:protnumber[protocol]
    Listen 80
    
    # 加载模块
    # LoadModule 模块名称 模块文件路径全名
    # 服务器在输出内容到客户端以前,将内容压缩,节约带宽
    LoadModule deflate_module modules/mod_deflate.so
    # 允许通过配置文件控制http协议的过期时间、缓存控制等
    LoadModule expires_module modules/mod_expires.so
    # 通过一定的规则实时重写URL请求
    LoadModule rewrite_module modules/mod_rewrite.so
    
    # 指定提供服务的子进程的用户和组
    # User 用户名
    User daemon
    # Group 组名称
    Group daemon
    
    # 网站管理员邮箱,网站出错时会显示在客户端
    ServerAdmin you@example.com
    
    # 文档根目录,站点存放的位置
    DocumentRoot "/usr/local/apache2/htdocs"
    
    # 服务器用于辨识自己主机名和端口号
    ServerName www.example.com:80
    
    # 错误日志存放位置
    ErrorLog "logs/error_log"
    
    # 访问日志存放位置
    CustomLog "logs/access_log" common
    
    <IfModule dir_module>
        # 目录索引
        DirectoryIndex index.html index.php index.py /php-bin/index.php
    </IfModule>
    
    
    ## extra/httpd-default.conf全局配置选项
    
    # 超时时间,单位秒
    Timeout 300
    # 是否使用长链接
    KeepAlive On
    # 一个长链接中最大请求次数
    MaxKeepAliveRequests 100
    # 一个长链接中两次请求之间的超时时间,单位秒
    KeepAliveTimeout 5
    
    ## extra/httpd-mpm.conf(多路分支模块)全局配置选项
    
    # 当服务器是Linux时生效
    <IfModule mpm_prefork_module>
        # 服务器启动时启动的子进程数
        StartServers          5
        # 最小的空闲子进程数
        MinSpareServers       5
        # 最大的空闲子进程数
        MaxSpareServers      10
        # 同一时间服务器允许连接的客户端数量
        MaxClients          150
        # 每个子进程的生存期内最大的请求数
        MaxRequestsPerChild   0
    </IfModule>
    
    # 当服务器是Windows时生效
    <IfModule mpm_winnt_module>
        ThreadsPerChild      150
        MaxRequestsPerChild    3000   
    </IfModule>
    
    # 当Apache版本大于2.2是生效
    <IfVersion >2.2>
    </IfVersion>
    
    # 当mpm_winnt_module模块不存在时生效
    <IfModule !mpm_winnt_module>
    </IfModule>
    
    # Directory作用于目录
    <Directory /var/web/dir1>
        # Files作用于文件
        <Files private.html>
        </Files>
    </Directory>
    
    # Location作用于网络空间
    # 控制http://you.example.com/private
    <Location /private>
    </Location>
    
    # 可以使用正则表达式
    <DirectoryMatch /var/*.html>
    </DirectoryMatch>
    
    # 可以使用正则表达式
    <FilesMatch \.(gif|jpe?g|png)$>
    </FilesMatch>
    
    # 可以使用正则表达式
    <LocationMatch /private>
    </LocationMatch>
    
    # 给路径设置别名
    Alias /abc/ "/var/www/html/"
    <Directory "/var/www/html">
        # Indexes允许列出目录下所有文件
        # FollowSymlinks是否使用文件链接
        Options Indexes FollowSymlinks
        # 不适用.htaccess文件中的配置
        AllowOverride None
        # 先使用允许规则再使用拒绝规则
        Order allow,deny
        # 允许任何IP或主机访问
        Allow from all
        # 拒绝192.168.*的IP访问
        deny from 192.168.*
    </Directroy>
    
    ## extra/httpd-vhosts.conf全局配置选项
    <VirtualHost *:80>
        # 管理员邮箱
        ServerAdmin admin@baidu.com
        # 网站根目录
        DocumentRoot "C:\APP\myphp_www\PHPTutorial\WWW\www.baidu.com"
        # 服务名(域名)
        ServerName www.baidu.com
        # 错误日志存放位置
        ErrorLog "logs/www.baidu.com_error_log"
        # 访问日志存放位置
        CustomLog "logs/www.baidu.com_log" common
        <Directory "C:\APP\myphp_www\PHPTutorial\WWW\www.baidu.com">
            # 允许文件索引、允许使用文件链接
            Options Indexes FollowSymLinks
            # 不允许使用.htaccess文件
            AllowOverride None
            # 先使用允许规则再使用拒绝规则
            Order allow,deny
            # 允许所有访问者
            Allow from all
        </Directory>
    </virtualHost>
    

    虚拟主机

    基于IP地址的虚拟主机

    需要在同一台主机上绑定多个IP,在每个IP上建立一个虚拟主机,由于IP地址缺乏,此种方法不常使用

    基于域名的虚拟主机

    所有的虚拟主机都使用同一个IP地址,通过不同的域名来标识不同的虚拟主机

    相关文章

      网友评论

          本文标题:Apache

          本文链接:https://www.haomeiwen.com/subject/elzhyctx.html