美文网首页PHP
PHP Apache - MAC

PHP Apache - MAC

作者: 887d1fc86fe6 | 来源:发表于2020-04-21 15:14 被阅读0次

    MAC 默认是自带 Apache 服务器的,但是我们需要后天的去使用配置一下它。

    • 基础命令

    sudo apachectl -k start    // 开启
    sudo apachectl -k stop      // 关闭
    sudo apachectl -k restart    // 重启
    
    sudo apachectl start    // 开启
    sudo apachectl stop      // 关闭
    sudo apachectl restart    // 重启
    
    // Apache配置文件
    cd /etc/apache2
    sudo cp httpd.conf httpd.conf.backup  // 备份配置文件
    sudo cp httpd.conf.backup httpd.conf  // 还原配置(其实就是用备份文件覆盖)
    
    // 备份php.ini文件
    cd /etc
    sudo cp php.ini.default php.ini
    

    httpd.conf:为 Apache 服务器的配置文件。
    php.ini:为 PHP 语言的配置文件。

    上面启动参数里面有带 -k 跟没带 -k 的启动两种方式,可以看看Apache起步命令加-k参数和不加的区别,但是有一点需要注意,如果你是用 -k 的启动那么你后面的停止重启都需要用带 -k 命令,否则会不生效,停止或者重启不了,使用不带 -k 的启动也是一样的道理。

    我这边是新机器,之前也没有对 Apache 服务器做过处理的,所以我们先开机就来启动一下 Apache:

    sudo apachectl -k start
    

    运行之后结果:

    dengzemiaodeMacBook-Pro:~ dengzemiao$ sudo apachectl -k start
    AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using dengzemiaodeMacBook-Pro.local. Set the 'ServerName' directive globally to suppress this message
    dengzemiaodeMacBook-Pro:~ dengzemiao$ 
    

    咋们先不管警告啥的,因为咋们是新机器肯定啥都没有的,启动之后浏览器打开IP地址:http://localhost 或 http://127.0.0.1,如果浏览器输出 It works!,那就是启动成功了。

    看来还是启动成功的!既然启动成功了!那么我们可以继续下一步...


    • 修改 Apache 的配置文件

      • 修改前先备份配置文件 httpd.conf(使用上面的终端命令),然后用sublime text、vscode、文本编辑等编辑器打开 /etc/apache2 下的 httpd.conf 文件。

      • Windows 上面是需要配置 Apache 路径的,Mac上则不需要这个步骤。

      • 插入 Indexes 字段,开发阶段使用,线上服务器则需要去掉

        按 Command+F 搜索关键字 "FollowSymLinks",在 Options 和 FollowSymLinks 之间插入单词 Indexes。

        Indexs 配置的作用是如果不存在Index.html文件的时候, 将该目录下的文件树列出来

    # DocumentRoot: The directory out of which you will serve your
    # documents. By default, all requests are taken from this directory, but
    # symbolic links and aliases may be used to point to other locations.
    #
    DocumentRoot "/Library/WebServer/Documents"
    <Directory "/Library/WebServer/Documents">
        #
        # Possible values for the Options directive are "None", "All",
        # or any combination of:
        #   Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews
        #
        # Note that "MultiViews" must be named *explicitly* --- "Options All"
        # doesn't give it to you.
        #
        # The Options directive is both complicated and important.  Please see
        # http://httpd.apache.org/docs/2.4/mod/core.html#options
        # for more information.
        #
        Options Indexes FollowSymLinks Multiviews
        MultiviewsMatch Any
    
        #
        # AllowOverride controls what directives may be placed in .htaccess files.
        # It can be "All", "None", or any combination of the keywords:
        #   AllowOverride FileInfo AuthConfig Limit
        #
        AllowOverride None
    
        #
        # Controls who can get stuff from this server.
        #
        Require all granted
    </Directory>
    

    没有加入 Indexes 的打开 http://127.0.0.1 效果:

    加入 Indexes 的打开 http://127.0.0.1 效果:

    • 修改默认服务器地址

      搜索关键字"ServerName",如果不修改,就是http://127.0.0.1

    # ServerName gives the name and port that the server uses to identify itself.
    # This can often be determined automatically, but we recommend you specify
    # it explicitly to prevent problems during startup.
    #
    # If your host doesn't have a registered DNS name, enter its IP address here.
    #
    #ServerName www.example.com:80 -》 默认配置就是 127.0.0.1
    # 现在我们需要自定义一个 ServerName
    ServerName 127.0.0.1
    
    • 打开php

      搜索关键字"php7_module"(根据版本不同,数字也可能是php3456等),默认是被注释的,需要手动打开。

    #LoadModule php7_module libexec/apache2/libphp7.so -》默认是被注释的
    LoadModule php7_module libexec/apache2/libphp7.so
    
    • 设置本地资源文件的根目录

      一般在用户根目录 /Users/电脑名字 下创建文件夹 Sites 作为存放本地资源的根目录。(直接用 /Users/xxxx 根目录的原因:为了避免在Desktop、Documents等目录下出现的子文件夹需要逐级授权问题)

    然后在配置文件中搜索关键字 "DocumentRoot",将 DocumentRoot 与 Directory 后面的默认路径替换为上面的自定义路径。

    # DocumentRoot: The directory out of which you will serve your
    # documents. By default, all requests are taken from this directory, but
    # symbolic links and aliases may be used to point to other locations.
    #
    # /Library/WebServer/Documents -》 默认根目录
    # /Users/dengzemiao/Sites -》 自定义根目录
    DocumentRoot "/Users/dengzemiao/Sites"
    <Directory "/Users/dengzemiao/Sites">
        #
        # Possible values for the Options directive are "None", "All",
        # or any combination of:
        #   Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews
        #
        # Note that "MultiViews" must be named *explicitly* --- "Options All"
        # doesn't give it to you.
        #
        # The Options directive is both complicated and important.  Please see
        # http://httpd.apache.org/docs/2.4/mod/core.html#options
        # for more information.
        #
        Options Indexes FollowSymLinks Multiviews
        MultiviewsMatch Any
    
        #
        # AllowOverride controls what directives may be placed in .htaccess files.
        # It can be "All", "None", or any combination of the keywords:
        #   AllowOverride FileInfo AuthConfig Limit
        #
        AllowOverride None
    
        #
        # Controls who can get stuff from this server.
        #
        Require all granted
    </Directory>
    

    我在自定义目录里面创建一个自定义 index2.html(里面其他文件是我从默认路径那边拷贝过来的,这些都是没用的文件只是测试用一下):

    然后在启动 Apache 之后访问路径:http://127.0.0.1/index2.html

    注意了:以后开发写的php文件就是在这个 Sites 文件夹中进行创建文件或者项目开发,因为只有这里面你的php文件才会被执行成功,在其他地方则会显示源码不会被执行成功。

    • 保存配置文件

      Command + S,保存需要输入密码。

    • 备份 php.ini.default 文件
    cd /etc
    sudo cp php.ini.default php.ini
    
    • 启动Apache服务
    sudo apachectl -k start
    

    启动完成后,用浏览器访问 127.0.0.1,可以看到放置在本地资源根目录下的文件。

    IP(127.0.0.1)也可以换成你电脑的IP地址,这样在同一局域网的设备也可以访问服务器的内容。

    用完 Apache 要手动关闭,否则会一直占用内存。

    到这里为止 Apache 也就配置完成了!!!


    下面是一些 Apache 细节检测设置功能介绍,可选择性了解。

    • 检测配置文件是否有问题

    如果配置文件不小心改错或者写错东西

    <IfDefine SERVER_APP_HAS_DEFAULT_PORTS>
        Listen 8080
    </IfDefine>
    <IfDefine !SERVER_APP_HAS_DEFAULT_PORTS>
        Listen 80
    </IfDefine>
    
    不小心改成
    
    <IfDefine SERVER_APP_HAS_DEFAULT_PORTS>
        Listen 8080
    </IfDefine>
    <IfDefine !SERVER_APP_HAS_DEFAULT_PORTS>
        Listenss1 80
    </IfDefine>
    

    可以通过命令行

    sudo apachectl -t
    

    来检测配置文件是否有问题,上面改错之后会输出

    dengzemiaodeMacBook-Pro:etc dengzemiao$ sudo apachectl -t
    AH00526: Syntax error on line 56 of /private/etc/apache2/httpd.conf:
    Invalid command 'Listenss1', perhaps misspelled or defined by a module not included in the server configuration
    dengzemiaodeMacBook-Pro:etc dengzemiao$ 
    

    如果没有问题,则会输出:

    dengzemiaodeMacBook-Pro:etc dengzemiao$ sudo apachectl -t
    Syntax OK
    

    相关文章

      网友评论

        本文标题:PHP Apache - MAC

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