安装与配置nginx下的php (PHP-FPM模式)

如何:安装与配置nginx下的php (PHP-FPM模式)

准备工作

使用FreeBSD的Ports安装软件时,请一定先把Ports更新到最新版本

#portsnap fetch update

如果你是第一次使用portsnap,可能需要先执行

#portsnap extract

安装并启用nginx服务

首先,安装nginx:

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

在出现的选项中,可能有一些你不熟悉的选项存在,如果你不明白各个选项的含义,可以用下面的默认值:

[X] HTTP_MODULE               Enable HTTP module
[X] HTTP_ADDITION_MODULE      Enable http_addition module
[X] HTTP_CACHE_MODULE         Enable http_cache module
[X] HTTP_DAV_MODULE           Enable http_webdav module
[X] HTTP_FLV_MODULE           Enable http_flv module
[X] HTTP_GEOIP_MODULE         Enable http_geoip module
[X] HTTP_GZIP_STATIC_MODULE   Enable http_gzip_static module
[X] HTTP_IMAGE_FILTER_MODULE  Enable http_image_filter module
[X] HTTP_PERL_MODULE          Enable http_perl module
[X] HTTP_RANDOM_INDEX_MODULE  Enable http_random_index module
[X] HTTP_REALIP_MODULE        Enable http_realip module
[X] HTTP_REWRITE_MODULE       Enable http_rewrite module
[X] HTTP_SECURE_LINK_MODULE   Enable http_secure_link module
[X] HTTP_SSL_MODULE           Enable http_ssl module
[X] HTTP_STATUS_MODULE        Enable http_stub_status module
[X] HTTP_SUB_MODULE           Enable http_sub module
[X] HTTP_XSLT_MODULE          Enable http_xslt module

在命令执行完成后,使用编辑器把下面的内容添加到/etc/rc.conf中

nginx_enable="YES"

安装PHP-FPM及相关连的包

以root身份继续执行下面的操作

#cd /usr/ports/devel/pcre
#make install clean
#cd /usr/ports/devel/libtool
#make install clean
#cd /usr/ports/lang/php5
#make install clean
#cd /usr/ports/lang/php5-extensions
#make install clean

在php5-extensions的config页面中,需要勾选PHP-FPM项。

执行完成后,把下面的代码加入/etc/rc.conf以启用PHP-FPM

php_fpm_enable="YES"

同时还要创建一个php.ini文件:

#cp /usr/local/etc/php.ini-production /usr/local/etc/php.ini

同时可以编辑php.ini,把里面的timezone设置为Asia/Shanghai或者需要使用的时区。

启动服务

#/usr/local/etc/rc.d/php-fpm start
#/usr/local/etc/rc.d/nginx start

这样就成功启动了服务

配置虚拟主机运行PHP程序

准备网站目录

首先建立网站的目录和日志存放目录,日志即可以配置到/var/logs/nginx下面,也可以配置到任何你希望存放的位置。

mkdir /home/saharabear.com/public_html
mkdir /home/saharabear.com/logs

配置nginx.conf

可以直接参考下面的配置文件来修改/usr/local/etc/nginx/nginx.conf

user  nobody;
worker_processes  1;

error_log  logs/error.log;

pid        logs/nginx.pid;

events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;

    log_format  main  ‘$remote_addr – $remote_user [$time_local] "$request" ‘
                      ‘$status $body_bytes_sent "$http_referer" ‘
                      ‘"$http_user_agent" "$http_x_forwarded_for"’;

    sendfile        on;

    keepalive_timeout  65;

    gzip  on;

    # We define the virtual host here
    server {
        listen       208.62.123.122:80;
        server_name  saharabear.com www.saharabear.com;

        access_log  /home/saharabear.com/logs/access.log  main;

        location / {
            root   /home/saharabear.com/public_html;
            index  index.html index.htm index.php;
        }
    # Let nginx know how to handle PHP using fastcgi
        location ~ \.php$ {
            root           html;
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  /home/saharabear.com/public_html$fastcgi_script_name;
            # 上面这一行很重要,别忘了修改这里
            include        fastcgi_params;
        }

        location ~ /\.ht {
            deny  all;
        }
    }
}

重新启动nginx服务器就可以了

#/usr/local/etc/rc.d/nginx restart

配置虚拟主机运行使用Symfony2框架的PHP程序

