2011年8月30日星期二

Debian 5 VPS下的nginx+php+mysql的解决方案

本文介绍在Debian 5 VPS下的nginx+php+mysql的解决方案,本方案使用php-fpm作为fastcgi的进程管理器。


本文基于64位的Debian 5 VPS,如果是32位的Debian VPS,请在相应部分做修改。


使用php-fpm就必须重新编译php,不能使用系统自带的php。MySQL使用Debian自带的,Nginx是从Debian官方软件库中下载的最新版本。


安装Nginx


Debian 5系统自带的nginx版本比较低,现在Nginx的新稳定版本0.7.61,即将发行的Debian 6里面带的是最新版本的nginx,测试后发现这个nginx在Debian 5下可以运行。我们在 http://ftp.us.debian.org/debian/pool/main/n/nginx/ 下载了Nginx的deb包,放到了 http://rashost.com/download/ 方便客户下载


安装命令:


dpkg -i nginx_0.7.61-3_amd64.deb
/etc/init.d/nginx start
mkdir -p /var/www/nginx-default
echo 'nginx ok'>/var/www/nginx-default/index.html
echo '<?phpinfo()?>' > /var/www/nginx-default/test.php


另外运行dpkg -L nginx命令可以看到nginx的文件都安装在哪些目录下面了


Debian下nginx的缺省网页目录是/var/www/nginx-default,这个目录安装的时候没有创建,我们是手工创建的。


通过浏览器访问,应该能看到nginx的缺省网页了,说明nginx正常工作了!


安装MySQL


我们使用Debian自带的MySQL,安装命令:


apt-get install mysql-server-5.0
/etc/init.d/mysql start


运行mysql -uroot -p命令,应该可以正常连接到MySQL


安装php & php-fpm


安装php所需要的库文件:


apt-get update
apt-get install libxml2 libldap-2.4-2 libmhash2 curl libpng3 libjpeg62 libsasl2-2 libmcrypt4


http://rashost.com/download/ 下载安装我们自己在Debian下编译的php-fpm:


cd /opt
tar zxf php-fpm-5.2.10-amd64.tar.gz
ln -s /opt/php/sbin/php-fpm /etc/init.d/php-fpm
update-rc.d -f php-fpm defaults
/etc/init.d/php-fpm start


整合


首先在/var/www/nginx-default目录下创建文件test.php,其内容很简单,只要下面一行:


<?phpinfo();?>


假设所在VPS的地址是debian5.rashost.com,这时通过浏览器访问http://debian5.rashost.com/test.php是得不到正确的显示结果的。


修改nginx的配置文件/etc/nginx/sites-enabled/default,在文件内搜索fastcgi_pass,修改该部分内容为:


      location ~ \.php$ {
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  /var/www/nginx-default/$fastcgi_script_name;
            include        fastcgi_params;
        }


注意,Debian下的nginx配置文件和centos下的区别比较大,Debian下把配置分割成多个文件了,推荐一个站点一个配置文件,我们修改的是/etc/nginx/sites-enabled/default。另外fastcgi_param参数后面的/var/www/nginx-default/部分,这是具体的网页目录,如果像Debian下那样写成$document_root不知道为什么就不工作了。


然后重启nginx:


/etc/init.d/nginx/restart


然后在浏览器中访问test.php页面,就应该能正确显示了,reboot VPS测试一下,各个模块应该都能自带启动。大功告成!

没有评论:

发表评论