安裝 macOS + Nginx + PHP + MariaDB 環境
網頁開發在 macOS 作業系統中架設 PHP 開發環境,通常會使用 Homebrew 進行安裝。 Homebrew 是一款開源的套件管理工具,能夠讓你在 macOS 上更加輕鬆地安裝軟體套件,從而提高你的工作效率。 Homebrew 提供了一個方便的方式來管理你的軟體套件,使你可以輕鬆地安裝、更新和移除套件,有點類似 Ubuntu 中的 apt 指令。 本文將使用 Homebrew 工具安裝 Nginx、PHP 及 MariaDB,這是我自己常用的組合,在安裝上有問題的話,都歡迎留言討論。
安裝 Homebrew
以下連結為 Homebrew 官方網站,提供參考:
Homebrew 安裝方法非常簡單,只要在終端機執行以下指令即可。
# 安裝 Homebrew
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
# 移除 Homebrew
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/uninstall.sh)"
Homebrew 常用指令
指令 | 說明 |
---|---|
brew home | 訪問 Homebrew 官方網站 |
brew help | 指令說明 |
brew doctor | 檢查 Homebrew 狀態 |
brew update | 更新 Homebrew |
brew list | 查詢目前已安裝套件 |
brew search [套件名稱] | 查詢套件 |
brew info [套件名稱] | 查詢套件資訊 |
brew install [套件名稱] | 安裝套件 |
brew uninstall [套件名稱] | 移除套件 |
brew upgrade [套件名稱] | 更新套件 |
brew options [套件名稱] | 查詢套件安裝選項 |
brew link [套件名稱] | 將套件捷徑連結至特定版本 (用於切換版本) |
brew unlink [套件名稱] | 移除套件捷徑 |
brew tap [user/repo] | 安裝第三方來源 |
brew untap [user/repo] | 移除第三方來源 |
brew services list | 查看所有透過 Homebrew 安裝的服務 |
brew services start [套件名稱] | 啟動套件服務,並開啟開機自動啟動服務。 |
brew services stop [套件名稱] | 停止套件服務,並關閉開機自動啟動服務。 |
brew services restart [套件名稱] | 重啟套件服務 |
安裝 Nginx
-
STEP 1
打開終端機,並執行以下指令安裝 Nginx。
# 安裝 Nginx brew install nginx
-
STEP 2
修改 Nginx 設定檔,開啟 /opt/homebrew/etc/nginx/nginx.conf 設定檔,參考以下內容進行修改。
# 開啟 php.ini vim /opt/homebrew/etc/nginx/nginx.conf
#user nobody; worker_processes 1; # Log 檔預設儲存目錄為 /opt/homebrew/Cellar/nginx/[版號]/logs/ # 我習慣的儲存目錄為 /opt/homebrew/var/log/nginx/ error_log /opt/homebrew/var/log/nginx/error.log; #error_log /opt/homebrew/var/log/nginx/error.log notice; #error_log /opt/homebrew/var/log/nginx/error.log info; #pid logs/nginx.pid; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; access_log /opt/homebrew/var/log/nginx/access.log main; sendfile on; #tcp_nopush on; #keepalive_timeout 0; keepalive_timeout 65; #gzip on; server { listen 80; # 預設為 8080,改為 80 server_name localhost; root /var/www/html; # 網頁預設目錄 charset utf-8; location / { index index.php index.html index.htm; } } include servers/*; }
# 字號開頭的為註解,沒有任何作用。
-
STEP 3
啟動 Nginx 服務,並設定開機自動啟動。
# 啟動前,檢查一下設定檔 nginx -t # 啟動 Nginx 服務 # 這個指令會自動開啟開機自動啟動 brew services start nginx # 關閉 Nginx 服務 # 這個指令會自動關閉開機自動啟動 brew services stop nginx
-
STEP 4
啟動服務後,打開瀏覽器,網址輸入 http://localhost,如果設定無誤並正確啟動的話,就能看到以下畫面,即表示 Nginx 安裝完成。
安裝 PHP
-
STEP 1
打開終端機,並執行以下指令安裝 PHP。
# 安裝 PHP brew install php # 啟動 PHP-FPM 服務 # 這個指令會自動開啟開機自動啟動 brew services start php # 關閉 PHP-FPM 服務 # 這個指令會自動關閉開機自動啟動 brew services stop php
-
STEP 2
開啟 /opt/homebrew/etc/php/8.2/php.ini 設定檔,修改 display_errors 及 date.timezone 兩個參數,其他設定都先使用預設值即可,後續會再另外一篇文章詳細說明。
# 開啟 php.ini vim /opt/homebrew/etc/php/8.2/php.ini
; 預設應該就是 On,確認一下即可。 display_errors = On ; 記得把前面的分號(;)移除,分號表示註解。 date.timezone = Asia/Taipei
-
STEP 3
修改 Nginx 設定檔,讓 Nginx 將 HTTP 請求轉發給 PHP FPM 處理。 開啟 /opt/homebrew/etc/nginx/nginx.conf 設定檔,參考以下內容進行修改。
# 開啟 nginx.conf vim /opt/homebrew/etc/nginx/nginx.conf
... (省略) ... http { ... (省略) ... upstream php_fpm { server 127.0.0.1:9000; } server { listen 80; server_name localhost; root /var/www/html; charset utf-8; location / { index index.php index.html index.htm; } location ~ \.php$ { include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param SERVER_SOFTWARE nginx; fastcgi_index index.php; fastcgi_pass php_fpm; fastcgi_connect_timeout 600; fastcgi_read_timeout 600; fastcgi_send_timeout 600; } } include servers/*; }
-
STEP 4
重啟 PHP-FPM 及 Nginx 服務。
# 重啟 PHP-FPM 服務 brew services restart php # 重啟 Nginx 服務 brew services restart nginx
-
STEP 5
接下來撰寫一個簡單的 PHP 程式測試。使用 vim 建立檔案,輸入以下程式碼,並使用檔名 index.php 存檔,最後將檔案放到 /var/www/html 目錄底下。
<?php phpinfo();
-
STEP 6
打開瀏覽器,網址輸入 http://localhost/,如果設定無誤並正確啟動的話,就能看到以下畫面,即表示 PHP 及 Nginx 都安裝完成,並且設定無誤。
安裝多版本 PHP 環境
如果您要在同一台電腦,安裝多個版本的 PHP 環境,可以參考以下流程進行安裝。
# 安裝 PHP
brew install php
brew install php@8.1
brew install php@8.0
brew install php@7.4
# 啟動 PHP-FPM 服務,並設定開機自動啟動
# 您可以同時啟動不同版本的 PHP-FPM,但必需使用不同的 Port
brew services start php
brew services start php@8.1
brew services start php@8.0
brew services start php@7.4
此時,在終端機的 PHP 指令為最新版本,如果要切換不同版本,可以透過以下指令切換。
# 目前版本為 PHP 8.2.1
php -v
PHP 8.2.1 (cli) (built: Jan 12 2023 15:19:18) (NTS)
... (省略) ...
# 切換版本
brew unlink php
brew link --overwrite --force php@8.1
# 切換後版本為 PHP 8.1.14
php -v
PHP 8.1.14 (cli) (built: Jan 12 2023 15:54:07) (NTS)
... (省略) ...
安裝 MariaDB
-
STEP 1
打開終端機,並執行以下指令安裝 MariaDB。
# 安裝 MariaDB brew install mariadb
-
STEP 2
啟動 MariaDB 服務,並設定開機自動啟動。
# 啟動 MariaDB # 這個指令會自動開啟開機自動啟動 brew services start mariadb # 關閉 MariaDB # 這個指令會自動關閉開機自動啟動 brew services stop mariadb
-
STEP 3
初始化資料庫。
cd /opt/homebrew/Cellar/mariadb/10.11.2/bin ./mysql_secure_installation
初始化 MariaDB 會詢問幾個問題,如下:
- Enter current password for root (enter for none)
- 輸入 root 密碼,預設 MariaDB 沒有密碼,直接按 enter 就好了。
- Switch to unix_socket authentication [Y/n]
- 切換到 unix_socket 身份驗證,這是在 10.4.3 版新增的身份驗證方式,沒有強制使用,輸入 n。
- Change the root password? [Y/n]
- 修改資料庫 root 帳號密碼,輸入 y。
- New password
- 輸入要設定的 root 帳號密碼。
- Re-enter new password
- 再輸入一次輸入要設定的 root 帳號密碼。
- Remove anonymous users? [Y/n]
- 移除匿名帳號,輸入 y。
- Disallow root login remotely? [Y/n]
- 不允許遠端使用 root 帳號登入,這邊我是輸入 n,不過考量安全性應該要輸入 y。
- Remove test database and access to it? [Y/n]
- 移除測試資料庫與帳號,輸入 y。
- Reload privilege tables now? [Y/n]
- 重新載入權限設定,輸入 y。
-
STEP 4
最後,測試登入資料庫,如果登入成功,表示資料庫已經安裝完成了。
mysql -u root -p Enter password: <輸入剛剛設定的密碼> Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 33 Server version: 10.11.2-MariaDB Homebrew Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. MariaDB [(none)]>
常用目錄及檔案
Homebrew
- /opt/homebrew/Cellar/
- Homebrew 套件實際安裝目錄。
- /opt/homebrew/bin/
- Homebrew 套件執行檔捷徑目錄,會連結到 /opt/homebrew/Cellar 目錄中的執行檔。
- /opt/homebrew/etc/
- Homebrew 套件設定檔目錄。
Nginx
- /opt/homebrew/etc/nginx/nginx.conf
- Nginx 設定檔。
- /opt/homebrew/var/log/nginx/access.log
- 存取紀錄 Log 檔,如果有使用者連入您的網站,這邊都會有紀錄。
- /opt/homebrew/var/log/nginx/error.log
- 錯誤紀錄 Log 檔,網頁伺服器產生的錯誤訊息。
- /var/www/html/
- 預設的網頁存放路徑,未來您寫的 HTML、CSS、JavaScript、PHP... 都放在這裡。
PHP
- /opt/homebrew/etc/php/[版號]/php.ini
- PHP 設定檔。
- /opt/homebrew/etc/php/[版號]/php-fpm.d/www.conf
- PHP-FPM 設定檔。
MariaDB
- /opt/homebrew/etc/my.cnf
- 資料庫設定檔。
0 則留言