对于PHP的Symfony2框架,配置nginx可能会有一些不同,比如Symfony2使用app.php和app_dev.php作为前端入口等等,可以参考下面的代码配置Symfony2的PHP程序

    server {
        listen       80;
        server_name  test.saharabear.com ;
        root /home/test.saharabear.com/symfony/web;
        charset utf-8;

        access_log  /home/test.saharabear.com/logs/access.log  main;
        error_log /home/test.saharabear.com/logs/errors.log;
        # strip app.php/ prefix if it is present
        rewrite ^/app\.php/?(.*)$ /$1 permanent;

        location / {
          index app.php;
          try_files $uri @rewriteapp;
        }

        location @rewriteapp {
          rewrite ^(.*)$ /app.php/$1 last;
        }

        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        location ~ ^/(app|app_dev)\.php(/|$) {
          fastcgi_pass   127.0.0.1:9000;
          fastcgi_split_path_info ^(.+\.php)(/.*)$;
          include fastcgi_params;
          fastcgi_param  SCRIPT_FILENAME    $document_root$fastcgi_script_name;
          fastcgi_param  HTTPS              off;
        }

        # deny access to .htaccess files, if Apache’s document root
        # concurs with nginx’s one
        #
        location ~ /\.ht {
            deny  all;
        }
    }

原文链接:https://wiki.freebsdchina.org/howto/n/php_php-fpm_nginx

FreeBSD下安装lighttpd支持php

FreeBSD下安装lighttpd支持php

有不恰当的地方欢迎指正By:ghw(gehaowu@gmail.com)

安装lighttpd

记得在SPAWNFCGI前打勾

[X] SPAWNFCGI  Depend on spawn-fcgi utility
#cd /usr/ports/www/lighttpd
#make config
#make install clean

安装php

模块自己看自己需要

#cd /usr/ports/lang/php5/ && make install clean
#cd /usr/ports/lang/php5-extensions/ && make install clean

配置lighttpd

编辑/usr/local/etc/lighttpd/lighttpd.conf,添加以下内容:

server.modules += ( "mod_fastcgi" )
fastcgi.server = ( ".php" =>
  (( "socket" => "/tmp/php-fastcgi.socket",
    "bin-path" => "/usr/local/bin/php-cgi",
     "min-procs" => 1,
     "max-procs" => 1,
     "max-load-per-proc" => 4,
     "bin-environment" => (
     "PHP_FCGI_CHILDREN" => "2",
    #"PHP_FCGI_CHILDREN" => "64",//这里进程数自己看着办
        "PHP_FCGI_MAX_REQUESTS" => "10000" ),
      "bin-copy-environment" => (
        "PATH", "SHELL", "USER" ),
      "broken-scriptfilename" => "enable",
     "idle-timeout" => 20
  ))
)

设置服务

启动lighttpd

#echo ‘lighttpd_enable="YES"’ >> /etc/rc.conf
#/usr/local/etc/rc.d/lighttpd start

网站跟目录是修改这行

server.document-root = "/usr/local/www/data/"

原文链接:http://wiki.freebsdchina.org/howto/n/php_fastcgi_lighttpd

FreeBSD 7.3下Nginx+PHP(php-fpm)配置笔记

FreeBSD 7.3下Nginx+PHP(php-fpm)配置笔记

都说Nginx的性能比Apache NB,找了很多相关的安装资料,终于实现完成了FreeBSD+Nginx+PHP的配置。网上多数Nginx+PHP的配置都是使用的spawn-fcgi,需要额外安装lighttpd或者单独安装spawn-fcgi,其实PHP自带的php-fpm也挺好用的。

一、安装Nginx

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

选上自己需要的模块

FreeBSD Nginx安装

二、安装PHP

# cd /usr/ports/lang/php52
# make install clean

记得选择FASTCGI和FPM模块

FreeBSD PHP5安装

然后安装php52-extensions

# cd /usr/ports/lang/php52-extensions
# make install clean

根据需要选择相关的模块

三、配置php-fpm

# vi /usr/local/etc/php-fpm.conf
根据实际环境修改如下参数:

<value name=”listen_address”>127.0.0.1:9000</value>
<value name=”owner”>www</value>
<value name=”group”>www</value>
<value name=”mode”>0666</value>
<value name=”max_children”>5</value>
<value name=”request_slowlog_timeout”>0s</value>
<value name=”max_requests”>500</value>

四、启动php-fpm

# vi /etc/rc.conf

php_fpm_enable=”YES”

# /usr/local/etc/rc.d/php_fpm start

五、配置Nginx

user  www www;
worker_processes  8;

events {
use kqueue;
worker_connections  51200;
}

