在Mac下使用homebrew安裝apache+nginx+多個版本PHP切換
1 .安裝brew
Homebrew的安裝很簡單,只需在終端下輸入如下指令:
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
Homebrew安裝成功後,會自動建立目錄 /usr/local/Cellar 來存放Homebrew安裝的程式。 這時你在命令列狀態下面就可以使用 brew 命令了.
注意:如果在安裝過程中返回400,可以在幾分鐘後嘗試重新安裝。
1.1 新增第三方倉庫
我們將需要使用一些來自第三方倉庫的軟體,所以需要新增額外的倉庫:
$ brew tap homebrew/dupes
$ brew tap homebrew/versions
$ brew tap homebrew/php
$ brew tap homebrew/apache
然後更新 brew:
$ brew update
2 .apache
安裝apache
最新的 macOS 10.12 預裝了 Apache 2.4,但蘋果移除了一些必要的指令碼,所以 Apache 和 Homebrew 配合使用將會變得困難。當然解決該問題的方法就是,使用 Homebrew 重新安裝配置 Apache。 如果之前已經安裝有 Apache 並且在執行中,首先就需要關閉它,然後移除自動載入指令碼。下面的命令沒有任何副作用,只管執行就好了:
$ sudo apachectl stop
$ sudo launchctl unload -w /System/Library/LaunchDaemons/org.apache.httpd.plist 2>/dev/null
$ brew install httpd24 --with-privileged-ports --with-http2
接下來需要等待一小會兒,因為這個命令是下載原始碼並編譯安裝 Apache。上面命令執行結果如下面這樣:
/usr/local/Cellar/httpd24/2.4.23_2: 212 files, 4.4M, built in 1 minute 45seconds
這裡的路徑很重要,因為在接下來的步驟中,我們都需要使用這個路徑,在這個例子中,路徑是 /usr/local/Cellar/httpd24/2.4.23_2/,如果你的路徑不是這個,則在執行下面的命令的時候,將其替換為你的路徑就可以了:
sudo cp -v /usr/local/Cellar/httpd24/2.4.23_2/homebrew.mxcl.httpd24.plist /Library/LaunchDaemons
sudo chown -v root:wheel /Library/LaunchDaemons/homebrew.mxcl.httpd24.plist
sudo chmod -v 644 /Library/LaunchDaemons/homebrew.mxcl.httpd24.plist
sudo launchctl load /Library/LaunchDaemons/homebrew.mxcl.httpd24.plist
現在我們就通過 Homebrew 安裝上了 Apache,並使用管理員許可權將其配置為自動啟動。這個時候 Apache 應該已經在運行了,所以你開啟瀏覽器訪問 localhost 將會看到 “It works!”。
如果你的瀏覽器提示說不能建立連線到伺服器,那麼首先檢查一下 Apache 服務是否已經啟動了:
$ ps -aef | grep httpd
如果 Apache 正在執行,你將會看到一些 httpd 程序。
重啟 Apache:
$ sudo apachectl -k restart
如果上面這些步驟都沒有解決問題,那麼確定你的 Apache 是否監聽了 80 埠,即 /usr/local/etc/apache2/2.4/httpd.conf 配置檔案是否有 Listen: 80,或者 Listen: 後面是其他埠。
Apache 是通過 apachectl 來進行控制的,它的基本使用方法如下:
$ sudo apachectl start
$ sudo apachectl stop
$ sudo apachectl -k restart
apache的配置
現在我們已經有了一個 Web 伺服器,接下來我們需要對其進行一些配置,以便於更方便我們本地的開發。
首先修改 Apache 的 document root,這是 Web 服務的根目錄,Apache 會從這個目錄中尋找資原始檔。預設的 document root 是 /Library/WebServer/Documents。作為一個開發環境,我們可能更希望網站的根目錄(即 Web 服務的根目錄)在我們自己的使用者主目錄下。所以接下來修改配置。
我們可以在終端通過 open -e 命令使用 Mac 預設的文字編輯器開啟一個檔案:
$ open -e /usr/local/etc/apache2/2.4/httpd.conf
搜尋 DocumentRoot,然後你會看到下面這行:
DocumentRoot "/usr/local/var/www/htdocs"
將這行配置改為自己的使用者主目錄中的目錄,把 your_user 改為你的使用者名稱:
DocumentRoot /Users/your_user/sites
緊接著還要將上面這行程式碼下面的 也改為你的新的 document root:
<Directory /Users/your_user/sites>
在 程式碼塊裡面,我們還需要將 AllowOverride 改為下面的樣子:
# 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 All
接下來通過取消註釋使用 mod_rewrite 模組:
LoadModule rewrite_module libexec/mod_rewrite.so
然後重啟 Apache 使配置生效:
$ sudo apachectl -k restart
再訪問 http://localhost 就會顯示 index.html 裡面的內容。如果你的配置也生效了,我們就可以繼續下一步了。
3. nginx
安裝nginx
可以用brew很方便地安裝nginx
sudo brew install nginx
啟動nginx服務
sudo brew services start nginx
安裝完以後,可以在終端輸出的資訊裡看到一些配置路徑:
/usr/local/etc/nginx/nginx.conf (配置檔案路徑)
/usr/local/var/www (伺服器預設路徑)
/usr/local/Cellar/nginx/1.6.2 (貌似是安裝路徑)
利用http://localhost:8080進行訪問, 如果出現welcome,說明啟動成功.

