如何在FreeBSD中安装配置Nginx FastCGI PHP
时间:2019-11-20 08:53:59 来源:igfitidea点击:
在Nginx 中如何安装配置PHP启用FastCGI支持?
很容易将php配置为Nginx下的FastCGI应用程序。
需要安装下面软件:
- spawn-fcgi程序 –用于生成FastCGI进程。
- start.php.sh 用于停止/启动/重新启动php fastcgi进程的shell脚本。
安装php5
在FreeBSD中安装php
# cd /usr/ports/lang/php5 # make config # make install clean
还安装了必需的php扩展名,例如php-msyql,php-gd等:
# cp /usr/local/etc/php.ini-recommended /usr/local/etc/php.ini # cd /usr/ports/lang/php5-extensions/ # make install clean
安装spawn-fcgi
安装最新的spawn-fcgi:
# pkg_add -r -v lighttpd
输出示例:
scheme: [ftp] user: [] password: [] host: [ftp.freebsd.org] port: [0] document: [/pub/FreeBSD/ports/amd64/packages-7.0-release/Latest/lighttpd.tbz] ---> ftp.freebsd.org:21 looking up ftp.freebsd.org connecting to ftp.freebsd.org:21 > USER anonymous
现在,您可以使用/usr/local/bin/spawn-fcgi交换进程。
可以将/usr/local/bin/spawn-fcgi复制到/root或其他目录,
然后执行以下命令删除lighttpd软件包:
# cp /usr/local/bin/spawn-fcgi /root/ # pkg_delete -v lighttpd-1.4.18_1 # cp /root/spawn-fcgi /usr/local/bin/spawn-fcgi
现在,可以启动PHP Fastcgi,如下所示:
# /usr/local/bin/spawn-fcgi -a 127.0.0.1 -p 9000 -u www -g www -f /usr/local/bin/php-cgi
其中
-a 127.0.0.1
:PHP FastCGI绑定IP地址,Nginx将连接到该IP地址。-p 9000
:PHP FastCGI的端口号,Nginx将连接到该端口号。-u www
:PHP FastCGI用户名。-g www
:PHP FastCGI组名。-f/usr/local/bin/php-cgi
:PHP5 fastcgi二进制文件的路径。
检查php是否以FastCGI运行:
# sockstat -4 | grep 9000
输出示例:
www php-cgi 8998 0 tcp4 127.0.0.1:9000 *:* www php-cgi 8997 0 tcp4 127.0.0.1:9000 *:* www php-cgi 8996 0 tcp4 127.0.0.1:9000 *:* www php-cgi 8995 0 tcp4 127.0.0.1:9000 *:* www php-cgi 8994 0 tcp4 127.0.0.1:9000 *:* www php-cgi 8993 0 tcp4 127.0.0.1:9000 *:*
启动/停止PHP FastCGI进程的Shell脚本
php.cgi.sh
#!/bin/sh # NGINX FastCGI php5 startup shell script # Set ME # PROVIDES=php-cgi LIGHTTPD_FCGI=/usr/local/bin/spawn-fcgi SERVER_IP=127.0.0.1 SERVER_PORT=9000 SERVER_USER=www SERVER_GROUP=www PHP_CGI=/usr/local/bin/php-cgi PGREP=/bin/pgrep KILLALL=/usr/bin/killall ### No editing below #### cmd= pcgi_start(){ echo "Starting $PROVIDES..." $LIGHTTPD_FCGI -a $SERVER_IP -p $SERVER_PORT -u $SERVER_USER -g $SERVER_GROUP -f $PHP_CGI } pcgi_stop(){ echo "Killing $PROVIDES..." $KILLALL $PROVIDES } pcgi_restart(){ pcgi_stop pcgi_start } pcgi_status(){ $PGREP $PROVIDES > /dev/null [ $? -eq 0 ] && echo "$PROVIDES running" || echo "$PROVIDES NOT running" } pcgi_help(){ echo "Usage:# chmod +x php.cgi.sh # php.cgi.sh start # sockstat -4 | less{start|stop|restart|status}" } case ${cmd} in [Ss][Tt][Aa][Rr][Tt]) pcgi_start;; [Ss][Tt][Oo][Pp]) pcgi_stop;; [Rr][Ee][Ss][Tt][Aa][Rr][Tt]) pcgi_restart;; [Ss][Tt][Aa][Tt][Uu][Ss]) pcgi_status ;; *) pcgi_help ;; esac
启动PHP FastCGI:
# /php.cgi.sh stop
要停止php FastCGI,请执行:
# vi /usr/local/etc/nginx/nginx.conf
将Nginx Web服务器连接到PHP FastCGI进程
打开nginx配置文件:
location ~ \.php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /websites/example.com/http$fastcgi_script_name; include fastcgi_params; }
添加下面配置,将PHP脚本传递给FastCGI服务器进行处理:
server { listen 80; server_name theitroad.com www.theitroad.com; access_log /var/log/nginx/theitroad.com/access.log main; location / { root /home/www/theitroad.com/http; index index.php index.html index.htm; } error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/local/www/nginx-dist; } # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 location ~ \.php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /home/www/theitroad.com/http$fastcgi_script_name; include fastcgi_params; } location ~ /\.ht { deny all; } }
站点配置示例:
# nginx -c /usr/local/etc/nginx/nginx.conf -t # /usr/local/etc/rc.d/nginx restart
重启Nginx Web服务器
<?php phpinfo(); ?>
使用以下代码测试php:
test.php
##代码##