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

  sonic0002        2025-03-20 11:22:24       2,882        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訪問您的網站。它應該可以工作。

Bonus 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

Bonus 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

Choosing an OS


  SUPPORT US