回想之前使用php都是經過apache來加載php的module運行的,最近看到公司的項目逐漸切到nginx了,抱着好奇心,週末就開始搗鼓起來了。。。php
nginx自己不能處理PHP,它只是個web服務器,當接收到請求後,若是是php請求,則發給php解釋器處理,並把結果返回給客戶端。
nginx通常是把請求發fastcgi管理進程處理,fascgi管理進程選擇cgi子進程處理結果並返回被nginx。html
這裏我使用的php7版本,目前官方已經發布了php7的beta3版本。php-fpm已經被包含在裏面了,無需另外安裝。。。
至於php7的編譯安裝,看一下我以前的 這篇文章 文章就妥妥的搞定了!nginx
nginx的話,毫無疑問我確定選擇源碼編譯安裝,由於確實是習慣了這種方式了!
我這裏就拿1.6.2版本爲例,戳 這裏下載,解壓以後進入源碼目錄web
#配置,相關參數含義本身去查閱文檔哦 ./configure --prefix=/usr/local/nginx --sbin-path=/usr/local/nginx/nginx --conf-path=/usr/local/nginx/nginx.conf --pid-path=/usr/local/nginx/nginx.pid --with-http_ssl_module --with-http_realip_module --with-http_sub_module --with-http_gzip_static_module --with-http_stub_status_module --with-pcre --with-cc-opt="-Wno-deprecated-declarations" #編譯 make #安裝 sudo make install
#命令拷貝到系統目錄,方便使用 sudo cp /usr/local/nginx/nginx /usr/bin #測試配置是否出錯,若是出錯,按照錯誤信息提示去修改了 nginx -t #啓動nginx nginx
頁面訪問,輸入http://localhost:8888
查看【這裏我在配置文件裏面把nginx的監聽端口改爲了8888】出現以下頁面就正常了apache
#複製一份有效的配置文件 sudo cp /usr/local/php7/etc/php-fpm.conf.default.conf php-fpm.conf #複製一份有效的用戶配置文件,用戶名是配置php的時候指定的 sudo cp /usr/local/php7/etc/php-fpm.d/www.conf.default www.conf #啓動php-fpm,mac必需要以root用戶啓動,-R 參數表示 --allow-to-run-as-root sudo /usr/local/php7/sbin/php-fpm -R #查看一下php-fpm是否啓動成功 ps aux | grep php-fpm #這裏我修改了php-fpm的端口號,默認是9000 netstat -ant | grep 90001
修改nginx的配置文件,支持php文件的解析segmentfault
#打開配置文件,找到`location ~ \.php$`這裏,默認的以下 ... #location ~ \.php$ { # root html; # fastcgi_pass 127.0.0.1:9001; # fastcgi_index index.php; # fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; # include fastcgi_params; #} ... #稍微改吧改吧就成了下面的樣子,相信你看的懂什麼意思了。。。 ... location ~ \.php$ { root html; fastcgi_pass 127.0.0.1:9001; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } ...
cd /usr/local/ngnix/html echo "<?php phpinfo();" > index.php
瀏覽器訪問 http://localhost:8888/index.php
,熟悉的畫面又出現了!瀏覽器
通過以上這些簡單的步驟以後,nginx下運行php相信再也不是那麼神祕了。。。
固然,我這裏只是配置了一個最基本的運行環境,像你要運行項目的話應該還要配置虛擬主機、僞靜態這些。
還有就是nginx配置文件的參數含義,這個有空的話仍是去看看官方文檔說明,畢竟你要知道你配置的每一項是什麼意思纔好!服務器