天天看點

mac brew apache php7,認識Homebrew以及在Mac上同時安裝PHP5及PHP7

Homebrew幾乎是Mac上必備的軟體,用于下載下傳安裝和管理其他軟體。尤其對于程式員,講真,本人到現在仍然不知道在Mac上如何不借助Homebrew來搭建php-apache-mysql開發環境。

認識Homebrew

Homebrew是一個開源項目,據說它的作者曾經去谷歌面試,因無法在白闆上手撕反轉二叉樹被拒了,一段趣聞:-)。這個開源項目的gihub位址是:https://github.com/Homebrew/。今天是2020-03-15,目前的版本,它的組成部分有:brew,core,cask,services。其中brew、core、cask收容了各種各樣的軟體,services則主要用于管理背景服務的開啟和關閉,類似于Centos的service指令。

安裝和修改源

安裝Homebrew的方法很簡單,在homebrew首頁裡可以一眼看到。如下:

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"

安裝好了之後,它通常存放在/usr/local/Homebrew,如果不是,那麼可以通過指令echo $(brew --repo)檢視。cd到這個目錄下,會發現這其實是一個git本地倉庫,是以,每當我們執行brew update的時候,它會通過git從github.com上拉取更新。是以,在國内大陸這個更新操作會很慢。是以,我們第一步就是要把源替換成國内的鏡像,比較有名的是中科大和清華的。針對前面提到的四個組成部分,國内有鏡像源的隻有brew、core、cask。下面以清華的鏡像為例。

# 檢視目前源的辦法

git -C "$(brew --repo)" remote -v

git -C "$(brew --repo homebrew/core)" remote -v

git -C "$(brew --repo homebrew/cask)" remote -v

# 更換成清華的源

git -C "$(brew --repo)" remote set-url origin https://mirrors.tuna.tsinghua.edu.cn/git/homebrew/brew.git

git -C "$(brew --repo homebrew/core)" remote set-url origin https://mirrors.tuna.tsinghua.edu.cn/git/homebrew/homebrew-core.git

git -C "$(brew --repo homebrew/cask)" remote set-url origin https://mirrors.tuna.tsinghua.edu.cn/git/homebrew/homebrew-cask.git

# 如果想要複原預設的源,則相類似的做法,将url設成github上對應的連結即可

git -C "$(brew --repo homebrew/core)" remote set-url origin https://github.com/Homebrew/homebrew-core.git

git -C "$(brew --repo homebrew/core)" remote set-url origin https://github.com/Homebrew/homebrew-core.git

git -C "$(brew --repo homebrew/cask)" remote set-url origin https://github.com/Homebrew/homebrew-cask.git

改好後,執行brew update --verbose可以看到很快就能完成更新。

另外還有一個比較特殊的東西叫Homebrew-bottles,它是Home-brew的二進制預編譯包,比如你想安裝php,那麼brew會從bottles裡拉取php及其各種依賴包到本地安裝。是以,要想使用brew安裝其他軟體時比較快速,我們還需要設定bottles的國内鏡像源,如下:

# 如果你使用的是zsh,那麼可以把 .bash_profile 改成 .zshrc

echo 'export HOMEBREW_BOTTLE_DOMAIN=https://mirrors.tuna.tsinghua.edu.cn/homebrew-bottles' >> ~/.bash_profile

source ~/.bash_profile

brew tap

除了基本庫brew以外,Homebrew通過tap指令來管理其他庫,包括core和cask。同時,我們還可以添加其他第三方的庫。涉及到以下幾個指令:

brew tap # 檢視目前已有的tap庫

brew tap --help # 檢視幫助文檔

brew tap user/repo # 添加user/repo庫

brew untap user/repo # 删除user/repo庫

其他常用指令

brew --help # 檢視幫助文檔

brew search [TEXT|/REGEX/] # 搜尋軟體

brew install FORMULA... # 安裝軟體

brew info [FORMULA...] # 獲得軟體的資訊

brew uninstall FORMULA... # 解除安裝軟體

brew doctor # 診斷目前環境有沒有問題

brew services list # 檢視目前服務的狀态,比如檢視httpd、redis、memcached之類,前提這些服務是由brew安裝的

brew services run (formula|--all) # 啟動服務,但不設定開機自啟動

brew services start (formula|--all) # 啟動服務,并且設定開機自啟動

brew services stop (formula|--all) # 關閉服務,并且設定開機不自啟動

brew services --help # 獲得幫助文檔

安裝和管理其他軟體

Homebrew安裝軟體,涉及到四個目錄:/usr/local/Cellar/,/usr/local/opt/,/usr/local/etc/和/usr/local/bin/。

/usr/local/Cellar/:存放安裝的軟體包。

/usr/local/opt/:存放各個軟體的軟鍊。在../Cellar/裡的軟體包目錄裡,可能還有一層是該軟體的版本号,你肯定不希望其他地方引用這個軟體的時候要寫死版本号吧,否則當這個軟體更新版本号後,還不得去改所有關聯的配置?這個地方一般情況下,homebrew會自動建立合适的軟鍊,如果沒有,那麼你也可以自己動手建立,指令是:ln -s 。

/usr/local/etc/:存放各個軟體的配置檔案。

/usr/local/bin/:存放各個軟體的可執行檔案外鍊的地方。貌似homebrew并不會在這裡自動建立外鍊,是以需要自己動手建立,指令同上。然後為了能在任意地方執行這裡的檔案,需要把這個路徑寫入環境變量:

# 如果你使用的是zsh,那麼可以把 .bash_profile 改成 .zshrc

echo 'export PATH="/usr/local/bin:$PATH"' >> ~/.bash_profile

source ~/.bash_profile

對以上的目錄明了後,其實可以做一些triky的事情,比如,某個軟體的某個版本在很久以前安裝了,但後來換電腦,發現這個版本已經被homebrew移除,沒辦法通過brew重新下載下傳安裝,那麼我們就可以從舊電腦的這些目錄裡,把軟體包和相關的依賴,都拷貝到新電腦,倒騰倒騰,就可以在新電腦上使用這個軟體的舊版本啦。

在Mac上同時安裝PHP5和PHP7

安裝PHP7

通過brew search php發現官方庫裡收錄的版本有[email protected]和[email protected]。

直接安裝php7.2:brew install [email protected]。

安裝PHP5

增加一個庫exolnet/deprecated,此庫是熱心人士将Homebrew廢棄的軟體版本儲存下來的。

brew tap exolnet/homebrew-deprecated

再來搜尋brew search php,會發現多了5.6、7.0和7.1的版本。

安裝:brew install [email protected]。

安裝PHP擴充

以往安裝PHP擴充,比如php-memcached,可以通過指令brew install php56-memcached來完成,但現在不行了。現在得用pecl來安裝。

# php7.2的若幹擴充

cd /usr/local/opt/[email protected]/bin/

./pecl install memcached

./pecl install redis

./pecl install ssh2-1.2

./pecl install xdebug

# php5.6的若幹擴充

cd /usr/local/opt/[email protected]/bin/

PHP_ZLIB_DIR=/usr/local/opt/zlib ./pecl install memcached-2.2.0 # 需要指定zlib的路徑,否則會報錯

./pecl install redis-4.3.0

./pecl install ssh2-0.13

./pecl install xdebug-2.5.5