2025年2月13日 星期四 甲辰(龙)年 腊月十三 设为首页 加入收藏
rss
您当前的位置:首页 > 计算机 > 服务器 > Apache

(MAC)PHP Apache 安装与配置

时间:02-22来源:作者:点击数:24

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



基础命令
  • // 开启
  • sudo apachectl -k start
  • // 关闭
  • sudo apachectl -k stop
  • // 重启
  • sudo apachectl -k restart
  • // 开启
  • sudo apachectl start
  • // 关闭
  • sudo apachectl stop
  • // 重启
  • sudo apachectl restart
  • // mac hosts 文件目录
  • /private/etc/hosts
  • // 配置文件路径
  • /etc/apache2/httpd.conf
  • // 备份配置文件
  • sudo cp httpd.conf httpd.conf.backup
  • // 还原配置(其实就是用备份文件覆盖)
  • sudo cp httpd.conf.backup httpd.conf
  • // 虚拟机配置路径
  • /etc/apache2/extra/httpd-vhosts.conf
  • // php.ini 路径
  • /etc/php.ini
  • // 将 php.ini.default 拷贝为 php.ini
  • 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 textvscode文本编辑等编辑器打开/etc/apache2下的httpd.conf文件。
  • Windows上面是需要配置Apache路径的,Mac上则不需要这个步骤。
  • 插入Indexes字段,开发阶段使用,线上服务器则需要去掉
    Command+F搜索关键字"FollowSymLinks",在OptionsFollowSymLinks之间插入单词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根目录的原因:为了避免在DesktopDocuments等目录下出现的子文件夹需要逐级授权问题)

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

  • # 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文件,(MAC)PHP php.ini 配置文件
    • cd /etc
    • sudo cp php.ini.default php.ini

    (这一步好像可以不用配置,我忘了之前的操作了) 并在httpd.conf中添加配置:

    • // 只需要添加路径即可,不需要带文件名
    • PHPIniDir /private/etc
  • 启动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 - 多站点虚拟主机配置

方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门