Guide to Setup Apache, PHP and MySQL on MacOS with Homebrew

  sonic0002        2025-03-20 11:22:24       2,884        0          English  简体中文  繁体中文  ภาษาไทย  Tiếng Việt 

本指南旨在帮助在 MacOS 上使用 Homebrew 设置可用的 Apache, PHP 和 MySQL,以便在本地开发网站。还有其他可用的解决方案,例如 MAMP,它类似于 Windows 上的 WAMP。本指南的目的是让我们自己设置所有内容,并了解每个部分如何工作以及它们如何作为一个整体解决方案协同工作。

1. 使 Apache 正常工作

通常,MacOS 上会内置安装 Apache,可以直接使用。要查找 Apache,可以尝试运行以下命令。

brew services restart httpd

可以找到以下输出

Stopping `httpd`... (might take a while)
==> Successfully stopped `httpd` (label: homebrew.mxcl.httpd)
==> Successfully started `httpd` (label: homebrew.mxcl.httpd)

要确认它正在运行,可以发出以下命令

ps -ef | grep httpd

应该看到以下类似输出

  501 13800     1   0 11:43PM ??         0:01.71 /opt/homebrew/opt/httpd/bin/httpd -D FOREGROUND
  501 13805 13800   0 11:43PM ??         0:00.02 /opt/homebrew/opt/httpd/bin/httpd -D FOREGROUND
  501 13806 13800   0 11:43PM ??         0:00.01 /opt/homebrew/opt/httpd/bin/httpd -D FOREGROUND
  501 13807 13800   0 11:43PM ??         0:00.01 /opt/homebrew/opt/httpd/bin/httpd -D FOREGROUND
  501 13808 13800   0 11:43PM ??         0:00.02 /opt/homebrew/opt/httpd/bin/httpd -D FOREGROUND
  501 13809 13800   0 11:43PM ??         0:00.01 /opt/homebrew/opt/httpd/bin/httpd -D FOREGROUND
  501 13818 13800   0 11:43PM ??         0:00.05 /opt/homebrew/opt/httpd/bin/httpd -D FOREGROUND
  501 13820 13800   0 11:43PM ??         0:00.12 /opt/homebrew/opt/httpd/bin/httpd -D FOREGROUND
  501 13821 13800   0 11:43PM ??         0:00.01 /opt/homebrew/opt/httpd/bin/httpd -D FOREGROUND
  501 26586 11613   0  9:52AM ttys018    0:00.01 grep httpd

如果 httpd 正在运行,您应该看到几个进程正在显示。

接下来,我们需要找到配置文件的位置,以便稍后对其进行更改以使用 PHP。运行以下命令。

httpd -V | grep SERVER_CONFIG_FILE

输出应该会告诉您位置。

pike6@MacBook-Pro www % httpd -V | grep SERVER_CONFIG_FILE
 -D SERVER_CONFIG_FILE="/opt/homebrew/etc/httpd/httpd.conf"

在这种情况下,它位于/opt/homebrew/etc/httpd/httpd.conf

2. 安装 PHP

在本指南中,我们将使用 PHP 8.3,要安装 PHP,可以运行以下命令

brew install [email protected]

这将在您的机器上安装 PHP 8.3,安装完成后,可以运行以下命令将 php 命令添加到 PATH。

echo 'export PATH="/opt/homebrew/opt/[email protected]/bin:$PATH"' >> ~/.zshrc  
echo 'export PATH="/opt/homebrew/opt/[email protected]/sbin:$PATH"' >> ~/.zshrc

接下来运行 source 命令以使更改生效。

source ~/.zshrc

验证 php 版本是否为 8.3

php --version

输出

PHP 8.3.17 (cli) (built: Feb 11 2025 22:03:03) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.3.17, Copyright (c) Zend Technologies
    with Zend OPcache v8.3.17, Copyright (c), by Zend Technologies

3. 安装 MySQL

安装 MySQL 的命令非常简单,

brew install mysql

安装完成后,可以运行以下命令来启动 mysql 服务。

brew services start mysql

要访问数据库,请发出以下命令

mysql -u root -p

当提示输入密码时,只需键入 ENTER,您应该能够登录到 mysql shell。

