存档

‘nginx’ 类别的存档

FreeBSD 下运行PHP 高负载下临时文件的加速

最近有一台服务器经常发生500错误,紧急将部分服务转移走后对服务器进行了一段时间的观察,发现服务器对硬盘的IO操作非常频繁,这台服务器也是虚拟机结构,同一个物理服务器下有多台FreeBSD的WEB在运行,本身IO就非常慢,如果IO再如此频繁的话势必造成整台服务器性能低下。

通过分析确认要的IO存取都是由PHP的Session文件造成的,而FreeBSD的/var/tmp并非RAM盘,因此性能低下。最终把/var/tmp改成RAM盘后性能明显提升,操作如下,这里开启了一个256M的RAM盘。(以下代码可以直接放至/etc/rc.local中)。另外听同事说CentOS的/var目录本身就是RAM盘,所以使用CentOS不需要这样做,看来freeBSD真的太保守了。

/sbin/mdconfig -a -t swap -s 256M -u 1
/sbin/newfs -U -i 512 -b 4096 md1
/sbin/mount /dev/md1 /mnt/md1
/bin/mkdir /mnt/md1/tmp
#/bin/ln -s -f /mnt/md1/tmp /var/tmp
/bin/mkdir /mnt/md1/fastcgi_temp
#/bin/ln -s -f /mnt/md1/fastcgi_temp /usr/local/nginx/fastcgi_temp

/sbin/mdconfig -a -t swap -s 256M -u 1

/sbin/newfs -U -i 512 -b 4096 md1

/sbin/mount /dev/md1 /mnt/md1

/bin/mkdir /mnt/md1/tmp

#/bin/ln -s -f /mnt/md1/tmp /var/tmp  (只需要执行一次)

在FreeBSD上安装Nginx+PHP

原创内容,如需转载,请联系作者:easy@mpnew.com
由PfSense防火墙开始接触FreeBSD,感觉FreeBSD不仅功能强大,而且非常易用。特别是因为公司的需要,现在的业务都运行在虚拟机上,FreeBSD的轻巧也让我感到更加适合运用在Web环境中,特别是自己重新编译内核后整个系统启动超快,安装后不到200M的硬盘占用,内存占用也不到30M左右。

以下是以FreeBSD 7.0 环境为例:
注:建议安装FreeBSD是使用最小化安装,有时间我会介绍一下在Vmware环境下的最小化编译。
一、安装nginx
1:首先使用Sysinstall 安装PCRE Library
2:configure   &&make &&make install
Nginx安装依赖PCRE,其它都非常简单,最初我安装的时候都是自己编译相关依赖的库,最后发现FreeBSD安装盘带的版本也不低,而且相关库对性能也没什么影响,使用安装盘安装可以省下不少时间。另外在configure还有很多参数,但即使你不带任何参数,编译出一个稳定的nginx是没问题的。如果你需要SSL记得 ./configure –with-http_ssl_module。
Nginx相关可参考:www.nginx.net

二、安装PHP
1、使用Sysinstall安装以下组件:
1):curl
2):libiconv
3):png/jpeg  (如果需要GD库支持png或jpeg的话)
4):libxml2
5):autoconf (如果不需要安装任何扩展可以不安装)
6:perl (如果不需要安装任何扩展可以不安装/安装autoconf时自动安装)
7:mysql-client (如果不需要mysql 扩展可以不安装)
2、下载libmcrypt编译安装,我现在用的是libmcrypt-2.5.8 这个版本。
3、配置PHP、编译、安装,推荐的配置:
./configure –enable-force-cgi-redirect –with-mcrypt –enable-inline-optimization –with-curl –enable-fastcgi –with-zlib  –with-gd

4、安装需要的扩展:
1)Mysql:如果需要Mysql扩展的话进入源码目录的ext/mysql,首先要执行:/usr/local/bin/phpize ,执行完成后就可以按通常的方法 :./configure && make && make install

2)GD:如果需要GD库,同样的进入ext/gd,执行:/usr/local/bin/phpize,然后:./configure && make && make install
3)安装Xcache加速扩展,Xcache可以从:http://xcache.lighttpd.net/ 下载。下载解压,安装方法与上面的扩展一样。

5、FastCGI启动代理:由于Nginx不能直接支持PHP,因此你需要自己管理FastCGI,一般常用的有两种办法管理,一种是使用Lighttpd里的spawn-fcgi,还有一种是使用PHP的fpm补丁,理论上使用fpm补丁后功能更加强大一些,不过我使用spawn-fcgi比较习惯。spawn-fcgi可以自己下载lighttpd编译后提取,不过你可以以直接下载我编译好的文件。

三、配置及脚本
现在Nginx与PHP都已经安装好了,但要想正常使用还需要做一些配置才行。

Nginx的启动文件在:/usr/local/nginx/sbin下,配置文件一般建议放在/usr/local/nginx/conf下,自己通过命令管理nginx是比较麻烦的事,在这里我已经准备了一些脚本,你可以拿过去直接使用:
1、下载:nginx.conf到/usr/local/nginx/conf 下面。
2、下载:fcgi.conf到/usr/local/nginx/conf下面。
3、下载:php.ini到/usr/local/nginx/conf下面。
4、下载:spawn-fcgi到/usr/local/nginx/sbin下面。
5、下载:fcgi.sh到/usr/local/nginx/sbin下面。
6、下载:nginx.sh到/usr/local/nginx/sbin下面。

好了,记得把spawn-fcgi、fcgi.sh、nginx.sh的权限改为651,这个时候你可以执行:
1、/usr/local/nginx/sbin/fcgi.sh start
2、/usr/local/nginx/sbin/nginx.sh start
执行完成后就可以使用http://server 来访问服务器了,网站存放在:/usr/local/www目录下,可以先放一个phpinfo页面查看效果,另外很多细节的配置分别是nginx.conf、fcgi.sh、nginx.sh几个文件里,建议在服务器能够正常运行后再做调整。
目前了解nginx最好的网站就是:www.nginx.net ,如果有不了解的地方可以直接访问:http://wiki.codemongers.com/Main 。