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

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

Hướng dẫn này nhằm thiết lập một môi trường Apache, PHP và MySQL có thể hoạt động trên MacOS với Homebrew để hỗ trợ phát triển website cục bộ. Có những giải pháp khác như MAMP tương tự như WAMP trên Windows, hướng dẫn này phục vụ mục đích tự thiết lập mọi thứ và hiểu cách từng phần hoạt động và cách chúng phối hợp với nhau như một giải pháp hoàn chỉnh.

1. Làm cho Apache hoạt động

Thông thường trên MacOS, Apache đã được cài đặt sẵn và có thể sử dụng. Để tìm Apache, bạn có thể thử chạy lệnh bên dưới.

brew services restart httpd

Bạn có thể thấy kết quả như sau

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

Để xác nhận nó đang chạy, bạn có thể thực hiện lệnh bên dưới

ps -ef | grep httpd

Bạn sẽ thấy kết quả tương tự như bên dưới

  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

Nếu httpd đang chạy, bạn sẽ thấy một vài tiến trình đang hiển thị. 

Tiếp theo, chúng ta cần tìm vị trí của cấu hình để sau này có thể thay đổi nó để sử dụng PHP. Chạy lệnh bên dưới.

httpd -V | grep SERVER_CONFIG_FILE

Kết quả đầu ra sẽ cho biết vị trí.

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

Trong trường hợp này, nó nằm ở /opt/homebrew/etc/httpd/httpd.conf

2. Cài đặt PHP

Trong hướng dẫn này, chúng ta sẽ sử dụng PHP 8.3, để cài đặt PHP, bạn có thể chạy lệnh bên dưới

brew install [email protected]

Lệnh này sẽ cài đặt PHP 8.3 trên máy của bạn, sau khi cài đặt xong, bạn có thể chạy lệnh bên dưới để thêm lệnh php vào PATH.

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

Tiếp theo, chạy lệnh source để thay đổi có hiệu lực.

source ~/.zshrc

Xác minh phiên bản php là 8.3

php --version

Kết quả

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. Cài đặt MySQL

Lệnh để cài đặt MySQL khá đơn giản, 

brew install mysql

Sau khi cài đặt, bạn có thể chạy lệnh bên dưới để khởi động dịch vụ mysql.

brew services start mysql

Để truy cập vào cơ sở dữ liệu, hãy thực hiện lệnh bên dưới

mysql -u root -p

Khi được hỏi mật khẩu, chỉ cần gõ ENTER, bạn sẽ có thể đăng nhập vào mysql shell. 

Nếu bạn muốn bảo mật quyền truy cập mysql của mình, bạn có thể cài đặt lệnh bên dưới để đặt mật khẩu root (bước được khuyến nghị nhưng không cần thiết cho môi trường cục bộ).

mysql_secure_installation

4. Cập nhật cấu hình Apache

Nếu chúng ta muốn Apache, PHP và MySQL hoạt động cùng nhau, chúng ta cần thực hiện các thay đổi đối với cấu hình http trong Bước 1. Các thay đổi bên dưới là cần thiết cho /opt/homebrew/etc/httpd/httpd.conf.

  • Thêm dòng bên dưới để bật module php
    LoadModule php_module /opt/homebrew/opt/[email protected]/lib/httpd/modules/libphp.so​
  • Cập nhật DocumentRoot và Directory thành thư mục gốc của trang web của bạn
    DocumentRoot "/Users/pike6/work/project/website/www"
    <Directory "/Users/pike6/work/project/website/www">
       AllowOverride All
       Require all granted
    </Directory​

    • (Tùy chọn) Nếu bạn muốn thiết lập nhiều hơn một trang web trên máy cục bộ của mình, bạn có thể cần bật virtual hosts. Điều này có thể được thực hiện bằng cách bỏ ghi chú
      Include /opt/homebrew/etc/httpd/extra/httpd-vhosts.conf​
    • Sau đó chỉnh sửa /opt/homebrew/etc/httpd/extra/httpd-vhosts.conf, thêm một số mục như bên dưới tùy thuộc vào nhu cầu của bạn.
      <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>​
    • Chỉnh sửa /etc/hosts, thêm ánh xạ địa chỉ bên dưới để ServerName mới ở trên có thể được ánh xạ tới 127.0.0.1
      127.0.0.1       website1.localhost
      127.0.0.1       website2.localhost​
    • Trong /opt/homebrew/etc/httpd/httpd.conf, thêm đoạn mã bên dưới cho mỗi trang web mới.
      <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>​
  • Tùy thuộc vào nhu cầu của bạn, bạn có thể cần bỏ ghi chú bên dưới vì bạn có thể có một số rewrite engine được bật trong .htaccess của bạn.
    LoadModule rewrite_module lib/httpd/modules/mod_rewrite.so​

Bây giờ với các bước trên, hãy khởi động lại dịch vụ httpd và truy cập trang web của bạn bằng website1.locahost. Nó sẽ hoạt động.

Bonus 1

Nếu bạn cũng muốn phpMyAdmin, bạn có thể chạy lệnh bên dưới 

brew install phpmyadmin

Sau khi cài đặt, hãy thêm đoạn mã bên dưới vào 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>

Khởi động lại dịch vụ httpd

brew services restart httpd

Bonus 2

Nếu bạn không thấy trang web của mình hoạt động sau khi khởi động dịch vụ httpd, bạn có thể kiểm tra trước xem dịch vụ có khởi động và lắng nghe ở cổng bạn đã chỉ định hay không. 

lsof -i :80

Nếu cổng không lắng nghe, điều đó có nghĩa là dịch vụ chưa được khởi động thành công. Bạn có thể kiểm tra xem quyền người dùng hoặc quyền sở hữu httpd có chính xác hay không. Ví dụ: bạn có thể kiểm tra chủ sở hữu của /opt/homebrew/opt/httpd/bin/httpd, nếu đó không phải là tên người dùng của bạn, bạn có thể không thể khởi động nó chỉ bằng cách sử dụng brew, bạn có thể cần sudo brew. Hoặc bạn có thể thay đổi chủ sở hữu thành tên người dùng của bạn nếu chỉ bạn sở hữu máy.

PHP  APACHE  MYSQL  PHPMYADMIN  GUIDE  MACOS  HTTPD  MULTIPLE WEBSITES 

           

  RELATED


  0 COMMENT


No comment for this article.



  PROGRAMMER HUMOR

Programmer and product manager


  SUPPORT US