nginx和php-fpm基礎環境的安裝和配置

回想之前使用php都是經過apache來加載php的module運行的,最近看到公司的項目逐漸切到nginx了,抱着好奇心,週末就開始搗鼓起來了。。。php

基本原理

nginx自己不能處理PHP,它只是個web服務器,當接收到請求後,若是是php請求,則發給php解釋器處理,並把結果返回給客戶端。
nginx通常是把請求發fastcgi管理進程處理,fascgi管理進程選擇cgi子進程處理結果並返回被nginx。html

安裝php和php-fpm

這裏我使用的php7版本,目前官方已經發布了php7的beta3版本。php-fpm已經被包含在裏面了,無需另外安裝。。。
至於php7的編譯安裝,看一下我以前的 這篇文章 文章就妥妥的搞定了!nginx

安裝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

測試ngnix

#命令拷貝到系統目錄,方便使用
sudo cp /usr/local/nginx/nginx /usr/bin

#測試配置是否出錯,若是出錯,按照錯誤信息提示去修改了
nginx -t

#啓動nginx
nginx

頁面訪問,輸入http://localhost:8888查看【這裏我在配置文件裏面把nginx的監聽端口改爲了8888】出現以下頁面就正常了apache

clipboard.png

配置php-fpm

#複製一份有效的配置文件
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-fpm

修改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;
}
...

測試php文件的解析

cd /usr/local/ngnix/html

echo "<?php phpinfo();" > index.php

瀏覽器訪問 http://localhost:8888/index.php,熟悉的畫面又出現了!瀏覽器

clipboard.png

總結一下

通過以上這些簡單的步驟以後,nginx下運行php相信再也不是那麼神祕了。。。
固然,我這裏只是配置了一個最基本的運行環境,像你要運行項目的話應該還要配置虛擬主機、僞靜態這些。
還有就是nginx配置文件的參數含義,這個有空的話仍是去看看官方文檔說明,畢竟你要知道你配置的每一項是什麼意思纔好!服務器

相關文章
相關標籤/搜索