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模块一起。