linux/mac apache 的配置文件和安装位置,macapache


apache的配置文件总结, 是 linux/mac 下的配置


我是用的 mac 的 brew自动安装的 Apache, apache 在 mac 中是叫httpd. 
安装后, Apache 的配置文件和资源文件是在不同的目录当中.
配置文件一般是在 /usr/local/etc/apache2/2.4/httpd.conf
apache的安装目录是在 /usr/local/Cellar/httpd24/2.4.18


1 针对主机环境的基本配置 
    ServerRoot  apache主目录
        这个是就是 apache 的安装目录, 不是配置文件的目录.  下面配置的路径, 如果用的是相对路径, 都是把这个当做根目录.
    Listen   监听端口
        监听的端口, 可以写 IP:PORT, 或者直接写端口, Apache 的默认端口是80, 所以我这里就用的80
    LoadModule  加载的相关模块
        后面有详细的解释
    User   Group   用户和组
    ServerAdmin  管理员邮箱
    ServerName  服务器名
        (没有域名解析时,使用临时解析。不开启), 反向解析不能返回服务器名称的话, 就设置成 IP 地址
    ErrorLog "logs/error_log 错误日志
    CustomLog "logs/access_log" common  正确访问日志
    DirectoryIndex index.html index.php  默认网页文件名,优先级顺序
    Include  etc/extra/httpd-vhosts.conf  子配置文件中内容也会加载生效 


2 主页目录及权限
    # 站点的位置
DocumentRoot "/Users/admin/websides"

    # 权限
    <Directory "/Users/admin/websides">
        # Indexes 就是控制 网站是否显示目录的开关. 比如: 如果index.php不存在就会显示网站下面的所有目录了, 当然正常情况下是关闭的indexs的。
        Options Indexes FollowSymLinks 
            #选项, 可以有多个, 用空格分隔        
            None:没有任何额外权限       
            All: 所有权限       
            Indexes:浏览权限(当此目录下没有默认网页文件时,显示目录内容)       
            FollowSymLinks:准许软连接到其他目录


        # 开启rewrite模块对 URL 重写时, 会用到. 否则就是 None, 开启的话, 会找.htacess文件作为配置文件
        AllowOverride None
            #定义是否允许目录下.htaccess文件中的权限生效
            None:.htaccess中权限不生效
            All:文件中所有权限都生效
            AuthConfig:文件中,只有网页认证的权限生效。


        # 访问控制列表
        Require all granted
            #定义此目录的允许访问权限  
            例1: 仅允许IP为192.168.1.1的主机访问 
                <RequireAll>
                        Require all  denied
                        Require ip 192.168.1.1
                </RequireAll>
            例子2.仅允许192.168.1.0/24网络的主机访问 
                <RequireAll>
                    Require  all  denied
                    Require ip 192.168.1.0/24
                </RequireAll>
            例子3.禁止192.168.1.2的主机访问,其他的都允许访问, 
                <RequireAll>
                    Require all  granted
                    Require not ip 192.168.1.2
                </RequireAll>
            例子4.允许所有访问

                Require all  granted 

#可以不写在<RequireAll>。。。</RequireAll>中

            例子5.拒绝所有访问

                Require all  denied  

  #可以不写在<RequireAll>。。。</RequireAll>中

    </Directory>


3 目录别名
    用途: 扩展网站目录,增加服务器,使用二级域名,使用目录别名
        这个不是在 httpd.conf 中配置, 而是在扩展配置文件中. 位置: httpd.conf 所在目录下的 extra 文件夹里
    子配置文件名 (httpd.conf所在目录)/extra/httpd-autoindex.conf
    例如:
        Alias /test1/ "/Users/admin/websides/test2/" 
        <Directory "/Users/admin/websides/test2/">
            Options Indexes MultiViews
            AllowOverride None
            Require all granted
        </Directory> 


        说明: 访问 URL (127.0.0.1/test1/), 则会访问/Users/admin/websides/test2/里的文件. 
        注意: Alias对于斜线的使用,如果别名末尾使用的斜线,则对应目录也要以斜线结束;如果别名末尾没有斜线,则对应目录也不需要.

        注意: Aliais只会影响本地URL(127.0.0.1/test1/ test1的部分)的对应,它不会修改URL的主机名称部分

注意: 使用此功能, 必须开启 alias 的模块. 





4 常用子配置文件
    httpd-autoindex.conf        apache系统别名
    httpd-default.conf          线程控制     
    httpd-info.conf             状态统计网页
    httpd-languages.conf        语言编码
    httpd-manual.conf           apache帮助文档     
    httpd-mpm.conf              最大连接数
        MaxRequestWorkers      250 (默认worker MPM模块生效)
    httpd-multilang-errordoc.conf  错页面 
    httpd-ssl.conf              ssl安全套接字访问
    httpd-userdir.conf          用户主目录配置
    httpd-vhosts.conf           虚拟主机 


5 模块
    LoadModule php5_module libexec/libphp5.so
        注意: 模块载入的顺序很重要。没有专家的建议,不要修改.
        在终端使用命令 httpd -l 可以查看 apache 已经使用的模块.
        libexec/libphp5.so 这个是用的相对路径, 就是相对于 ServerRoot 设置的根目录. 当然, 这里也可以写绝对路径. 
        如果启动apache服务的时候, 报错, 没有对应的模块, 那么, 就去 php 的安装目录, 把*. so的文件给复制到 apache 的 libexec目录下. 
    *   上面这个我需要特别注意, 因为这个是控制使用哪个版本的 php 的. 如果安装了不同版本的 php.
        例如, 安装了5.2的和5.6的版本, 想使用5.2版本的话, 需要使用php5.2 安装目录下的 libphp5.so ,把这个拷贝到 apache安装目录下的 libexec 文件夹内. 就可以了. 

<IfModule dir_module>
    DirectoryIndex index.php index.tpl index.html
</IfModule>

这个意思的是: 如果开启了 dir_module 这个模块, 那么就执行里面的设置. 

这个设置是很常用的, 意思是, 如果指定的 文件目录里, 有 index.php index.tpl index.html, 那么久自动加载此文件, 有先后的顺序. 

使用这个模块的前提是: 开启了 LoadModule dir_module libexec/mod_dir.so , 也就是把注释取消掉. 


6 待续...





相关内容

    暂无相关文章