php並於nginx整合,php與nginx交互

本文目錄一覽:

如何正確配置Nginx+PHP

其實沒多複雜

1. 將nginx和php都裝好了

2. 然後配置nginx,將php請求分發給php-fpm處理

linux下的配置文件一般在/usr/local/nginx/conf/nginx.conf

找到下面字樣,並取消注釋,且注意這個$document_root這個地方(原本應為$script***的,改成$document_root)

location ~ \.php$ {

root html;

fastcgi_pass 127.0.0.1:9000;

fastcgi_index index.php;

fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

include fastcgi_params;

}

3.啟動nginx和php-fpm,然後寫個phpinfo腳本測試下成功與否就可以了

nginx與php怎麼結合在一起

nginx配置:

server{

    #…其他location略

    location ~* \.php$ {

      fastcgi_pass   127.0.0.1:9000;

    }

}

PHP的fastcgi監聽9000端口

php-cgi -b 9000

Linux系統中設置多版本PHP共存配合Nginx服務器使用

應用環境

LNMP的環境,當前PHP版本5.3.8,遇到一個應用需求只支持PHP

5.2.x,又希望保持現有應用還是用PHP

5.3.8。也就是說需要兩個版本的PHP同時存在,供nginx根據需要調用不同版本。

思路

Nginx是通過PHP-FastCGI與PHP交互的。而PHP-FastCGI運行後會通過文件、或本地端口兩種方式進行監聽,在Nginx中配置相應的FastCGI監聽端口或文件即實現Nginx請求對PHP的解釋。

既然PHP-FastCGI是監聽端口和文件的,那就可以讓不同版本的PHP-FastCGI同時運行,監聽不同的端口或文件,Nginx中根據需求配置調用不同的PHP-FastCGI端口或文件,即可實現不同版本PHP共存了。

配置記錄

下面記錄簡單的配置流程,基於已經安裝了lnmp的debian環境。當前版本的PHP是5.3.8,位於/usr/local/php。

1.下載PHP-5.2.14及相關的FPM、autoconf組件:

mkdir

~/php5.2

cd

~/php5.2

wget

-c

wget

-c

2.解壓PHP-5.2.14,並打上PHP-FPM的補丁:

tar

zxvf

php-5.2.14.tar.gz

gzip

-cd

php-5.2.14-fpm-0.5.14.diff.gz

|

patch

-d

php-5.2.14

-p1

3.如果你已經通過lnmp安裝,應該已經安裝好了autoconf,如果沒有,請自行下載並編譯autoconf-2.13,然後設置autoconf環境變量:

export

PHP_AUTOCONF=/usr/local/autoconf-2.13/bin/autoconf¬

export

PHP_AUTOHEADER=/usr/local/autoconf-2.13/bin/autoheader

3.編譯安裝PHP-5.2.14在新的路徑(/usr/local/php-5.2.14)下,注意–prefix、–with-config-file-path的路徑,並且打開fastcgi和fpm選項:

cd

php-5.2.14/

./buildconf

–force

./configure

–prefix=/usr/local/php-5.2.14

–with-config-file-path=/usr/local/php-5.2.14/etc

–with-mysql=/usr/local/mysql

–with-mysqli=/usr/local/mysql/bin/mysql_config

–enable-fastcgi

–enable-fpm

make

ZEND_EXTRA_LIBS=’-liconv’

make

install

4.設置/usr/local/php-5.2.14/etc/php-fpm.conf,監聽端口:

value

name=”listen_address”127.0.0.1:9001/value

或者監聽文件:

value

name=”listen_address”/path/to/unix/socket/value

其他參數根據服務器環境和需求自行定製。

5.啟動php-fpm,以後可以通過php-fpm進行管理:

/usr/local/php-5.2.14/sbin/php-fpm

start

字php5.3.3後,php已經將php-fpm繼承到php中,而且內置的php-fpm默認不支持(start|stop|reload)的平滑啟動參數,需要使用官方源代碼中提供的啟動腳本來控制:

cp

-f

(php

-5.3.x-source-dir)/sapi/fpm/init.d.php-fpm

/etc/init.d/php-fpm

chmod

755

/etc/init.d/php-fpm

/etc/init.d/php-fpm

start

php-fpm支持的操作:

start,啟動PHP的FastCGI進程。

stop,強制終止PHP的FastCGI進程。

quit,平滑終止PHP的FastCGI進程。

restart,

重啟PHP的FastCGI進程。

reload,

重新加載PHP的php.ini。

logrotate,

重新啟用log文件。

