1. 程式人生 > >在Mac下使用homebrew安裝apache+nginx+多個版本PHP切換

在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