mac系統下nginx+php+mysql環境的搭建

有關於mac系統下nginx+php+mysql環境的搭建,大概需要說明的如下:
 
1.安裝方式有兩種,一種是下載源碼包編譯安裝,一種是採用Homebrew下載安裝(此處我採用的是Homebrew方式)。
 
2.Homebrew安裝php之前需要安裝xcode命令行插件(Command Line Tools),否則安裝php會報錯。
安裝Command Line Tools
xcode-select --install
 
3.Homebrew安裝前可以通過options命令查看下安裝參數,nginxmysql安裝不需要特別的參數設置,直接brew install即可。
Homebrew安裝nginxmysql
        brew install mysql , brew install nginx
PHP安裝要加命令參數排除apache模塊,加載php-fpmmysql,同時因爲brew默認沒有php-fpm需要事先添加添加。
Homebrew添加php-fpm
brew tap homebrew/dupes
brew tap homebrew/php
Homebrew安裝PHP
        brew install --without-apache --with-fpm --with-mysql php54
    注意因爲mac系統在帶了php,此處需要切換安裝版的php需要修改~/.bashrc文件,在最後加入:
export PATH="$(brew --prefix php54)/bin:$PATH"
 
 
4.Homebrew安裝默認情況下項目在/usr/local/Cellar目錄下,相應配置文件在/usr/local/etc目錄下,進程運行在/usr/local/var/run目錄下。
 
5.安裝成功後,通常會設置開機啓動,這裏mac系統的開機啓動是寫在~/Library/LaunchAgents目錄下的,具體語句及說明如下:
複製php項目目錄下的啓動文件到mac自啓動目錄下,這裏啓動文件名爲homebrew.mxcl.php54.plist
    cp /usr/local/Cellar/php54/php5.4.33/homebrew.mxcl.php54.plist  ~/Librarb/LaunchAgents/
mysqlnginx自啓動設置類似。
如果想要啓動php執行命令
    launchctl load -w ~/Library/LaunchAgents/homebrew.mxcl.php54.plist
 
 
