FreeBSD安装与配置nginx下的php (FastCGI模式)

安装nginx

cd /usr/ports/www/nginx
make install clean

弹出config窗口,选择你需要的模块安装,安装成功后可以执行

echo ‘nginx_enable="YES"’ >> /etc/rc.conf.local

安装php的fastcgi

在config窗口选择支持fastcgi (由于不使用 Apache 来运行 php,故可去掉 APACHE 选项)。

安装spawn-fcgi

spawn-fcgi 先前是 lighttpd 的一部分,后独立成单独的项目。可使用 port 或 package 来安装:

pkg_add -r spawn-fcgi

如果希望自行编译,也可使用 port 安装:

cd /usr/ports/www/spawn-fcgi
make install clean

安装之后,在配置文件中将其设为启动:

echo ‘spawn_fcgi_enable="YES"’ >> /etc/rc.conf.local

注意:预设的 spawn_fcgi 子进程数量为 5 个。对于访问量较大的网站,应调整其设置,例如:

echo ‘spawn_fcgi_children="50"’ >> /etc/rc.conf.local

进程数对性能的帮助有限,请根据需要适当调整。

其他可配置的选项包括:

spawn_fcgi_app="/usr/local/bin/php-cgi" # 预设的应用程序名字。通常不需要改动。
spawn_fcgi_app_args="" # 启动此应用程序时使用的参数。通常不需要改动。
spawn_fcgi_pidfile="/var/run/spawn-fcgi.pid" # 用于重启、停止 spawn-fcgi 时的 PID 文件名字,通常不需要改动。
spawn_fcgi_username="www" # 执行 PHP 时使用的系统用户名。应使用预设值,或某个非特权用户。
spawn_fcgi_groupname="www" # 执行 PHP 时使用的系统组名。应使用预设值,或某个非特权组。
spawn_fcgi_chroot_dir="" # chroot的名字,用于限制 PHP 能够访问的目录范围。此配置会以“外科手术”的方式进行,请小心使用。
spawn_fcgi_bindaddr="127.0.0.1" # 监听的 IP 地址。需要与nginx中的相应配置相同。
spawn_fcgi_bindport="9000" # 监听端口。需要与nginx中的相应配置相同。
spawn_fcgi_bindsocket="" # 监听的 Unix socket 路径,需要与nginx中的相应配置相同。注意:一般来说,不必同时使用TCP和Unix socket监听。
spawn_fcgi_bindsocket_mode="0777" # Unix socket 的权限。个人建议 FastCGI 应与 nginx 使用同样的用户/组,和权限0660。
spawn_fcgi_children="5" # 子进程数量。
spawn_fcgi_max_requests="1000" # 每个 PHP 进程可以服务的请求数量。这个设置主要是避免php内部的内存泄漏等导致的问题,如果太小会导致php反复启动,故对性能有负面影响。
spawn_fcgi_web_server_addrs="" # Web服务器的IP地址列表。对于只监听本地端口的服务来说没有任何必要。
spawn_fcgi_allowed_env="" # 额外的允许传给 PHP 的环境变量。通常不应另外设置。
spawn_fcgi_path_env="/sbin:/bin:/usr/sbin:/usr/bin:/usr/games:/usr/local/sbin:/usr/local/bin" # FastCGI程序使用的 PATH。通常不需要另外设置。

启动服务

启动nginx

/usr/local/etc/rc.d/nginx start

启动php的fastcgi模式

/usr/local/etc/rc.d/spawn_fcgi start

原文出自:http://wiki.freebsdchina.org/howto/n/php_fastcgi_nginx