檢視nginx版本
nginx -v
關閉nginx服務
sudo brew services stop nginx
另外幾個比較方便的指令
重新載入
nginx
nginx -s reload
停止nginx
nginx -s stop
修改 php-fpm 檔案
1.執行命令:
sudo cp /private/etc/php-fpm.conf.default /private/etc/php-fpm.conf
2.找到目錄下的 php-fpm 檔案
/private/etc/php-fpm.conf
3.找到32行的 error_log ,改為(正行替換,注意 ‘;’ 和空格):
error_log = /usr/local/var/log/php-fpm.log
否則 php-fpm 時會報錯:
ERROR: failed to open error_log (/usr/var/log/php-fpm.log): No such file or directory (2)
修改 Nginx 配置
1.開啟 nginx.config 檔案
/usr/local/etc/nginx/nginx.conf
2.找到 server 的 location 配置,給 index 加一個 index.php
location / {
root html;
index index.html index.htm index.php;
}
3.並開啟 server 下被註釋的 location ~.php$(即刪除程式碼前面的 ‘#’),如下:
location ~ \.php$ {
root html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
include fastcgi_params;
}
4.並修改 fastcgi_param 引數
fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
改為
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
5.建立 index.php
在 /usr/local/var/www 目錄下,刪除 index.html,建立 index.php,輸入
<?php phpinfo(); ?>
啟動相關服務
sudo nginx
sudo php-fpm
然後訪問localhost:8080,看到 php 配置資訊,就說明 ok 了
其他命令
修改 nginx.conf 後,過載配置檔案
sudo nginx -s reload
停止 nginx 伺服器
sudo nginx -s stop
4.安裝PHP
先安裝php7
brew install php70 --with-fpm
加上–with-fpm來編譯php
安裝完成後,加入全域性變數
vim ~/.bash_profile
新增
export PATH=/usr/local/bin:/usr/sbin:$PATH
然後
vim ~/.bashrc
新增
export PATH = "$(brew --prefix homebrew/php/php70)/bin:$PATH"
最後
sourc ~/.bash_profile source ~/.bashrc
安裝php5.6.18
brew install php56 --with-fpm
vim ~/.bashrc
修改
export PATH = "$(brew --prefix homebrew/php/php70)/bin:$PATH" 為export PATH = "$(brew --prefix homebrew/php/php70)/bin:$(brew --prefix homebrew/php/php56)/bin$PATH";
5. 安裝php-version php版本切換公具
brew install php-version
安裝完成後
vim ~/.bashrc
新增
source $(brew --prefix php-version)/php-version.sh && php-version 7
sourc .bashrc
後,啟動php-version:
source $(brew --prefix php-version)/php-version.sh && php-version 5
後面的 &&php-version是你想預設開啟的php版本。自己選一個就行
命令列輸入
php-version
就可以看到在你電腦中的所有php版本,你想用哪個就php-version 5.6.18 或 php-version7.0.2來切換版本
切換後重啟php-fpm生效
sudo killall php-fpm
sudo php-fpm