http {
include       mime.types;
default_type  application/octet-stream;

server_names_hash_bucket_size 128;
client_header_buffer_size 32k;
large_client_header_buffers 4 32k;
client_max_body_size 8m;

sendfile        on;
tcp_nopush     on;
keepalive_timeout  65;

fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
fastcgi_buffer_size 64k;
fastcgi_buffers 4 64k;
fastcgi_busy_buffers_size 128k;
fastcgi_temp_file_write_size 128k;

gzip  on;
gzip_min_length  1k;
gzip_buffers     4 16k;
gzip_http_version 1.0;
gzip_comp_level 2;
gzip_types       text/plain application/x-javascript text/css application/xml;
gzip_vary on;

tcp_nodelay on;

server {
listen      80;
server_name  www.bsdart.org;
root  /data/web/htdocs;
index index.htm index.html index.php;

location ~ .*\.(php|php5)?$ {
fastcgi_pass   127.0.0.1:9000;
fastcgi_index  index.php;
include        fastcgi.conf;
}

error_page   500 502 503 504  /50x.html;
location = /50x.html {
root   html;
}
}
}

五、启动Nginx

# vi /etc/rc.conf

nginx_enable=”YES”

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

详解FreeBSD 8下部署Apache+MySQL+PHP 5

众所周知,在生产环境下配置Apache+PHP 5环境或Nginx+PHP 5环境还是很复杂的,即大家熟悉的LAMP或NAMP架构,就算按照详细的部署文档来安装的话也是一个较长和麻烦的过程;但这一切在FreeBSD下用ports就简化了,本人感觉特别适应于开发环境,特将FreeBSD 8下的部署过程记录如下,方便与大家交流共享。

一、安装Apache2.2

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

去掉IPV6
添加MySQL

安装完成后,需要编辑/etc/rc.conf文件,添加下面内容到/etc/rc.conf:

apache22_enable="YES"

配置Apache 2.2

安装完成后,备份/usr/local/etc/apache22/httpd.conf文件:

cp /usr/local/etc/apache22/httpd.conf /usr/local/etc/apache22/httpd.conf.bak

编辑/usr/local/etc/apache22/httpd.conf文件,以使Apache22 Server支持PHP:

vim /usr/local/etc/apache22/httpd.conf

1.大约354行

在AddType application/x-gzip .gz .tgz下面添加以下内容:

AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps

2.大约212行

添加’index.php’ 到’DirectoryIndex’ 主目录索引:

DirectoryIndex index.php index.html

3.第152行

DocumentRoot "/home/www"  #存放web的路径,根据自己需求更改

4.第178行

<Directory "/home/www">   #存放web的路径,这个根据自己需求更改

二、安装PHP 5.2

cd /usr/ports/lang/php52
make install clean

选择如下安装选项:

去掉IPV6
添加CLI、CGI、APACHE、SUHOSION、FASTCGI、PATHINFO

三、安装PHP 5.2-extensions扩展

cd /usr/ports/lang/php52-extensions
make config
make install clean

make config安装添加选项如下:

添加BZ2、CALENDAR、CTYPE、GD、GETTEXT、ICONV、MBSTRING、MCRYPT、MHASH、MYSQL、MYSQLI、OPENSSL、PCRE、POSIX、SESSION、SOCKETS、TOKENIZER、ZIP、ZLIB。

我在线上服务器的centos5.4下,一个个手动源码编译PHP 5的扩展包,感觉是件非常痛苦的事情;Apache如是,Nginx下亦如是;在FreeBSD 8下一切都简单了,这个过程有点长。

复制/usr/local/etc/php.ini-dist为/usr/local/etc/php.ini:

cp /usr/local/etc/php.ini-dist /usr/local/etc/php.ini

四、安装ZendOptimizer

cd /usr/ports/devel/ZendOptimizer
make install clean

安装完成提示如下:

********************************************************************************
You have installed the ZendOptimizer package.
Edit /usr/local/etc/php.ini and add:
[zend]
zend_optimizer.optimization_level=15
zend_extension_manager.optimizer="/usr/local/lib/php/20060613/Optimizer"
zend_extension_manager.optimizer_ts="/usr/local/lib/php/20060613/Optimizer_TS"
zend_extension="/usr/local/lib/php/20060613/ZendExtensionManager.so"
zend_extension_ts="/usr/local/lib/php/20060613/ZendExtensionManager_TS.so"
*********************************************************************

编辑php.ini,复制以上[Zend]内容到文本末尾:

vim /usr/local/etc/php.ini

重新启动你的Web Server.

/usr/local/etc/rc.d/apache22 restart

