通過homebrew安裝、配置nginx、mysql、php-fpm

來源:互聯網
上載者:User

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();

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.