⑴ 如何正確配置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
[root@redhat7 ~]# wget http://am1.php.net/get/php-7.1.2.tar.gz/from/this/mirror
[root@redhat7 ~]# tar xzvf php-7.1.2.tar.gz
[root@redhat7 ~]# cd php-7.1.2/
[root@redhat7 ~]# ./configure --prefix=/usr/local/php --enable-fpm
[root@redhat7 php-7.1.2]# make&&make install
查看是否成功編譯安裝PHP
[root@redhat7 php-7.1.2]# php -v
PHP 7.1.2 (fpm-fcgi) (built: Apr 14 2017 20:21:53)
Copyright (c) 1997-2017 The PHP Group
Zend Engine v3.1.0, Copyright (c) 1998-2017 Zend Technologies
編譯安裝完成後PHP不具備配置文件php.ini,此時只需復制php.ini-proction到 /usr/local/lib/php.ini即可,php.ini文件一般在/usr/local/lib/和/etc目錄下
[root@localhost php-7.1.2]# cp php.ini-proction /usr/local/lib/php.ini
[root@redhat7 php]# /usr/local/php/sbin/php-fpm
[14-Apr-2017 20:59:49] ERROR: failed to open configuration file '/usr/local/php/etc/php-fpm.conf': No such file or directory (2)
[14-Apr-2017 20:59:49] ERROR: failed to load configuration file '/usr/local/php/etc/php-fpm.conf'
[14-Apr-2017 20:59:49] ERROR: FPM initialization failed
啟動php-fpm發現缺乏配置文件/usr/local/php/etc/php-fpm.conf
此時只需復制php-fpm的配置文件在安裝php時提供的配置文件的模版/usr/local/php/etc/php-fpm.conf.default到相應/usr/local/php/etc/php-fpm.conf即可
[root@redhat7 etc]# /usr/local/php/sbin/php-fpm
[14-Apr-2017 21:14:32] WARNING: Nothing matches the include pattern '/usr/local/php/etc/php-fpm.d/﹡.conf' from /usr/local/php/etc/php-fpm.conf at line 125.
[14-Apr-2017 21:14:32] ERROR: No pool defined. at least one pool section must be specified in config file
[14-Apr-2017 21:14:32] ERROR: failed to post process the configuration
[14-Apr-2017 21:14:32] ERROR: FPM initialization failed
[root@redhat7 etc]# cp php-fpm.conf.default /usr/local/php/etc/php-fpm.conf
[root@redhat7 etc]# cp /usr/local/php/etc/php-fpm.d/www.conf.default /usr/local/php/etc/php-fpm.d/www.conf
[root@redhat7 etc]# /etc/init.d/php-fpm
[14-Apr-2017 21:23:02] ERROR: unable to bind listening socket for address '127.0.0.1:9000': Address already in use (98)
[14-Apr-2017 21:23:02] ERROR: FPM initialization failed
[root@redhat7 etc]# netstat -nldp|grep 9000
tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN 3721/php-fpm: maste
[root@redhat7 php-7.1.2]# cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
[root@redhat7 php-7.1.2]# chmod a+x /etc/init.d/php-fpm
[root@redhat7 php-7.1.2]# ll /etc/init.d/php-fpm
-rwxr-xr-x 1 root root 2401 4月 14 21:26 /etc/init.d/php-fpm
[root@redhat7 php-7.1.2]# /etc/init.d/php-fpm start
Starting php-fpm [14-Apr-2017 21:28:09] ERROR: unable to bind listening socket for address '127.0.0.1:9000': Address already in use (98)
[14-Apr-2017 21:28:09] ERROR: FPM initialization failed
failed
[root@redhat7 php-7.1.2]# netstat -nldp |grep 9000
tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN 3721/php-fpm: maste
[root@redhat7 php-7.1.2]# kill 3721
[root@redhat7 php-7.1.2]# netstat -nldp |grep 9000
[root@redhat7 php-7.1.2]# /etc/init.d/php-fpm start
Starting php-fpm done
[root@redhat7 php-7.1.2]# service php-fpm status
php-fpm (pid 3927) is running...
[root@redhat7 php-7.1.2]# chkconfig --add php-fpm
[root@redhat7 php-7.1.2]# chkconfig php-fpm --level 345 on
配置nginx支持PHP
修改nginx的配置文件,支持php文件的解析,找到location的添加位置,在後面添加下面這個location
location ~ .php$ {
root /usr/share/nginx/html; #指定php的根目錄
fastcgi_pass 127.0.0.1:9000;#php-fpm的默認埠是9000
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
⑶ nginx配置支持php
nginx本身不支持php解析,需要配合php-fpm來配置。
location~.php${
root/var/www;#指定php的根目錄
fastcgi_pass127.0.0.1:9000;#php-fpm的默認埠是9000
fastcgi_indexindex.php;
fastcgi_paramSCRIPT_FILENAME$document_root$fastcgi_script_name;
includefastcgi_params;
}
centos下安裝php-fpm (php及其它組件已經安裝過的情況)
yuminstallphp-fpm
啟動php-fpm 並設置開機啟動 (centos 7)
systemctlstartphp-fpm
systemctlenablephp-fpm
⑷ 如何正確配置Nginx+PHP
1、Nginx安裝
安裝編譯軟體庫
[root@leixuesong ~]# yum -y install gcc gcc-c++ autoconf automake openssl openssl-devel pcre-devel zlib-devel
下載nginx 1.6.2源碼包
[root@leixuesong ~]# wget http://nginx.org/download/nginx-1.6.2.tar.gz
解壓nginx
[root@leixuesong ~]# tar zxvf nginx-1.6.2.tar.gz
進入解壓文件夾
[root@leixuesong ~]# cd nginx-1.6.2
編譯設置模塊
[root@leixuesong nginx-1.6.2]# ./configure –with-http_stub_status_mocule –prefix=/opt/nginx
安裝
[root@leixuesong nginx-1.6.2]# make && make install
nginx編譯安裝性能優化
1、在nginx 源碼文件找到auto/cc/gcc文件找到如下幾行
#debug
[root@leixuesong ~]# CFLASS=」$CFLAGS -g」
2、特定CPU優化CPU類型編譯
–with-cc-opt=」-O3″
–with-cpu-opt=CPU類型
查看CPU類型
[root@leixuesong ~]# cat /proc/cpuinfo | grep 「model name」
nginx重新啟動
[root@leixuesong ~]# /opt/nginx/sbin/nginx -s reload
nginx啟動
[root@leixuesong ~]# /opt/nginx/sbin/nginx
nginx檢測配置
[root@leixuesong ~]# /opt/nginx/sbin/nginx -t
2、PHP的安裝和配置
安裝php依賴軟體庫
[root@leixuesong ~]# yum install -y gcc-c++ libxml2 libxml2-devel autoconf libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel mysql mysql-devel
下載php5.6源碼包
[root@leixuesong ~]# wget http://am1.php.net/distributions/php-5.6.3.tar.gz
解壓
[root@leixuesong ~]# tar -zxvf php-5.6.3.tar.gz
[root@leixuesong ~]# cd php-5.6.3
編譯設置模塊
[root@leixuesong php-5.6.3]# ./configure –prefix=/usr/local/php –with-mysql=mysqlnd–with-mysqli=mysqlnd –enable-fpm –with-pear –with-curl –with-gd –with-jpeg-dir –with-png-dir –with-freetype-dir –with-iconv –with-mhash –with-zlib –enable-mbstring –disable-debug
make && make install
復制php配置文件
[root@leixuesong php-5.6.3]# cp php.ini-proction /opt/php/lib/php.ini
啟動php-fpm
[root@leixuesong php-5.6.3]# /opt/php/sbin/php-fpm
檢測配置是否正確
[root@leixuesong php-5.6.3]# /opt/php/sbin/php-fpm -t
在centos上成功編譯安裝nginx 1.6、php 5.6並成功啟動nginx和php-fpm後,訪問php提示」File not found.」,同時在錯誤日誌中看到:
2013/10/22 20:05:49 [error] 12691#0: *6 FastCGI sent in stderr: 「Primary script unknown」 while reading response header from upstream, client: 192.168.168.1, server: localhost, request: 「GET / HTTP/1.1″, upstream: 「fastcgi://127.0.0.1:9000″, host: 「192.168.168.133」:
在Nginx配置文件中找到定義調用腳本文件的地方,如:
fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
修改成如下方式($document_root):
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
nginx gzip設置
gzip on;
gzip_min_length 1k;
gzip_buffers 4 16k;
gzip_http_version 1.1;
gzip_comp_level 2;
gzip_types text/plain application/x-javascript text/css applocation/xml;
gzip_vary on;
來源:CentOS編譯安裝Nginx1.6、PHP5.6 - http://www.leixuesong.cn/84
⑸ nginx和php的兩種通信方式
Nginx與PHP的兩種通信方式-unix socket和tcp socket
1、兩者Nginx配置
unix socket
需要在nginx配置文件中填寫php-fpm運行的pid文件地址。
location ~ \.php$ {
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
}
tcp socket
需要在nginx配置文件中填寫php-fpm運行的ip地址和埠號。
location ~ \.php$ {
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
}
2、兩者比較
從上面的圖片可以看,unix socket減少了不必要的tcp開銷,而tcp需要經過loopback,還要申請臨時埠和tcp相關資源。但是,unix socket高並發時候不穩定,連接數爆發時,會產生大量的長時緩存,在沒有面向連接協議的支撐下,大數據包可能會直接出錯不返回異常。tcp這樣的面向連接的協議,多少可以保證通信的正確性和完整性。
3、選擇建議:如果是在同一台伺服器上運行的nginx和php-fpm,並發量不超過1000,選擇unix socket,因為是本地,可以避免一些檢查操作(路由等),因此更快,更輕。 如果面臨高並發業務,我會選擇使用更可靠的tcp socket,以負載均衡、內核優化等運維手段維持效率。
⑹ 如何在Nginx下配置PHP程序環境
Linux 系統 php 在編譯的時候 可以選擇開啟php-fpm 這個模塊就是支持Nginx 的。也可以加入支持apache的模塊 apx2 ,php編譯成功之後,Nginx建立虛擬主機的配置文件 只需要加入php的解析模塊就可以了。
⑺ 如何正確配置Nginx+PHP
root@leixuesong ~]# yum -y install gcc gcc-c++ autoconf automake openssl openssl-devel pcre-devel zlib-devel
下載nginx 1.6.2源碼包
[root@leixuesong ~]# wget http://nginx.org/download/nginx-1.6.2.tar.gz
解壓nginx
[root@leixuesong ~]# tar zxvf nginx-1.6.2.tar.gz
進入解壓文件夾
[root@leixuesong ~]# cd nginx-1.6.2
編譯設置模塊
[root@leixuesong nginx-1.6.2]# ./configure –with-http_stub_status_mocule –prefix=/opt/nginx
安裝
[root@leixuesong nginx-1.6.2]# make && make install
nginx編譯安裝性能優化
1、在nginx 源碼文件找到auto/cc/gcc文件找到如下幾行
#debug
[root@leixuesong ~]# CFLASS=」$CFLAGS -g」
2、特定CPU優化CPU類型編譯
–with-cc-opt=」-O3″
–with-cpu-opt=CPU類型
查看CPU類型。太多了寫不完,如果想知道更多知識,可以去後盾人看看相關的教材。希望對你有用。
⑻ mac配置php-fpm,nginx運行多版本php
1、brew 安裝 php5.6 php5.7 nginx
2、配置php-conf
3、配置虛擬主機
安裝好brew
用brew 命令安裝,如果速度太慢或訪問不了,自行goole brew 換源
brew search php 查看可用的php版本
brew install [email protected] 安裝php5.6
brew install [email protected] 安裝php5.6
brew install nginx 安裝nginx
1、修改php5.6 php-fpm的埠為9056
cd usr/local/etc/php/5.6 # 到php5.6的目錄下
vi php-fpm.conf # 修改文件
listen = 127.0.0.1:9056 # 修改此埠
daemonize = yes # 修改為允許後台啟動php-fpm
2、修改php5.6 php-fpm的埠為9070
cd /usr/local/etc/php/7.1/php-fpm.d # 到php7.1的目錄下
vi www.conf # 修改埠
listen = 127.0.0.1:9056 # 修改此埠
vi php-fpm.conf # 修改文件
daemonize = yes # 修改為允許後台啟動php-fpm
3、啟動php-fpm
cd /usr/local/sbin # 到此目錄,建立兩個軟鏈接指向不同版本的php
切換到root用戶
./php-fpm56
./php-fpm71
啟動後可看到php-fpm的進程,則成功
ps-ef | grep php-fpm
cd /usr/local/etc/nginx/ # 到nginx的目錄下
復制默認的配置文件到server下(此目錄用來存虛擬主機文件)
這里我在server創建了這兩個
vi local.phpinfo56.com.conf # 修改本地域名和nginx代理到php-fpm埠,按照這種方法修改另一個
nginx # 啟動nginx
nginx -s reload # 修改配置文件,重新載入nginx
vi /etc /hosts # 修改host 加上映射關系
cd /usr /local/var/www # 在此目錄下建立一個index.php
echo "<?php phpinfo();" > index.php
在瀏覽器訪問可看到
⑼ 如何正確配置Nginx + PHP
先上配置的過程,下面是解釋。
⑽ 如何正確配置 Nginx 和 PHP
直接貼上代碼逐行進行講解,此處貼出一個能正常啟動php腳本的最簡nginx vhost配置:
[plain] view plain
server {
listen 8011;
server_name test.cn;
location ~ \.php?.*$ {
root /share/test;
fastcgi_pass 127.0.0.1:9000;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
1、第一個大括弧 server{ }:不必多說,代表一個獨立的server,
2、listen 8011:代表該server監聽8011埠
3、location ~ \.php?.*${
}:代表一個能匹配對應uri的location,用於匹配一類uri,並對所匹配的uri請求做自定義的邏輯、配置。這里的location,匹配了所有帶.php的uri請求,例如:http://192.168.244.128:8011/test.php/asdasd
http://192.168.244.128:8011/index.php等
4、root /share/test:請求資源根目錄,告訴匹配到該location下的uri到/share/teset文件夾下去尋找同名資源。
5、fastcgi_pass 127.0.0.1:9000:這行開始是本文的重點:這行代碼的意思是,將進入到該location內的uri請求看做是cgi程序,並將請求發送到9000埠,交由php-fpm處理。
6、fastcgi_param SCRIPT_FILENAME
$document_root$fastcgi_script_name;
:這行配置意思是:動態添加了一行fastcgi配置,配置內容為SCRIPT_FILENAME,告知管理進程,cgi腳本名稱。由於我的nginx中只有fastcgi_params文件,沒有fastcgi.conf文件,所以要使php-fpm知道SCRIPT_FILENAME的具體值,就必須要動態的添加這行配置。
7、include fastcgi_params; 引入fastcgi配置文件
以上就是最簡潔版的nginx啟動php腳本的最簡配置,當重啟nginx之後,在/share/test目錄下創建一個xx.php文件,輸入<?php
echo "hello world"; ?>保存,然後在瀏覽器中訪問localhost:8011/xx.php
就可以在網頁上顯示hello world了。