❶ 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
❷ 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
[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;
}
❹ 求教docker下部署nginx和php-fpm,但fpm无法被解析
配置如下:
location ~* \.php$ {
fastcgi_index index.php;
fastcgi_pass 172.17.0.178:9000;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
}