一、nginx和resin简单介绍

    Nginx(发音同 engine x)是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行。由俄罗斯的程序设计师Igor Sysoev所开发,最初供俄国大型的入口网站及搜寻引擎Rambler(俄文:Рамблер)使用。  其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页伺服器中表现较好.目前中国大陆使用nginx网站用户有:新浪、网易、 腾讯,另外知名的微网志Plurk也使用nginx。

    Resin是CAUCHO公司的产品,是一个非常流行的支持servlets 和jsp的引擎,速度非常快。Resin本身包含了一个支持HTTP/1.1的WEB服务器。虽然它可以显示动态内容,但是它显示静态内容的能力也非常强,速度直逼APACHE SERVER。许多站点都是使用该WEB服务器构建的。resinResin也可以和许多其他的WEB服务器一起工作,比如Apache server和IIS等。Resin支持Servlets 2.3标准和JSP 1.2标准。熟悉ASP和PHP的用户可以发现用Resin来进行JSP编程是件很容易的事情。

系统环境:centos 5.6 64位

jdk下载地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1637583.html

wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.31.tar.gz

wget http://labs.frickle.com/files/ngx_cache_purge-1.6.tar.gz

wget http://nginx.org/download/nginx-1.3.5.tar.gz

wget http://www.caucho.com/download/resin-4.0.30.tar.gz

二、安装jdk、nginx、resin

yum -y install gcc gcc-c++ gd zlib-devel openssl openssl-devel perl mhash

1.安装jdk

tar -zxvf jdk-7u6-linux-x64.tar.gz

mv jdk1.7.0_06/ /usr/local/jdk

vi ~/.bash_profile

添加下面两行

export JAVA_HOME=/usr/local/jdk export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

将下面行

PATH=$PATH:$HOME/bin

修改为

PATH=$JAVA_HOME/bin:$PATH:$HOME/bin

注:把新安装的jdk的bin目录添加在$PATH的前面,这样当系统中有多个jdk版本时,会优先搜寻排在前面的jdk版本。

source ~/.bash_profile

java -version   # 查看java的版本

2.安装pcre

tar -zxvf pcre-8.31.tar.gz

cd pcre-8.31

./configure --prefix=/usr/local/pcre

make

make install

3.安装nginx

tar -zxvf ngx_cache_purge-1.6.tar.gz

mv ngx_cache_purge-1.6 /usr/local/ngx_cache_purge

tar -zxvf nginx-1.3.5.tar.gz

cd nginx-1.3.5

./configure --prefix=/usr/local/nginx --user=nobody --group=nobody --with-http_stub_status_module --with-openssl=/usr/include/openssl --with-pcre=/tmp/pcre-8.31 --add-module=/usr/local/ngx_cache_purge --with-http_gzip_static_module

# 注意:--with-pcre指向的是源码包解压的路径,而不是安装的路径,否则编译会报错

make

make install

chown -R nobody:nobody /usr/local/nginx/html/

4.设置nginx开机启动

vi /etc/rc.d/init.d/nginx

#!/bin/bash  
# nginx Startup script for the Nginx HTTP Server  
# it is v.1.3.0 version.  
# chkconfig: - 85 15  
# description: Nginx is a high-performance web and proxy server.  
#              It has a lot of features, but it's not for everyone.  
# processname: nginx  
# pidfile: /var/run/nginx.pid  
# config: /usr/local/nginx/conf/nginx.conf  
nginxd=/usr/local/nginx/sbin/nginx  
nginx_config=/usr/local/nginx/conf/nginx.conf  
nginx_pid=/usr/local/nginx/logs/nginx.pid  
RETVAL=0  
prog="nginx"  
# Source function library.  
.  /etc/rc.d/init.d/functions  
# Source networking configuration.  
.  /etc/sysconfig/network  
# Check that networking is up.  
[ ${NETWORKING} = "no" ] && exit 0  
[ -x $nginxd ] || exit 0  
# Start nginx daemons functions.  
start() {  
if [ -e $nginx_pid ];then  
   echo "nginx already running...."  
   exit 1  
fi  
   echo -n $"Starting $prog: "  
   daemon $nginxd -c ${nginx_config}  
   RETVAL=$?  
   echo  
   [ $RETVAL = 0 ] && touch /var/lock/subsys/nginx  
   return $RETVAL  
}  
# Stop nginx daemons functions.  
stop() {  
        echo -n $"Stopping $prog: "  
        killproc $nginxd  
        RETVAL=$?  
        echo  
        [ $RETVAL = 0 ] && rm -f /var/lock/subsys/nginx /usr/local/nginx/logs/nginx.pid  
}  
reload() {  
    echo -n $"Reloading $prog: "  
    #kill -HUP `cat ${nginx_pid}`  
    killproc $nginxd -HUP  
    RETVAL=$?  
    echo  
}  
# See how we were called.  
case "$1" in  
start)  
        start  
        ;;  
stop)  
        stop  
        ;;  
reload)  
        reload  
        ;;  
restart)  
        stop  
        start  
        ;;  
  
status)  
        status $prog  
        RETVAL=$?  
        ;;  
*)  
        echo $"Usage: $prog {start|stop|restart|reload|status|help}"  
        exit 1  
esac  
exit $RETVAL

chmod +x /etc/rc.d/init.d/nginx

chkconfig nginx on

service nginx start

在浏览器地址栏里输入http://ip,如果显示“Welcome to nginx!”则表示nginx安装成功。

5.安装resin

tar -zxvf resin-4.0.30

cd resin-4.0.30

./configure --prefix=/usr/local/resin

make

make install

service resin start

在浏览器地址栏里输入http://ip:8080,出现如下图页面则表示resin安装成功。搭建web服务器(jdk+nginx+resin整合)_第1张图片

三、配置nginx和resin

cp /usr/local/nginx/conf/nginx.conf /usr/local/nginx/conf/nginx.conf.bak

vi /usr/local/nginx/conf/nginx.conf

# 找到server部分,将其修改如下

server { 
        listen       80; 
        server_name  localhost; 
        root /usr/local/wwwweb; 
        #charset koi8-r; 
        #access_log  logs/host.access.log  main; 
 
        location / { 
            access_log on; 
            proxy_pass http://127.0.0.1:8080; 
            proxy_set_header X-Real-IP $remote_addr; 
            proxy_set_header Host $host; 
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
            client_max_body_size    10m; 
            client_body_buffer_size 128k; 
            #root   html; 
            #index  index.html index.htm; 
        }

cp /usr/local/resin/conf/resin.xml /usr/local/resin/conf/resin.xml.bak

vi /usr/local/resin/conf/resin.xml

 
       
      

mkdir /usr/local/wwwweb

mkdir /usr/local/wwwweb/xuad

四、测试

vi /usr/local/wwwweb/xuad/index.jsp

hello word

service nginx restart

service resin restart

在浏览器地址栏里输入http://ip,如果能正常显示“hello word”页面,则表示nginx和resin整合成功。

尝试关闭resin,再输入http://ip,如出现下图页面则OK。搭建web服务器(jdk+nginx+resin整合)_第2张图片

我们在装nginx之前有装pcre和ngx_cache_purge,如果想用nginx做负载均衡或者做缓存的话,可以参考我的另一篇博文:CentOS 5.8布署nginx+keepalived实现负载均衡。关于反向代理的话只需要稍微修改一下配置文件而已,这里我就不讲了。