Dec 282009
 

新搞了个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 webserver
#
# 1. set server root /path/to/your/website;
# 2. Rename this file. Copy it to /etc/nginx/sites-available, /etc/nginx/sites-enabled
#    or otherwise ensure that this file is included by the nginx.conf
# 3. Restart nginx webserver, and php-fpm service.
#

server {

        root  /home/dawnh/opslife.com;

        server_name     opslife.com www.opslife.com d9.opslife.com;
        listen          80;

        access_log  /var/log/nginx/opslife.com.access.log;

        location / {
                index  index.html index.htm index.php;
        }

        #error_page  404  /404.html;

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
                root   /var/www/nginx-default;
        }

        # pass the *.php scripts to php-fpm listening on tcp port 9000
        #
        location ~ \.php$ {

                fastcgi_pass   127.0.0.1:9000;
                fastcgi_index  index.php;

                include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param SERVER_NAME $http_host;
        fastcgi_ignore_client_abort on;
        }

}

这样站点配置就算是完成了,/etc/init.d/nginx restart重启后,新站点应该就会跑起来了,使用域名opslife.com、www.opslife.com、 d9.opslife.com都应该访问到新建立的站点。

最后再验证一下,扔一个info.php放到/home/dawnh/opslife.com,内容就一句:

<?php phpinfo();?>

由于主域名还没指过来,先用子域名访问测试,直接访问http://d9.opslife.com/info.php,看到返回正确的phpinfo信息。到此最后一步也算顺利完成。

 

剩下就是把wordpress的东西从老的VPS迁移过来了,依旧是没什么技术含量。有空再记录。

  15 Responses to “Debian Lenny安装nginx+PHP+MySQL傻瓜手记”

  1. 我用你的方法步骤;最后php却跑不起来 显示不出来内容!!!!
    php-cgi -i

    d>

    posix

    Revision $Revision: 289424 $

    Reflection

    Reflectionenabled
    Version $Revision: 287991 $

    session

    Session Support enabled
    Registered save handlers files user
    Registered serializer handlers php php_binary wddx

    Directive<t^^^

    但是:
    ps aux|grep php,应该能看到有进程为”/usr/bin/php5-fpm –fpm-config /etc/php5/fpm/php5-fpm.conf”在跑

    请问是何原因?谢谢

  2. 我是在虚拟机上做的

  3. 可能是fastcgi进程没有启动,试试看运行/etc/init.d/php5-fpm start后再ps aux|grep php

  4. 我的空间用移动的网络不能访问,以前可以,现在WAP,WLAN,内网都不行,网通可以,是不是IP在黑名单里了?有没啥法子解决一下?或确认一下问题所在?

  5. 呵,昨晚在手机上发完提示ERROR,居然显示出来了。
    dawnh 星条旗,你牛~~~ 呵呵

  6. 这次你用的是哪家VPS呢,可以推荐下么?我也弄一个。。

  7. d9host.com,不过目前blog还没有迁移过来,我完全把这个Debian当实验机来玩了。x同学,你的空间现在是哪个域名和IP?

  8. 博客不错!

  9. 我用的ramhost,性价比还是相当不错的。

  10. 博主可否在你这个nginx上配置https证书并就此写篇文章?我试了好多次都不成功

  11. etc/nginx/sites-enabled/opslife.com.conf

    我没那个opslife.com.conf那个文件。只有一个default。怎么办?

  12. opslife.com.conf是我自己建立的,你可以新建一个,名字随意,只要在/etc/nginx/sites-enabled/这个路径下所有的.conf文件都会被包含到nginx的配置文件中去。

  13. 幸会。
    我之前也用的是这个主题,花了很多时间定制了。上次WP3.0升级不完全,网站不能访问,我干脆做成了wiki。

    现在用的是lighttpd,基本可以,就是有时候偶尔停止运行。想尝试下一nginx。今天有空就试试吧。

    我有三个域名,所以还要加上虚拟主机的配置。slicehost上有虚拟主机的教程。

    另,我用的主机是2host,优惠时8刀,512M内存,感觉相当的值。

  14. [...] 2010年7月15日 wenhui 发表评论 阅读评论 来源:http://opslife.com/install-nginx-php-mysql-on-debian-lenny/ 新搞了个VPS,打算把Blog以及全套行头迁移过来。 [...]

  15. [...] Debian Lenny安装nginx+PHP+MySQL傻瓜手记 | Solo Estoy 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。 (tags: vps hosting nginx debian) [...]

 Leave a Reply

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>