5.3.3的php-fpm腳本支持的操作:start|stop|force-quit|restart|reload|status

6.配置好PHP-5.2.14的php.ini,重新加載生效:

vi

/usr/local/php-5.2.14/etc/php.ini

/usr/local/php-5.2.14/sbin/php-fpm

reload

7.修改nginx配置,對需要的服務配置使用PHP-5.2.14:

location

~

.*.(php|php5)?$

{

fastcgi_pass

127.0.0.1:9001;

fastcgi_index

index.php;

include

fcgi.conf;

}

8.記錄一下自己編譯php5.5.10使用的配置

./configure

–prefix=/usr/local/php-5.5.10

–with-config-file-path=/usr/local/php-5.5.10/etc

–with-mysql=mysqlnd

–with-mysqli=mysqlnd

–with-bz2

–with-curl=/usr/bin

–enable-ftp

–enable-sockets

–disable-ipv6

–with-gd

–with-jpeg-dir=/usr/local

–with-png-dir=/usr/local

–with-freetype-dir=/usr/local

–enable-gd-native-ttf

–with-iconv-dir=/usr/local

–enable-mbstring

–enable-calendar

–with-gettext

–with-libxml-dir=/usr/local

–with-zlib

–with-pdo-mysql=mysqlnd

–enable-dom

–enable-xml

–enable-fpm

–with-libdir=lib64

–with-mcrypt=/usr/bin

–enable-zip

–enable-soap

–enable-mbstring

–with-gd

–with-openssl

–enable-pcntl

–with-xmlrpc

–enable-opcache

如何搭建Nginx+PHP環境

1、首先需要準備的應用程序包。

nginx:nginx/Windows-1.0.4

php:php-5.2.16-nts-Win32-VC6-x86.zip (nginx下php是以FastCGI的方式運行,所以我們下載非線程安全也就是nts的php包)

(還會用到)RunHiddenConsole:RunHiddenConsole.zip

2、安裝與配置。

 1)php的安裝與配置。

直接解壓下載好的php包,到D盤wnmp目錄(D:\wnmp),這裡把解壓出來的文件夾重命名成php5。進入文件夾修改php.ini-recommended文件為php.ini,並用Editplus或者Notepad++打開來。找到

extension_dir = “./ext”

更改為

extension_dir = “D:/wnmp/php5/ext”

往下看,再找到

;extension=php_mysql.dll

;extension=php_mysqli.dll

前面指定了php的ext路徑後,只要把需要的擴展包前面所對應的“;”去掉,就可以了。這裡打開php_mysql.dll和php_mysqli.dll,讓php支持mysql。當然不要忘掉很重要的一步就是,把php5目錄下的libmysql.dll文件複製到C:\Windows目錄下,也可以在系統變量裡面指定路徑,當然這裡我選擇了更為方便的方法^_^。

到這裡,php已經可以支持mysql了。

接下來我們來配置php,讓php能夠與nginx結合。找到

;cgi.fix_pathinfo=1

我們去掉這裡的封號。

cgi.fix_pathinfo=1

這一步非常重要,這裡是php的CGI的設置。

 2)nginx的安裝與配置。

把下載好的nginx-1.0.4的包同樣解壓到D盤的wnmp目錄下,並重命名為nginx。接下來,我們來配置nginx,讓它能夠和php協同工作。進入nginx的conf目錄,打開nginx的配置文件nginx.conf,找到

location / {

root html;#這裡是站點的根目錄

index index.html index.htm;

}

將root html;改為root D:/wnmp/www;

再往下,找到

複製代碼

# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000

#

#location ~ \.php$ {

# root html;

# fastcgi_pass 127.0.0.1:9000;

# fastcgi_index index.php;

# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;

# include fastcgi_params;

#}

複製代碼

先將前面的“#”去掉,同樣將root html;改為root D:/wnmp/www;。再把標記為紅色的/scripts改為“$document_root”,這裡的“$document_root”就是指前面“root”所指的站點路徑,這是改完後的:

複製代碼

# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000

#

location ~ \.php$ {

root D:/wnmp/www;

fastcgi_pass 127.0.0.1:9000;

fastcgi_index index.php;

fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

include fastcgi_params;

}

複製代碼

保存配置文件,就可以了。

nginx+php的環境就初步配置好了,來跑跑看。我們可以輸入命令

來啟動php,並手動啟動nginx,當然也可以利用腳本來實現。

首先把下載好的RunHiddenConsole.zip包解壓到nginx目錄內,RunHiddenConsole.exe的作用是在執行完命令行腳本後可以自動關閉腳本,而從腳本中開啟的進程不被關閉。然後來創建腳本,命名為“start_nginx.bat”,我們在Notepad++里來編輯它

複製代碼

@echo off

REM Windows 下無效

REM set PHP_FCGI_CHILDREN=5

REM 每個進程處理的最大請求數,或設置為 Windows 環境變量

set PHP_FCGI_MAX_REQUESTS=1000

echo Starting PHP FastCGI…

RunHiddenConsole D:/wnmp/php5/php-cgi.exe -b 127.0.0.1:9000 -c D:/wnmp/php5/php.ini

echo Starting nginx…

RunHiddenConsole D:/wnmp/nginx/nginx.exe -p D:/wnmp/nginx

複製代碼

再另外創建一個名為stop_nginx.bat的腳本用來關閉nginx

@echo off

echo Stopping nginx…

taskkill /F /IM nginx.exe nul

echo Stopping PHP FastCGI…

taskkill /F /IM php-cgi.exe nul

exit

做好後,是這樣的

這樣,我們的服務腳本也都創建完畢了。雙擊start_nginx.bat看看進程管理器是不是有兩個nginx.exe的進程和一個php-cgi.exe的進程呢?

這樣nginx服務就啟動了,而且php也以fastCGI的方式運行了。

到站點目錄下,新建一個phpinfo.php的文件,在裡面編輯

?php

phpinfo();

?

保存後,打開瀏覽器輸入“”,如果看到

就說明,nginx+php的環境已經配置好了,呵呵~

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/193040.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-01 10:31
下一篇 2024-12-01 10:31

相關推薦

  • PHP和Python哪個好找工作?

    PHP和Python都是非常流行的編程語言,它們被廣泛應用於不同領域的開發中。但是,在考慮擇業方向的時候,很多人都會有一個問題:PHP和Python哪個好找工作?這篇文章將從多個方…

    編程 2025-04-29
  • PHP怎麼接幣

    想要在自己的網站或應用中接受比特幣等加密貨幣的支付,就需要對該加密貨幣擁有一定的了解,並使用對應的API進行開發。本文將從多個方面詳細闡述如何使用PHP接受加密貨幣的支付。 一、環…

    編程 2025-04-29
  • 使用PHP foreach遍歷有相同屬性的值

    本篇文章將介紹如何使用PHP foreach遍歷具有相同屬性的值,並給出相應的代碼示例。 一、基礎概念 在講解如何使用PHP foreach遍歷有相同屬性的值之前,我們需要先了解幾…

    編程 2025-04-28
  • PHP獲取301跳轉後的地址

    本文將為大家介紹如何使用PHP獲取301跳轉後的地址。301重定向是什麼呢?當我們訪問一個網頁A,但是它已經被遷移到了另一個地址B,此時若服務器端做了301重定向,那麼你的瀏覽器在…

    編程 2025-04-27
  • PHP登錄頁面代碼實現

    本文將從多個方面詳細闡述如何使用PHP編寫一個簡單的登錄頁面。 1. PHP登錄頁面基本架構 在PHP登錄頁面中,需要包含HTML表單,用戶在表單中輸入賬號密碼等信息,提交表單後服…

    編程 2025-04-27
  • Java如何從Nginx下載文件

    本文將從以下幾個方面詳細介紹如何使用Java從Nginx下載文件。 一、準備工作 在Java中下載文件需要使用到Apache HttpClient庫,這個庫是一個基於Java的HT…

    編程 2025-04-27
  • PHP與Python的比較

    本文將會對PHP與Python進行比較和對比分析,包括語法特性、優缺點等方面。幫助讀者更好地理解和使用這兩種語言。 一、語法特性 PHP語法特性: <?php // 簡單的P…

    編程 2025-04-27
  • nginx與apache應用開發詳解

    一、概述 nginx和apache都是常見的web服務器。nginx是一個高性能的反向代理web服務器,將負載均衡和緩存集成在了一起,可以動靜分離。apache是一個可擴展的web…

    編程 2025-04-25
  • NGINX權限被拒絕問題

    NGINX是一款常見的Web服務器軟件,但是在使用中常會遇到“permission denied”權限被拒絕的問題。下文將從多個方面介紹本問題和解決方法。 一、系統權限問題 1、檢…

    編程 2025-04-25
  • 關閉nginx命令詳解

    一、linux系統中關閉nginx命令 1、使用ps命令找到nginx的進程ID $ ps -ef | grep nginx 2、發送信號給nginx進程結束 $ kill -QU…

    編程 2025-04-25

發表回復

登錄後才能評論