程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> PHP綜合 >> mac下安裝nginx和php

mac下安裝nginx和php

編輯:PHP綜合
一、前話:
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 開機啟動的話,需要給予它管理員權限:
復制代碼 代碼如下:
2
sudo chown root:wheel /usr/local/Cellar/nginx/1.4.2/bin/nginx
sudo chmod u+s /usr/local/Cellar/nginx/1.4.2/bin/nginx

三、安裝mysql
3.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目錄,所以每次安裝失敗我就刪除以下文件,重新初始化就好了
復制代碼 代碼如下:
sudo rm /usr/local/opt/mysql/my.cnf
sudo rm -R /usr/local/var/mysql/

待安裝完畢後,會出現一大段mysql相關信息,運行下面的命令啟動mysql
復制代碼 代碼如下:
/usr/local/opt/mysql/bin/mysqld_safe &

執行完後,就可以在終端裡運行 “mysql”,直接進入mysql數據庫裡。對,不用輸入密碼,可以直接連接,初始默認是可以匿名訪問的。
3.2.2、修改密碼
超級用戶 “root” 也是沒設密碼,要設密碼的話可以執行下面指令
復制代碼 代碼如下:
/usr/local/opt/mysql/bin/mysqladmin -u root password 'new-password'

現在訪問 mysql 還是不用密碼就可以連接,如果要設置一些登陸密碼的安全訪問限制,則需執行下面的 mysql安全安裝指令
復制代碼 代碼如下:
/usr/local/opt/mysql/bin/mysql_secure_installation

主要是設置修改root密碼(設置過了可以不用設置,略過)、刪除匿名訪問、刪除root網絡訪問、刪除test數據庫。指令執行完後,登陸mysql就需要密碼驗證了
復制代碼 代碼如下:
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(沒有則創建)最後加入一行:
復制代碼 代碼如下:
export PATH="$(brew --prefix php54)/bin:$PATH"
[html]
[code]
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();
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved