now is powered by nginx8.50 php5.3.3 php-fpm

良好的网站响应速度对浏览者用户体验和SEO都有积极作用。如果能够通过选择不同的服务器环境来达到占用更少的资源达到更快的网站速度,那么,另一方面也可以节省钱包的花费。在linode上面购买了512M的VPS,原先安装了webmin面板,apache虽然功能很全面,但是性能却较之新兴的nginx逊色;同时,面板本身占用了相当多的资源。512M的内存运行起来相当吃力,服务器经常出现500错误。调试-测试了近一个月时间,没有得到一个满意的结果,只能放弃了好用的webmin和apache.

经过几天的努力,尝试了yum,源码编绎各种方法进行安装nginx,reload VPS二十次+。终于在安装的方便快速方面(能用repo进行yum的选择yum方式),安全性(所有的都来自官方或者安全的ius源两个地方),版本的新进(这也是为什么我非要自己动手进行安装的原因)得到一个比较满意的结果。

主要的特点:

A:用nginx取代了apache,

B:php采用了5.3.3版本,这个版本已经将php-fpm内置,并且采用了ini格式文本。

主要分为三个部分:

一:服务器环境的搭建

二:多站点配置

三:各种优化及安装配置文件

四:一些tips

一、安装篇:服务器环境的搭建

从asp到jsp再到php,这就是我接触的语言的顺序,相应的从iis到tomcat再到apache.对自己要求不高,只要能看懂简单的语言并且修改一下即可,最终被php众多的开源程序所吸引,在这里我只要修改再修改,不会的google代码然后再修改。好像跑题了,在最终决定用nginx取代apache之前,曾经尝试过用张宴的方法安装了个站点进行测试,也有相关的人士进行的专业级别的测试(在我看来,链接在此)。最终让我决定投奔nginx.

1、安装EPEL 和 IUS-Community repo:

rpm -ivh http://dl.iuscommunity.org/pub/ius/stable/Redhat/5/x86_64/epel-release-1-1.ius.el5.noarch.rpm
rpm -ivh http://dl.iuscommunity.org/pub/ius/stable/Redhat/5/x86_64/ius-release-1.0-6.ius.el5.noarch.rpm