测试Apche Server对PHP和ZendOptimizer支持,在/home/www里面建立一个index.php,输入以下内容:

<?
phpinfo();
?>

我这里安装此版本为5.2.13,新的PHP已近更新至5.3.3,但是老版本的ZendOptimizer对其不支持,所以本着稳定就好的原则,继续使用5.2.13;

五、安装MySQL Server5.0

cd /usr/ports/databases/mysql50-server
make install clean

配置MySQL

安装完成后,需要编辑/etc/rc.conf文件,添加下面内容到/etc/rc.conf:

mysql_enable="YES"

复制文件:

cp /usr/local/share/mysql/my-medium.cnf /etc/my.conf

启动MySQL服务:

/usr/local/etc/rc.d/mysql-server start

新装的mysql是没有密码的,使用mysqladmin命令更改MySQL密码:

/usr/local/bin/mysqladmin -uroot password ‘你的密码’

例如:/usr/local/bin/mysqladmin -uroot password 12345678

六、安装PHPmyadmin

1.安装

cd /usr/ports/databases/phpmyadmin
make fetch  #只下载,不安装

PHPmyadmin解压以后直接使用了:

cp /usr/ports/distfiles/phpMyAdmin-3.3.2-all-languages.tar.bz2 /home/www    #/home/www为apache指定路径
tar zxvf phpMyAdmin-3.3.2-all-languages.tar.bz2
mv phpMyAdmin-3.3.2-all-languages phpmyadmin      #phpmyadmin文件名就为外部地址路径http://xxx.xxx.xxx.xxx/phpmyadmin

2.配置

cd /home/www/phpmyadmin
cp config.sample.inc.php  config.inc.php

3.修改

ee config.inc.php
cfg[‘blowfish_secret’]=’host’;            #随便输入,不要留空这个一定要设置
cfg[‘Servers’][$i][‘auth_type’]=’cookie’#设置认证方式,默认即可

4.设置权限

chmod 755 config.inc.php

这时候你就可以在内网用root等用户进行登陆管理了,PHPMyadmin的强大是有目共睹的,这也是它现在作为Linux/unix发行版的默认软件之一。

值得注意的是,基于线上环境的严谨性,我一般采用64位的Cenots系统,软件均采用源码安装;而以上所述,均是出于开发环境的考虑,即快速方便的部署测试服务器,如果用于线上环境,还需要注意的细巧还有许多,比如PHP要禁用危险的函数、Apache要考虑其Web安全及SSL证书(一个不小心就要考虑支持多域名的SSL证书)等、MySQL要考虑生产环境下的压力及备份等,这里细节繁多就不细述了。

原文链接:http://developer.51cto.com/art/201010/231233.htm

FreeBSD下Lighttpd+PHP+Mysql安装配置笔记

FreeBSD下Lighttpd+PHP+Mysql安装配置笔记

1,安装mysql

cd /usr/ports/database/mysql51-server
make install clean

2,安装lighttpd

cd /usr/ports/www/lighttpd
make install clean
(默认选项)

3,安装php5

cd /usr/ports/lang/php5
make install clean
(默认选项)

4,安装php5-extensions

cd /usr/ports/lang/php5-extensions
make install clean

增加GD,MBSTRING,MCRYPT,MYSQL,MYSQLI

5,配置lighttpd

vi /usr/local/etc/lighttpd.conf

取消需要用到模块的注释,mod_rewrite,mod_access,mod_fastcgi,
mod_simple_vhost,mod_cgi,mod_compress,mod_accesslog

取消fastcgi.server的注释
fastcgi.server = ( “.php” =>
( “localhost” =>
(
“socket” => “/var/run/lighttpd/php-fastcgi.socket”,
“bin-path” => “/usr/local/bin/php-cgi”
)
)
)

另:
touch /var/log/lighttpd.access.log
touch /var/log/lighttpd.error.log
mkdir /var/run/lighttpd
chown -R www:www /var/run/lighttpd
chown www:www /var/log/lighttpd.access.log
chown www:www /var/log/lighttpd.error.log

6,启动lighttpd和mysql

vi /etc/rc.conf

增加
mysql_enable=”YES”
lighttpd_enable=”YES”

执行
/usr/local/etc/rc.d/lighttpd start
/usr/local/etc/rc.d/mysql start

原文链接:http://garey.bsdart.org/2009/12/freebsd7-2%E4%B8%8Blighttpdphpmysql%E5%AE%89%E8%A3%85%E9%85%8D%E7%BD%AE%E7%AC%94%E8%AE%B0/

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