Nginx HTTP Server + PHP5(with fast-cgi和xcache)在Ubuntu Feisty Fawn

Nginx HTTP Server + PHP5(使用fast-cgi和xcache)在Ubuntu Feisty Fawn

这个HowTo描述了使用php5支持(通过FastCGI)实现Nginx。 fast-cgi进程将通过spawn-fcgi启动。

做什么的? Nginx是一个很好的替代Apache,具有非常低的内存占用,与Lighttpd相反,不会随着时间的推移而遭受内存泄漏。 然后,您可以使用剩余的所有内存来释放mysql的权力,例如通过增加默认查询缓存。

我们首先安装php5,因为我们以后需要它,建立至关重要。

 apt-get install php5-cli php5-cgi php5-xcache build-essential

请注意,xcache必须通过在/ etc / php5 / cgi /中的php.ini中添加以下行来手动实现(请根据您的系统调整此配置)

[xcache-common]
extension = xcache.so
[xcache.admin]
xcache.admin.user = "mOo"
; xcache.admin.pass = md5($your_password)
xcache.admin.pass = ""
[xcache]
; ini only settings, all the values here is default unless explained
; select low level shm/allocator scheme implemenation
xcache.shm_scheme =        "mmap"
; to disable: xcache.size=0
; to enable : xcache.size=64M etc (any size > 0) and your system mmap allows
xcache.size  =                64M
; set to cpu count (cat /proc/cpuinfo |grep -c processor)
xcache.count =                 1
; just a hash hints, you can always store count(items) > slots
xcache.slots =                8K
; ttl of the cache item, 0=forever
xcache.ttl   =                 0
; interval of gc scanning expired items, 0=no scan, other values is in seconds
xcache.gc_interval =           0
; same as aboves but for variable cache
xcache.var_size  =            64M
xcache.var_count =             1
xcache.var_slots =            8K
; default ttl
xcache.var_ttl   =             0
xcache.var_maxttl   =          0
xcache.var_gc_interval =     300
xcache.test =                Off
; N/A for /dev/zero
xcache.readonly_protection = Off
; for *nix, xcache.mmap_path is a file path, not directory.
; Use something like "/tmp/xcache" if you want to turn on ReadonlyProtection
; 2 group of php won't share the same /tmp/xcache
; for win32, xcache.mmap_path=anonymous map name, not file path
xcache.mmap_path =    "/dev/zero"

; leave it blank(disabled) or "/tmp/phpcore/"
; make sure it's writable by php (without checking open_basedir)
xcache.coredump_directory =   ""
; per request settings
xcache.cacher =               On
xcache.stat   =               On
xcache.optimizer =            On
[xcache.coverager]
; per request settings
; enable coverage data collecting for xcache.coveragedump_directory and xcache_coverager_start/stop/get/clean() functions (will hurt executing performance)
xcache.coverager =          Off
; ini only settings
; make sure it's readable (care open_basedir) by coverage viewer script
; requires xcache.coverager=On
xcache.coveragedump_directory = ""

即使您的php配置尚未加载,您现在也可以这样做,因此当Nginx和fcgi进程启动时,所有内容都将处于良好状态。

下一个:我们得到最新的稳定版本的Nginx。 Feisty提出的是史前的。 幸运的是,有一个地方可以获得最新的稳定版本,或者如果你是冒险的话,最新的版本。 所以这里我们去:

 wget http://technokracy.net/nginx/nginx_0.5.32~grrr-1_i386.deb

(请注意,如果您正在AMD上运行,请使用amd64替换i386)

然后:

 sudo dpkg -i nginx_0.5.32~grrr-1_i386.deb

Nginx现在启动并运行在默认端口8000(以防万一你已经有Apache或其他端口80)。

默认的根文件夹是Nginx-default,位于/ var / www /中

要改变它,并开始听fast-cgi,我们将在下面启动,你必须打开/ etc / nginx / sites-available / default

 vi /etc/nginx/sites-available/default

您可以找到所有明显的选项来更改和添加(或取消注释原始php段落):

        location ~ \.php$ {
        include /etc/nginx/fastcgi_params;
        fastcgi_pass  127.0.0.1:9000;
        fastcgi_index index.php;
        fastcgi_param  SCRIPT_FILENAME  /var/www/nginx-default$fastcgi_script_name;
    }

我们刚刚要求Nginx在9000端口上听fcgi。所以我们现在要开始fcgi进程了。 我已经选择使用spawn-fcgi并使自己的init脚本(因此该过程将在重新启动后启动)。 要有spawn-fcgi,你必须配置lighttpd,但不需要安装它。 我们来抓最新版本:

 wget http://www.lighttpd.net/download/lighttpd-1.4.18.tar.bz2
 tar -xvjf lighttpd-1.4.18.tar.bz2 
cd lighttpd-1.4.18
 ./configure
 make
 cp src/spawn-fcgi /usr/bin/spawn-fcgi

请注意,我们没有键入make install ,所以lighttpd没有运行!

然后我们创建一个shell脚本,我们可以调用php-fastcgi或任何你想要的东西,并将该文件放在/ usr / bin /中 ,使其简单(因为php5-cgi和spawn-fcgi已经在那里了...)。

 touch /usr/bin/php-fastcgi

然后编辑它:

 vi /usr/bin/php-fastcgi

并添加以下内容:

#!/bin/sh
/usr/bin/spawn-fcgi -a 127.0.0.1 -p 9000 -u www-data -f /usr/bin/php5-cgi

这意味着每次调用此脚本时,fcgi将在端口9000上为用户www-data(默认用户)生成。

为了使其在启动时工作,我们现在需要创建一个init脚本:

 touch /etc/init.d/init-fastcgi

编辑并添加:

 vi /etc/init.d/init-fastcgi
#!/bin/bash
PHP_SCRIPT=/usr/bin/php-fastcgi
RETVAL=0
case "$1" in
    start)
      $PHP_SCRIPT
      RETVAL=$?
  ;;
    stop)
      killall -9 php
      RETVAL=$?
  ;;
    restart)
      killall -9 php
      $PHP_SCRIPT
      RETVAL=$?
  ;;
    *)
      echo "Usage: php-fastcgi {start|stop|restart}"
      exit 1
  ;;
esac      
exit $RETVAL

您可能需要通过键入以更改权限:

 chmod 755 /etc/init.d/init-fastcgi

检查它是否可以通过键入:

 /etc/init.d/init-fastcgi start

您应该有一个来自spawn-fcgi的归因归因于PID过程的答案。 使现在重新启动后的一切工作类型:

 update-rc.d init-fastcgi defaults

我们完成了 要检查PHP是否正常工作,您可以先输入:

 ps ax | grep php

要检查Nginx是否正在监听php,请在空的php文件中创建一个echo命令:

<? echo phpinfo(); ?>

并将其放在您的Nginx目录中。 你应该看到所有的php conf与xcache模块一起。

赞(52) 打赏
未经允许不得转载:优客志 » 系统运维
分享到:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