小内存VPS之Ubuntu配置LNmP
2012.04.02 | 天气: 阴 | 标签: Nginx, php, RR, 技术, 折腾, 网站前言
作为Ubuntu fans,连VPS都是装Ubuntu的,但是因为内存太小(256M),传说中的LAMP(Linux+Apache+Mysql+PHP),因为内存使用率很容易就100%,只好用LNmP(Linux+Nginx+sqlite+PHP-fastcgi)。而网上的教程基本针对CentOS,就连用了Ubuntu的也是用LNMP安装包——从源代码开始安装!!而且把程序都装到/usr/local下,这样很不符合Ubuntu的包管理精神,而网上的教程基本上是一篇(都是互相抄袭嘛)。因此我想通过本文告诉大家,小内存下的Ubuntu不用编译也可以很好地使用,以下是集合我的实际配置经历和网上文章整理
纯粹在apt-get下管理软件,并配置出适合小内存VPS运行的服务器套装。
别看广告,看疗效
去掉我管理时连接ssh和bash(多了2M左右),内存最大占用只有60M,包括sendmail这种内存大头。当然现在VPS上才跑着一个Typecho(博客程序)和一个大波(推忒API),就算按一个站点要15M左右(独立php-cgi+nginx进程),多出来的200M,应该还能跑10个左右这样的站点哈,特别对是流量比较小的个人博客,简直是太合适了。
配置Ubuntu
首先在VPS面板安装好Ubuntu 10.04后(是有点老,不过文中命令条目可以跨LTS版本执行),删除apache2和mysql-serverapt-get remove apache2 mysql-server-core bind9接下来是安装Nginx php-cgi
apt-get install php5-cgi nginx注:网上说的fastcgi其实和这个是一样的,我个人理解是Nginx把得到的参数通过CGI接口转接给PHP进行处理而已。而Spawn-FCGI就不用下载了,网上那些用了Nginx还去下载LightHttpd的文章真是不知道怎么说了。为什么?请看什么是CGI、FastCGI、PHP-CGI、PHP-FPM、Spawn-FCGI?
配置PHP-CGI启动项
添加php-cgi作为常驻内存项目,减少服务器开支
wget http://mengzhuo.org/blog/wp-content/uploads/2012/04/php-fastcgi.txt && chmod +x php-fastcgi.txt && mv php-fastcgi.txt /etc/init.d/php-cgi或者手动复制php-fastcgi到/etc/init.d/下面
可能需要编辑文件里面的两项
BIND=/tmp/php.socket #绑定UNIX通道作为CGI传递的路径
PHP_FCGI_CHILDREN=2 #控制进程数(越多程序速度越快,当然内存消耗越大)
修改好后,再运行update-rc.d php-cgi defaults && service php-cgi start,把这个启动项作为默认启动项,并启动。
配置Nginx
具体网站程序配置,最好网上找,我这里要说的是upstream和event的设定
/etc/nginx/nginx.conf下面要添加
upstream php {
server unix:/tmp/php.socket;
}
events {
worker_connections 1024;
use epoll;
}
然后再具体的网站程序里要添加:
location ~ \.php {
#你的程序配置
fastcgi_pass php;
}
添加好以后用service nginx reload重载即可。
附上我的Typecho的配置文件:
location ~* ^.+\.php(\/.*)*$ {
try_files $uri =404;
include /etc/nginx/fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_split_path_info ^((?U).+\.php)(/?.+)$;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_pass php;
}
if (!-e $request_filename) {
rewrite ^(.*)$ /index.php$1 last;
}
结尾啦
这样就基本差不多了,重启或者是其他关掉server之后,内存是不是省了很多,又不需要编译这么长的时间呢。




