Debian Lenny安装nginx+PHP+MySQL傻瓜手记

新搞了个VPS,打算把Blog以及全套行头迁移过来。

以前的那套图省事,用了CentOS5 Kloxo AllinOne BOX。基本上依靠这个CP搞定了全套,主要是人懒不想折腾而已。这次换了个新的VPS提供商,心血来潮想折腾Debian。所以把过程记录下来,避免以后不折腾了却忘记自己当初怎么搭。

总体思路还是采取懒汉办法,有官方源的从官方源安装,没官方源找第三方社区源,再没有的话自己做deb,无论如何,避免从源代码直接编译。

首先把最简单的MySQL装上,用官方源,一句话搞定:

apt-get install mysql-server

MySQL配置文件稍后再搞,对于小Blog来说MySQL的优化意义不大。

其次是nginx,说实话这东西不熟,不过貌似最近挺流行,Debian Lenny也将其收进官方源了,那就简单apt之

apt-get install nginx

简单netstat看一下发现80已经在监听了,访问http://<IP>发现出现欢迎页“Welcome to nginx!”,接下来就是怎么让PHP在nginx上跑起来。

很没技术含量不是,很不幸后面的也没啥技术含量。一破Blog日IP不过300折腾个什么劲啊,不就是一个玩儿么。

PHP稍微麻烦点,因为Nginx没有像Apache那样的SAPI调用PHP的方式,而是使用FastCGI来调。这里就存在一个对PHP的FastCGI进程如何管理的问题。官方源的php5-cgi本身没有进程管理机制。一个比较好的选择是用spawn-fcgi(源自lighttpd的小东东)来起PHP进程,结果查了一下spawn-fcgi到现在还在sid呆着。还有一个选择是使用php-fpm来做FastCGI进程管理,这东西的灵活性比spawn-fcgi还要高不少,但代价是要往PHP源代码里打Patch才能用,也就意味着–要重新编译整个PHP。

简单权衡了一下,我觉得我还是想用php-fpm,但是又想偷懒不编译源代码,于是就求助于第三方二进制源了。随便搜了一下发现还真有正合适的– http://www.dotdeb.org/,这个社区致力于维护Debian下的LAMP类软件的非官方二进制包,恰好它们近期重做了PHP,使用了PHP5.3.1版本,并集成入了Suhosin安全补丁。最让人舒服的是吧php-fpm做成了一个php5-fpm的安装包,并给其加了SysV类的启动脚本,这样PHP的FastCGI方式即可以有自己单独的conf文件,又有单独的init.d控制脚本,可谓完美。

无废话说干就干。

修改/etc/apt/source.list,加入dotdeb的源设置:

deb http://php53.dotdeb.org stable all deb-src http://php53.dotdeb.org stable all

然后apt之:

apt-get update apt-get install php5-cgi php5-fpm

这样PHP就算完事了,简单验证一下,运行如下命令,观察phpinfo()输出是否正常:

php-cgi –i

再保险点看一下PHP的FastCGI进程有没有跑起来,ps aux|grep php,应该能看到有进程为”/usr/bin/php5-fpm –fpm-config /etc/php5/fpm/php5-fpm.conf”在跑。

剩下的事就是搞定nginx的配置文件把站点建好,并让其能调用后台的PHP。这个dotdeb社区源做的php5-fpm好心到都提供了一个nginx的example配置文件,放在/etc/php5/fpm/nginx-site-conf.sample,改改拿来用就好了。

我是将其复制到/etc/nginx/sites-enabled/opslife.com.conf,然后简单修改几个参数,改好的配置文件是这样:

# # nginx-site-conf.sample: # Php Site configuration for nginx [...]

手记:VPS上安装Nginx+PHP+FastCGI+MySQL

安装这一套的目的是为了看看在VPS这种低内存配置的环境下Nginx跑Wordpress的表现,至于为什么选这么一套搭配的原因就不废话了。

为了避免复杂度就没有使用源代码方式安装,用源代码确实是能安装到最新的版本,但简单看了一下各个Changelog,基本上用发行版自带的二进制包也都没什么问题,还是一切从简吧。

目前这个VPS跑得是Fedora8,因为基本上Host provider就只有这么老的货色了。

首先按照惯例更新一下二进制包管理器数据库:

yum update

然后是安装Nginx,PHP,MySQL,能装的先一股脑装上再慢慢配:

yum install nginx

yum install php

yum install mysql mysql-server

还有要处理FastCGI调用这个环节,PHP的二进制包已经包含了FastCGI支持,因此要做的只不过是弄一个FastCGI的进程管理器而已,用脚本写个简单的wrapper就可以了,不过看了一下Nginx的Wiki发现竟然推荐使用Lighttpd附带的spawn-fcgi工具实现,难道两者除了竞争对手还是合作伙伴吗?既然人家这么写咱也就这么用了吧,好在Lighttpd的包也非常小,顺便装了算了

yum install lighttpd-fastcgi

然后是配置工作了,首先在Nginx上把站点跑起来,修改/etc/nginx/conf.d/virtual.conf,让它变成这样:

# # A virtual host using mix of IP-, name-, and port-based configuration #

#server { #    listen       8000; #    listen       somename:8080; [...]

近期小结

国庆朋友来上海玩,于是全程陪同。在经历了几天地狱式的轧马路扫荡后,不得不承认体力真的大不如前了。
美罗城下面大食代有个“吐司工房”,有兴趣的可以去吃吃看,但我保证你去了就会知道饭菜究竟能做难吃到什么程度…….
上海的新疆不干正事团体也丝毫不比其它城市差,亲眼所见。
feedburner全面被和谐了,虽然在下这个破blog没什么人订阅,不过也还是转回来吧,目前使用feedsky的服务,顺手响应一下当今时髦,用自己的子域名来承载feed服务,也就是http://feed.dawnh.net/了,订阅我blog的同学麻烦更新你们自己的Reader了。
国庆期间赛事不断,特奥会这个咱们就不关注了。乒乓球世界杯团体赛有惊无险。另外最终要的是WCG2007中国拿到2枚银牌。PJ的星际争霸算是历史性突破,而Sky的魔兽3没达成3连冠真是可惜了。不过国内电竞的环境和氛围真的是越来越好了。这是当年还在上学时不敢想象的。可惜现在也没有什么热情去掺和了,熬个通宵看直播比赛已经是我能做到最多的了。
Windows Server 2008出了个RC0,不知什么时候微软也开始在版本号上作文章了。前几天升级了一下,该有的问题还都有,原来没有的也还没。最令人期待的WSV竟然是只能上64位系统且必须支持VT的CPU才能跑,遗憾…….
IIS7最近曝光度十足,模块式的设计吸引了足够多的第三方来添砖加瓦,微软和Zend合作了几年终于把PHP从CGI拉扯到ISAPI又拉扯到FastCGI,从非线程安全到线程安全又回归非线程安全,此时终于基本可以开花结果了。而进一步的合作将会更加紧密,商业大腕以及自由阵营,究竟谁赢了?看看昨天刚发布的消息:http://blogs.iis.net/bills/archive/2007/10/09/microsoft-announces-interoperability-improvements-for-php-and-microsoft-technologies.aspx
Linus终于宣布2.6.23内核final了,貌似不少发行版厂商都在等这一天,http://kerneltrap.org/Linux/2.6.23_Kernel_Finally,这应该是今天的事。NetBSD前几天也在RC,有大牛放出的MySQL性能测试结果挺好看,而FreeBSD 7也在为最后的Release做准备,真是一个丰收的季节。