如果您想保护您的 mysql 访问,可以安装以下内容来设置 root 密码(建议步骤,但对于本地环境不是必需的)。

mysql_secure_installation

4. 更新 Apache 配置

如果我们想让 Apache, PHP 和 MySQL 协同工作,我们需要对步骤 1 中的 http 配置进行更改。以下更改需要添加到/opt/homebrew/etc/httpd/httpd.conf

  • 添加以下行以启用 php 模块
    LoadModule php_module /opt/homebrew/opt/[email protected]/lib/httpd/modules/libphp.so​
  • 将 DocumentRoot 和 Directory 更新为您的网站的根目录
    DocumentRoot "/Users/pike6/work/project/website/www"
    <Directory "/Users/pike6/work/project/website/www">
       AllowOverride All
       Require all granted
    </Directory​

    • (可选)如果您想在本地设置多个网站,您可能需要启用虚拟主机。这可以通过取消注释来完成
      Include /opt/homebrew/etc/httpd/extra/httpd-vhosts.conf​
    • 然后编辑/opt/homebrew/etc/httpd/extra/httpd-vhosts.conf,根据您的需要添加一些条目,如下所示。
      <VirtualHost *:80>
          ServerAdmin [email protected]
          DocumentRoot "/Users/pike6/work/project/website/www"
          ServerName website1.localhost
          ErrorLog "/opt/homebrew/var/log/httpd/www-error.log"
          CustomLog "/opt/homebrew/var/log/httpd/www-access.log" common
      </VirtualHost>
      
      <VirtualHost *:80>
          ServerAdmin [email protected]
          DocumentRoot "/Users/pike6/work/project/website/website2"
          ServerName website2.localhost
          ErrorLog "/opt/homebrew/var/log/httpd/website2-error.log"
          CustomLog "/opt/homebrew/var/log/httpd/website2-access.log" common
      </VirtualHost>​
    • 编辑 /etc/hosts,添加以下地址映射,以便将上面的新 ServerName 映射到 127.0.0.1
      127.0.0.1       website1.localhost
      127.0.0.1       website2.localhost​
    • /opt/homebrew/etc/httpd/httpd.conf中,为每个新网站添加以下内容。
      <Directory "/Users/pike6/work/project/website/website1">
          AllowOverride All
          Require all granted
      </Directory>
      
      <Directory "/Users/pike6/work/project/website/website2">
          AllowOverride All
          Require all granted
      </Directory>​
  • 根据您的需要,您可能需要取消注释以下内容,因为您可能在您的 .htaccess 中启用了一些重写引擎。
    LoadModule rewrite_module lib/httpd/modules/mod_rewrite.so​

现在,通过以上步骤,重新启动 httpd 服务并使用 website1.locahost 访问您的站点。它应该可以工作。

奖励 1

如果您还想要 phpMyAdmin,可以运行以下命令

brew install phpmyadmin

安装后,将以下内容添加到 httpd conf /opt/homebrew/etc/httpd/httpd.conf

Alias /phpmyadmin /opt/homebrew/share/phpmyadmin
<Directory /opt/homebrew/share/phpmyadmin/>
    Options Indexes FollowSymLinks MultiViews
    AllowOverride All
    <IfModule mod_authz_core.c>
        Require all granted
    </IfModule>
    <IfModule !mod_authz_core.c>
        Order allow,deny
        Allow from all
    </IfModule>
</Directory>

重新启动 httpd 服务

brew services restart httpd

奖励 2

如果您在启动 httpd 服务后发现您的站点无法工作,您可以首先检查该服务是否已启动并在您指定的端口上侦听。

lsof -i :80

如果端口未侦听,则表示该服务未成功启动。您可以检查是否已授予正确的用户权限或 httpd 所有权。例如,您可以检查 /opt/homebrew/opt/httpd/bin/httpd 的所有者,如果它不是您的用户名,您可能无法仅使用 brew 启动它,您可能需要 sudo brew。或者,如果只有您拥有该机器,您可以将所有者更改为您的用户名。

PHP  APACHE  MYSQL  PHPMYADMIN  GUIDE  MACOS  HTTPD  MULTIPLE WEBSITES 

           

  RELATED


  0 COMMENT


No comment for this article.



  PROGRAMMER HUMOR

No functional testing, only unit testing


  SUPPORT US