本文章來給大家介紹通過homebrew安裝、配置nginx、mysql、php-fpm執行個體,有舉的同學可進入參考。
1.1、環境選擇:
重新在mac上配置php,原本mac上就內建有apach、php以及pgsql,如果圖簡單的話,直接用就可以了,不過在安裝前我仔細思考了一下幾個問題:
選apache還是nginx:兩個我瞭解的都比較少,相對而言我接觸nginx比較多,伺服器用的也是nginx,沒辦法誰叫nginx負載高呢。為了更好的接觸nginx的環境,我決定還是統一下環境,方便今後使用,這是這次的主要關鍵;
安裝php:Mac os內建了php,好像是5.3.8,版本比較落後,不過這不礙事,因為以前我都是通過php-osx by Liip來管理php,所以不擔心版本問題。不過php-osx by Liip好像沒有fmp相關的配置,這樣我我要和nginx一起用的話就相對比較麻煩了,那我只能選擇其他方案了
安裝mysql:這個就沒有什麼好疑問的了,目前我肯定不會去用pgsql,畢竟沒接觸過,需要有學習成本的,所以我在這篇紀錄中把關於pgsql的部分都去掉了
1.2、那該如何安裝:
既然我否定了系統內建的環境,那麼就要通過別的方式去安裝了,比如說手動編譯。如果是手動編譯的話,那麼就會遇到下面幾個問題:
編譯費事,php依賴那麼多程式,一個個安裝,太累!
如果以後更新怎麼辦?災難!!
不過好在mac下有自己的第三方管理程式:homebrew,而且相對而言我覺得他可能在某些方面更優越於linux下的apt-get、yum。如果通過homebrew來安裝、管理運行環境的話,至少可以解決我幾個問題:
安裝問題,我不用繁瑣的去安裝依賴程式
升級問題,只需要brew update一次升級所有程式
版本問題,homebrew版本更新比較及時,而apt-get、yum來說,今年用的基本是幾年前的穩定版本了
OK,下面的安裝都是基於 homebrew,如果不熟悉或者還沒安裝有 homebrew 的話,可以查看這篇關於:Mac開發人員利器-Homebrew介紹及安裝。
二、安裝nginx
2.1、安裝:
用 brew 一鍵安裝 nignx:
1 brew install nginx
如果需要安裝其他 nginx 的版本,可以 “brew edit nginx” 開啟修改 nginx 的安裝資訊包 formula,預設會用 vi 開啟,在檔案開頭處修改 nginx 相應版本的就行。
2.2、配置
brew 執行完後,nginx 就安裝好了。可以用以下指令對 nginx 進行操作:
#開啟 nginx
sudo nginx
#重新載入|重啟|停止|退出 nginx
nginx -s reload|reopen|stop|quit
開啟 nginx 後,預設的訪問連接埠 8080,如果要改為常用的 80 連接埠,則要修改 “/usr/local/etc/nginx/nginx.conf” 下監聽(listen)連接埠值。
預設的檔案訪問目錄(root)是 “/usr/local/Cellar/nginx/1.4.2/html”(這裡的1.4.2是安裝的nginx的版本,檔案夾名以安裝的nginx版本為準)。
2.3、把 nginx 設定為開機啟動運行:
mkdir -p ~/Library/LaunchAgents/
cp /usr/local/Cellar/nginx/1.4.2/homebrew.mxcl.nginx.plist ~/Library/LaunchAgents/
launchctl load -w ~/Library/LaunchAgents/homebrew.mxcl.nginx.plist
不過試了一下,不是超級使用者登陸,而是普通使用者登陸,並且監聽的連接埠在1024以下的(例如把預設的8080連接埠改為了80連接埠),nginx 開機是啟動不了。因此,要 nginx 開機啟動的話,需要給予它管理員權限:
12 sudo chown root:wheel /usr/local/Cellar/nginx/1.4.2/bin/nginxsudo chmod u+s /usr/local/Cellar/nginx/1.4.2/bin/nginx
三、安裝mysql
3.1、安裝:
1 brew install mysql
homebrew安裝的版本同樣是當前最新的穩定版,安裝的過程比較簡單,不過初始化就相對麻煩很多了,這裡我失敗了很多次。
3.2、配置:
3.2.1、初始化
初始安裝 mysql 的一些設定資料庫(例如:information_schema、mysql)
sudo mysql_install_db
--verbose --user=`whoami`
--basedir="$(brew --prefix mysql)"
--datadir=/usr/local/var/mysql
--tmpdir=/tmp
--explicit_defaults_for_timestamp
這裡我遇到了兩個問題,過程都沒紀錄,這裡簡單提下解決方案:
系統建議我添加“–explicit_defaults_for_timestamp”;
安裝過程中會遇到幾個error,說是db的幾個檔案不存在;
網上搜尋了下,大多是建議將/usr/local/var/mysql這個目錄修改下許可權;
我操作後發現可能不是這樣的,造成這個問題在於我在之前操作遇到了錯誤中止了,產生了一個不完整var目錄,所以每次安裝失敗我就刪除以下檔案,重新初始化就好了
12 sudo rm /usr/local/opt/mysql/my.cnf sudo rm -R /usr/local/var/mysql/
待安裝完畢後,會出現一大段mysql相關資訊,運行下面的命令啟動mysql
1 /usr/local/opt/mysql/bin/mysqld_safe &
執行完後,就可以在終端裡運行 “mysql”,直接進入mysql資料庫裡。對,不用輸入密碼,可以直接連接,初始預設是可以匿名訪問的。
3.2.2、修改密碼
超級使用者 “root” 也是沒設密碼,要設密碼的話可以執行下面指令
1 /usr/local/opt/mysql/bin/mysqladmin -u root password 'new-password'
現在訪問 mysql 還是不用密碼就可以串連,如果要設定一些登陸密碼的安全訪問限制,則需執行下面的 mysql安全安裝指令
1 /usr/local/opt/mysql/bin/mysql_secure_installation
主要是設定修改root密碼(設定過了可以不用設定,略過)、刪除匿名訪問、刪除root網路訪問、刪除test資料庫。指令執行完後,登陸mysql就要求輸入密碼驗證了
1 mysql -u root -p
3.3、開機啟動mysql
mkdir -p ~/Library/LaunchAgents/
cp /usr/local/Cellar/mysql/5.6.13/homebrew.mxcl.mysql.plist ~/Library/LaunchAgents/
launchctl load -w ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist
至此,mysql安裝完畢。
四、安裝php、php-fpm…
4.1、安裝
Mac是預裝了php,不過很多擴充都沒安裝,目測最多隻能在終端裡執行下php指令,所以我選擇重新安裝php。由於 brew 預設是沒有 php 安裝,所以要使用 “brew tap” 來安裝 brew 的第三方程式包,這裡使用 josegonzalez 的php安裝包,具體操作如下:
brew tap homebrew/dupes
brew tap josegonzalez/homebrew-php
執行完後,就可以用 brew 安裝php了。這裡php有幾個版本可以安裝,具體可以執行 “brew search php” 查看一下有什麼php版本可以安裝,一般會有“php52、php53、php54、php55”版本,我安裝的是最新的php5.5版本。由於PHP5.5版本已經內嵌了 FPM(FastCGI Process Manager),在安裝選項裡標明就行,本人 php 的安裝配置指令如下:
sudo brew install php55
--with-debug
--with-fpm
--with-gmp
--with-homebrew-openssl
--with-imap --with-intl
--with-libmysql
--without-bz2
--without-mysql
--without-pcntl
--without-pear
更多的安裝選項可以通過 “brew options php55″ 查看。
提示:–with-cgi不能和–with-fpm一起安裝,互相衝突
指令執行完後,php 跟 php-fpm 就安裝好了。
4.2、配置
由於是重裝php,之前系統預裝的php還沒卸載,因此在終端調用php時,還是以之前系統的php版本做解析,所以這裡需要修改path,指定 php 的解析路徑。在~/.bashrc(沒有則建立)最後加入一行:
1 export PATH="$(brew --prefix php54)/bin:$PATH"
添加之後再執行一下source,使之生效
1 source ./.profile
不存在這個檔案的朋友請參照這片文章進行配置:Mac系統終端命令列不執行命令 總出現command not found解決方案
OK,php-fpm安裝完成。
要修改配置 php 或者 php-fpm 的話,可以修改 “/usr/local/etc/php/5.5/php.ini” 、 “/usr/local/etc/php/5.5/php-fpm.conf”。
詳細配置方法可以參照相關資料:
php-fpm 啟動參數及重要配置詳解
Linux平滑編譯升級php至5.5.0
啟動 php-fpm 的話就直接在終端裡執行 “php-fpm”,預設開啟 php-fpm 會顯示一個狀態 shell 出來,也可以把 php-fpm 的設定檔裡的 “daemonize = no” 改為 “daemonize = yes”,就會以後台守護進程的方式啟動,對於剛修改的設定檔,可以執行 “php-fpm -t” 來檢測配置有沒有問題。
4.3、開機啟動
開機啟動 php-fpm(下面的 5.5.3 是當前安裝 php 的具體版本號碼):
mkdir -p ~/Library/LaunchAgents/
cp /usr/local/Cellar/php54/5.5.3/homebrew-php.josegonzalez.php55.plist ~/Library/LaunchAgents/
launchctl load -w ~/Library/LaunchAgents/homebrew-php.josegonzalez.php55.plist
為了方便,寫了個啟動、關閉、重啟 php-fpm 的 shell 指令碼:
#!/bin/sh
param=$1
start()
{
fpms=`ps aux | grep -i "php-fpm" | grep -v grep | awk '{print $2}'`
if [ ! -n "$fpms" ]; then
php-fpm
echo "PHP-FPM Start"
else
echo "PHP-FPM Already Start"
fi
}
stop()
{
fpms=`ps aux | grep -i "php-fpm" | grep -v grep | awk '{print $2}'`
echo $fpms | xargs kill -9
for pid in $fpms; do
if echo $pid | egrep -q '^[0-9]+$'; then
echo "PHP-FPM Pid $pid Kill"
else
echo "$pid IS Not A PHP-FPM Pid"
fi
done
}
case $param in
'start')
start;;
'stop')
stop;;
'restart')
stop
start;;
*)
echo "Usage: ./phpfpm.sh start|stop|restart";;
esac
五、設定 nginx 的 php-fpm 配置
在server塊中添加解析檔案類型“index index.html index.htm index.php;”
server {
listen 80;
server_name localhost;
index index.html index.htm index.php;
......
}
開啟 nginx 預設注釋掉的php location設定,修改如下(具體配置參數,例如路徑,這裡以我本地安裝為準):
location ~ .*.(php|php5)?$ {
#fastcgi_pass unix:/tmp/php-cgi.sock;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /Library/WebServer/public_html$fastcgi_script_name;
include /usr/local/etc/nginx/fastcgi_params;
#include fcgi.conf;
}
修改目錄使用者、使用者組:
sudo chown www:www /Library/WebServer/public_html
OK,這樣就可以在訪問目錄下(預設是/Library/WebServer/public_html)執行 php 檔案了。嗯,趕快輸出一下 “phpinfo()” 吧~
<?php
phpinfo();