6.nginx安裝成功後需要對nginx進行配置,主要內容大概包括:nginx線程設置、錯誤日誌設置和http設置
worker_processes  1;
error_log  /usr/local/etc/nginx/log/error.log warn;
pid        /usr/local/var/run/nginx.pid;
events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';
    access_log  /usr/local/etc/nginx/log/access.log  main;
    sendfile        on;
    #tcp_nopush     on;
    #keepalive_timeout  0;
    keepalive_timeout  65;
    gzip  on;
    include /usr/local/etc/nginx/vhosts/*.conf;
}
 
7.對站點信息進行配置,個人存放在/usr/local/etc/nginx/vhosts/目錄下,文件主要設置了監聽端口、域名、默認首頁和重寫規則
server {
        listen       80;
        server_name  localhost;
        index index.html index.htm index.php;
        root /users/admin/Sites/PHPWeb/helloLaravel/public;
        location ~ .*\.(php|php5)?$
        {
                #fastcgi_pass  unix:/tmp/php-cgi.sock;
                fastcgi_pass  127.0.0.1:9000;
                fastcgi_index index.php;
                include fastcgi.conf;
        }
        location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
        {
                expires 30d;
        }
        location ~ .*\.(js|css)?$
        {
                expires 1h;
        }
        access_log /usr/local/etc/nginx/log/access.log;
}
 
8.PHP安裝成功後,目前不需要什麼特定的配置,默認安裝會自帶PHP-FPM,需要啓動PHP-FPM,同樣PHP-FPM也不需要特別的配置。
 
9.mysql安裝成功後需要初始化mysql配置數據庫,並修改初始密碼。
 默認mysql數據庫存儲在/usr/local/var/mysql目錄下,可以通過 show variables where Variable_name ='datadir';命令查看具體路徑是什麼
10.php拓展模塊安裝,以mcrypt爲例,因爲php5.4源碼包自帶mcrypt,下載解壓編譯安裝後會默認安裝到phpextensions目錄下的no-debug-non-zts目錄下
這裏以我的安裝目錄爲例
/usr/local/Cellar/php54/5.4.33/lib/php/extensions/no-debug-non-zts-20100525
之後在php.ini文件下的extensions處添加如下配置:
extension=/usr/local/Cellar/php54/5.4.33/lib/php/extensions/no-debug-non-zts-20100525/mcrypt.so
這裏我的php.ini文件在/usr/local/etc/php/5.4目錄下,添加後可以通過php -m查看是否加載mcrypt模塊,要想nginx成功應用還有後重啓php-fpm
 
大致說明如上,具體安裝可參考如下博客:
 
以下額外說明php拓展模塊的安裝
 
 
以下作一些概念介紹,方便理解:
 
[1]Homebrew
Homebrewmac下開源的包管理軟件,由Max Howell組織編寫,這個管理工具在Ruby on Rails社區得到普及,並因爲其拓展性得到好評(維基百科)。
 
Homebrewmac下用來下載管理軟件的工具,你可以通過homebrew下載開發工具,也可以通過下載源碼包編譯安裝,只不過brew方式更加方便簡潔。
通過Ruby腳本安裝Homebrew
1 ruby -"$(curl -fsSL https://raw.github.com/gist/323731)"
Homebrew常用命令:
查詢軟件
    brew search soft
查看某軟件命令參數
    brew options soft
安裝軟件
    brew install soft
刪除軟件
    brew remove soft
 
通過Homebrew安裝NginxMysqlPHP
默認會安裝到/usr/local/Cellar目錄下,相應配置文件在/usr/local/etc目錄下,進程運行在/usr/local/var/run目錄下。
 
 
 
[2]PHP HttpServer
php有四種運行模式:模塊模式、CGIfastcgiCLI
模塊模式以mod_php5模塊形式集成,常用在Apache服務器下。
CGI是比較老的一種方式了,現在使用的很少,漸漸被fastcgi取代。
fastcgi是當前使用比較多的運行模式,目前php內置的PHP-CGI就是fastcgi管理器。
CLI模式就是常用的php命令行,比如php -v 、php -m
 
apache2handlerapache 自帶運行php的方式
        Apache的工作模式是Apache服務器在系統啓動後,預先生成多個進程副本駐留在內存中,一旦有請求出現,就立即使用這些空餘的子進程進行處理,這樣就不存在生成子進程造成的延遲了。這些服務器副本在處理完一次HTTP請求之後並不立即退出,而是停留在計算機中等待下次請求。對於客戶瀏覽器的請求反應更快,性能較高。
        這就導致了當Apache服務器進行壓力測試後其負載仍舊居高不下。
 
CGI
CGI全稱是“公共網關接口”(Common Gateway Interface),是HTTP服務器與你的或其它機器上的程序進行“交談”的一種工具。
        CGI是比較老的模式了,這幾年都很少用了。cgi方式遇到連接請求先要創建cgi的子進程,然後處理請求,處理完後結束這個子進程。這就是fork-and-execute模式。所以用cgi方式的服務器有多少連接請求就會有多少cgi子進程。子進程反覆加載是cgi性能低下的主要原因。
 
FastCGI
FastCGI FastCGI像是一個常駐(long-live)型的CGI,它可以一直執行着,只要激活後,不會每次都要花費時間去fork一次
FastCGI執行流程如下:
1.Web Server啓動時載入FastCGI進程管理器(IIS ISAPIApache Module)
2.FastCGI進程管理器自身初始化,啓動多個CGI解釋器進程(可見多個php-cgi)並等待來自Web Server的連接。
3.當客戶端請求到達Web Server時,FastCGI進程管理器選擇並連接到一個CGI解釋器。Web serverCGI環境變量和標準輸入發送到FastCGI子進程php-cgi
4.FastCGI子進程完成處理後將標準輸出和錯誤信息從同一連接返回Web Server。當FastCGI子進程關閉連接時,請求便告處理完成。
 
PHP-CGI
PHP-CGIPHP自帶的FastCGI管理器。可以對其直接啓動。現在不管是lighttpd還是nginx都可以與php-cgi進行組合運行php,其中lighttpd直接組合php-cgi運行php,還算比較穩定,但nginxphp-cgi直接組合運行phpphp-cgi進程經常崩潰,而且佔用的內存也比較高。
PHP-CGI的缺點有
1.php-cgi變更php.ini配置後需重啓php-cgi才能讓新的php-ini生效,不可以平滑重啓
2.直接殺死php-cgi進程,php就不能運行了。
 
PHP-FPM
PHP-FPM是一個PHP FastCGI管理器,PHP-FPM其實是PHP源代碼的一個補丁,旨在將FastCGI進程管理整合進PHP包中。
PHP5.3.3已經集成php-fpm了,不再是第三方的包了。PHP-FPM提供了更好的PHP進程管理方式,可以有效控制內存和進程、可以平滑重載PHP配置
 
Spawn-FCGI
Spawn-FCGI是一個通用的FastCGI管理服務器,它是lighttpd中的一部份,很多人都用LighttpdSpawn-FCGI進行FastCGI模式下的管理工作
 
 
FastCGI像是一個常駐(long-live)型的CGI,它可以一直執行着,激活後,不必每次都花費時間去forkforkfork-and-execute 模式)。它還支持分佈式的運算,即 FastCGI 程序可以在網站服務器以外的主機上執行並且接受來自其它網站服務器來的請求。
 
FastCGI是語言無關的、可伸縮架構的CGI開放擴展,其主要行爲是將CGI解釋器進程保持在內存中並因此獲得較高的性能。衆所周知,CGI解釋器的反覆加載是CGI性能低下的主要原因,如果CGI解釋器保持在內存中並接受FastCGI進程管理器調度,則可以提供良好的性能、伸縮性、Fail- Over特性等等。
 
目前常見的php HttpServer Stack有三種:
1.Apache+mod_php5
2.lighttp+spawn-fcgi
3.nginx+PHP-FPM



注:文章轉自王憶天
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章