修改repo文件,原因在此(https://bugs.launchpad.net/ius/+bug/591609):

vi /etc/yum.repos.d/ius.repo

#注释掉下面这一行
mirrorlist=http://dmirr.iuscommunity.org/mirrorlist?repo=ius-el5&arch=$basearch
#增加这一行
baseurl=http://dl.iuscommunity.org/pub/ius/stable/Redhat/5.5/$basearch

现在可以直接通过yum 安装php5.3.3 php-fpm和mysql51(ius的最近稳定版的mysql是5.14的,可以自己用官方的rpm包安装最近版的mysql.)及nginx7.

可以通过:
yum list | grep -w \.ius\.

查看ius可用的yum源。

2、安装php

然后yum install相应的包,如安装php5.3.3 php-fpm则直接用

yum install php53-fpm

如果yum源里面没有出现php-fpm,但是http://dl.iuscommunity.org/pub/ius/里面有的

则可以直接用:

rpm -ivh http://dl.iuscommunity.org/pub/ius/stable/Redhat/5.5/x86_64/php53-fpm-5.3.3-4.ius.el5.x86_64.rpm

来安装php-fpm;

3、安装mysql

yum install mysql51-server -y

nginx的yum源只有nginx7稳定版本的,另外编绎nginx实在轻松的一件事,所以采用了手动安装:

先升级环境(其实这个是第一步做的,但是好像这时候做也没用问题)

安装php的其它组件:

yum install php53-cli php53-common php53 php53-devel php53-mysql php53-xmlrpc php53-xml php53-gd php53-pdo php53-tidy php53-mcrypt php53-mbstring

以上基本上可以正常运行wordpress,drupal等大部分php+mysql程序了,如果有什么特殊的需求,建议先从ius的包里查看有没有相应的yum源,如果没有再使用系统自带的或者自己编绎。

另有需要安装 memcache的

php53-pear php53-pecl-memcache

4、安装nginx

yum groupinstall 'Development Tools'
yum groupinstall 'Development Libraries'

ius的源里面的nginx是7版本的,另一方面nginx的安装很便当,所以这里面选择手动编绎:

wget http://nginx.org/download/nginx-0.8.50.tar.gz
http://nginx.org/download/nginx-0.8.50.tar.gz
tar zxvf nginx-0.8.50.tar.gz
cd nginx-0.8.50

./configure –with-http_stub_status_module –with-http_ssl_module –with-http_sub_module

OK,到现在应该会出现类似于:

nginx path prefix: “/usr/local/nginx”
nginx binary file: “/usr/local/nginx/sbin/nginx”
nginx configuration prefix: “/usr/local/nginx/conf”
nginx configuration file: “/usr/local/nginx/conf/nginx.conf”
nginx pid file: “/usr/local/nginx/logs/nginx.pid”
nginx error log file: “/usr/local/nginx/logs/error.log”
nginx http access log file: “/usr/local/nginx/logs/access.log”
nginx http client request body temporary files: “client_body_temp”
nginx http proxy temporary files: “proxy_temp”
nginx http fastcgi temporary files: “fastcgi_temp”
nginx http uwsgi temporary files: “uwsgi_temp”
nginx http scgi temporary files: “scgi_temp”

如果出错则安装相应的需要的包,如gcc。然后就

make

make install

即可。

至此服务器基本组件安装完毕.

为了方便管理,给Nginx配置启动脚本:

vim /etc/init.d/nginx

输入:

#!/bin/sh
#
# nginx – this script starts and stops the nginx daemin
#
# chkconfig: – 85 15
# description: Nginx is an HTTP(S) server, HTTP(S) reverse \
# proxy and IMAP/POP3 proxy server
# processname: nginx
# config: /etc/nginx/nginx.conf
# pidfile: /usr/local/nginx/logs/nginx.pid
# Source function library.
. /etc/rc.d/init.d/functions
# Source networking configuration.
. /etc/sysconfig/network
# Check that networking is up.
[ “$NETWORKING” = “no” ] && exit 0
nginx=”/usr/local/nginx/sbin/nginx”
prog=$(basename $nginx)
NGINX_CONF_FILE=”/usr/local/nginx/conf/nginx.conf”
[ -f /etc/sysconfig/nginx ] && . /etc/sysconfig/nginx
lockfile=/var/lock/subsys/nginx
start() {
[ -x $nginx ] || exit 5
[ -f $NGINX_CONF_FILE ] || exit 6
echo -n $”Starting $prog: ”
daemon $nginx -c $NGINX_CONF_FILE
retval=$?
echo
[ $retval -eq 0 ] && touch $lockfile
return $retval
}
stop() {
echo -n $”Stopping $prog: ”
killproc $prog
retval=$?
echo
[ $retval -eq 0 ] && rm -f $lockfile
return $retval
}
restart() {
configtest || return $?
stop
start
}
reload() {
configtest || return $?
echo -n $”Reloading $prog: ”
killproc $nginx -HUP
RETVAL=$?
echo
}
force_reload() {
restart
}
configtest() {
$nginx -t -c $NGINX_CONF_FILE
}
rh_status() {
status $prog
}
rh_status_q() {
rh_status >/dev/null 2>&1
}
case “$1″ in
start)
rh_status_q && exit 0
$1
;;
stop)
rh_status_q || exit 0
$1
;;
restart|configtest)
$1
;;
reload)
rh_status_q || exit 7
$1
;;
force-reload)
force_reload
;;
status)
rh_status
;;
condrestart|try-restart)
rh_status_q || exit 0
;;
*)
echo $”Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload|configtest}”
exit 2
esac

设置

chmod 755 /etc/init.d/nginx

即可通过service nginx  {start|stop|status|restart|condrestart|try-restart|reload|force-reload|configtest} 的命令来控制nginx

启动关键的三个服务,php,mysql,nginx

service php-fpm start

service mysqld start

service nginx start

如果都显示OK,那么说明以上安装都是没有问题(比较懒,只用这种方式判断了)。

那么就把这些服务加入系统的自启动列表

chkconfig php-fpm on
chkconfig mysqld on
chkconfig nginx on

到现在为此,打开网页会显示welcome to nginx.但是php并不能运行。因此我们要设置nginx将php文件转发给php-fpm。

5、php5.3.3 php-fpm在nginx下的设置:

vi /usr/local/nginx/nginx.conf

注意以下文字应在server区块内:

location ~ \.php$ {
root           html;
fastcgi_pass   127.0.0.1:9000;
fastcgi_index  index.php;
include        fastcgi_params;
fastcgi_param  SCRIPT_FILENAME   /usr/local/nginx/html$fastcgi_script_name;
}

创建一个php info文件来测试php是否能够正常运行

echo “<?php phpinfo();” > /usr/local/nginx/html/phpinfo.php

service nginx restart或者reload。phpinfo.php能够正常显示说明php与nginx之间的关系已经建立。

《now is powered by nginx8.50 php5.3.3 php-fpm》上有3条评论

发表评论

电子邮件地址不会被公开。 必填项已用*标注