resin是CAUCHO公司的产品,是一个非常流行的支持servlets和jsp的引擎,速度非常快。resin本身包含了一个支持HTTP/1.1的WEB服务器。虽然它可以显示动态内容,但是它显示静态内容的能力也非常强,速度直逼nginx server。许多站点都是使用该web服务器构建的。
resin支持负载均衡,可以增加web站点的可靠性。方法是增加服务器的数量。比如一台server的错误率是1%的话,那么支持负载均衡的两个resin服务器就可以是错误率降到0.01%
resin官方网站:http://www.caucho.com
首先安装jdk,这里选择的是jdk7
curl -LO -H "Cookie: oraclelicense=accept-securebackup-cookie" \
"http://download.oracle.com/otn-pub/java/jdk/7u75-b13/jdk-7u75-linux-x64.rpm" -k
rpm -ivh jdk-7u75-linux-x64.rpm
然后配置环境变量
vim /etc/profile.d/java.sh
export JAVA_HOME=/usr/java/jdk1.7.0_75
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/jre/lib:$JAVA_HOME/lib:$JAVA_HOME/lib/tools.jar
. /etc/profile.d/java.sh
jdk环境有了,于是安装resin,这里选择的版本为resin-4.0.44.tar.gz
wget http://caucho.com/download/resin-4.0.44.tar.gz
tar xf resin-4.0.44.tar.gz
cd resin-4.0.44
./configure --prefix=/usr/local/resin4.0.44 --with-java-home=/usr/java/jdk1.7.0_75/ --enable-64bit
make && make install
[root@RS2 local]# ln -sv resin4.0.44/ /usr/local/resin
"/usr/local/resin" -> "resin4.0.44/"
配置resin环境变量
vim /etc/profile.d/resin.sh
export RESIN_HOME=/usr/local/resin
export PATH=${RESIN_HOME}/bin:$PATH
source /etc/profile.d/resin.sh
resin安装成功后各目录
备份好配置文件
[root@RS2 conf]# cp resin.xml resin.xml.bak
[root@RS2 conf]# cp resin.properties resin.properties.bak
启动resin服务:
[root@RS2 conf]# ../bin/resinctl start
Resin/4.0.44 launching watchdog at 127.0.0.1:6600
Resin/4.0.44 started -server 'app-0' with watchdog at 127.0.0.1:6600
查看java主要进程
[root@RS2 conf]# jps
28963 Resin
28997 Jps
28917 WatchdogManager
[root@RS2 conf]# netstat -tunlp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 127.0.0.1:6800 0.0.0.0:* LISTEN 28963/java
tcp 0 0 127.0.0.1:6600 0.0.0.0:* LISTEN 28917/java
tcp 0 0 :::8080 :::* LISTEN 28963/java
浏览器尝试访问如下图
配置resin-admin这个uri:
编辑配置文件vim resin.properties
# Access to /resin-admin and remote CLI is password restricted.
# Use "resinctl generate-password" and copy/paste here to set the admin
# admin_user : admin
# admin_password : {SSHA}xxxxxxxx
注释信息很详细,于是使用如下命令配置
[root@RS2 conf]# resinctl generate-password my-admin mypassword
admin_user : my-admin
admin_password : {SSHA}eZYiiZTQCO9XQbcrUfQq1Br57Q2zrCJQ
用户名:my-admin
密码:mypassword将生成的两行信息复制到配置文件中
修改完配置文件,然后重启
[root@RS2 conf]# /etc/init.d/resin restart
Stopping resin: .
Starting resin: .
观察日志信息,看是否报错
[root@RS2 log]# ll
总用量 28
-rw-r--r--. 1 root root 8867 9月 4 20:47 access.log
-rw-r--r--. 1 root root 154 9月 4 20:53 console.log
-rw-r--r--. 1 root root 6284 9月 4 20:53 jvm-app-0.log
-rw-r--r--. 1 root root 3470 9月 4 20:53 watchdog-manager.log
[root@RS2 log]# pwd
/usr/local/resin/log
从日志中可以看出很多信息,方便进行查错
再次访问resin-admin,并输入账号密码
从管理界面可以看出很多内容,这里不详细介绍,自行查看
根据resin官方阐述,resin也能做web服务器,于是配置虚拟主机,看看效果
编辑配置文件vim resin.xml
expand-preserve-fileset="WEB-INF/work/**" multiversion-routing="${webapp_multiversion_routing}" path-suffix="${elastic_webapp?resin.id:''}"/> 这里是摘出来的一段默认的cluster配置,这里大致介绍下配置参数的含义,更多详细内容参考官方文档 server-multi:相当于多个server组合,id-prefix:以某某为前缀的组合,这里是以app- address-list="${app_servers}":指一个address列表,这里参考配置文件resin.properties中 app_servers : 127.0.0.1:6800这个参数,当然也可以不使用宏定义,而以下面的方式 port="6800":指监听的tcp端口 host id="" root-directory=".":这里的id指的是主机名域名,相当于是www.baidu.com,官方解释是primary host name root-directory=".":Root directory for host files parent directory 这里的.指的是resin的家目录 当然host标签还有其他参数: regexp Regular expression based host matching none host-name Canonical host name none host-alias Aliases matching the same host none secure-host-name Host to use for a redirect to SSL none root-directory="webapps/ROOT":The root directory for the application, corresponding to a url of /id/. A relative path is relative to the 因为ROOT下面就是index,jsp也就是www.baidu.com/index.jsp 好了,接下来新增一个host主机名 创建好网站目录,mkdir -p /www/html 编辑jsp文件,vim /www/html/index.jsp <%@ page language="java" %> <%@ page import="java.util.*" %>
<%
out.println("Hello world!");
%>
然后重启resin服务,查看日志信息,观察浏览器信息
于是添加host信息成功
接下来为resin创建多实例,也就是绑定多个http port,这里介绍两种方式
1、注释掉配置文件resin.properties中的某些行,具体操作如下
app_servers : 127.0.0.1:6800
app.http : 8080
注释掉这两行
然后修改配置文件resin.xml
精简了配置文件,于是再为cluster中添加一个server,一个host,于是
然后重启resin服务,发现端口并没有如实出现,于是查看日志信息
从报错信息可以看出,一个cluster中不能支持多个server实例,要想支持必须使用商业版
于是做如下修改,增加cluster,并配置server以及host
然后再次重启,查看端口
[root@RS2 conf]# netstat -tunlp|grep java
tcp 0 0 192.168.1.113:6800 0.0.0.0:* LISTEN 31066/java
tcp 0 0 192.168.1.113:6801 0.0.0.0:* LISTEN 31074/java
tcp 0 0 127.0.0.1:6600 0.0.0.0:* LISTEN 31015/java
tcp 0 0 :::8080 :::* LISTEN 31074/java
tcp 0 0 :::80 :::* LISTEN 31066/java
访问浏览器,比较端口80和8080的变化
至此一个主机多实例搞定,采用第二种方法
2、修改配置文件resin.properties
app_servers : 127.0.0.1:6800
app1_servers : 127.0.0.1:6801
app2_servers : 127.0.0.1:6802
app.http : 8080
app1.http : 8081
app2.http : 8082
然后修改配置文件resin.xml,如下
查看端口状态
[root@RS2 conf]# netstat -tunlp|grep java
tcp 0 0 127.0.0.1:6801 0.0.0.0:* LISTEN 33991/java
tcp 0 0 127.0.0.1:6802 0.0.0.0:* LISTEN 33999/java
tcp 0 0 127.0.0.1:6600 0.0.0.0:* LISTEN 33943/java
tcp 0 0 :::8081 :::* LISTEN 33991/java
tcp 0 0 :::8082 :::* LISTEN 33999/java
查看浏览器效果
结合nginx做负载均衡,还是在一个服务器上做实验
安装nginx:yum -y install nginx
配置nginx:vim /etc/nginx/conf.d/default.conf
server {
listen 80;
server_name www.hcstart.com;
配置修改:vim /etc/nginx/nginx.conf
upstream www.hcstart.com {
server 192.168.1.113:8081 weight=1;
server 192.168.1.113:8082 weight=1;
}
[root@RS2 conf]# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
[root@RS2 conf]# service nginx start
正在启动 nginx: [确定]
观察浏览器效果:
当然也可以结合nginx做动态分离,但resin服务也支持静态页面,所以这个改如何设计架构还是得看业务模式,这里只是简单的介绍了resin的使用,更多信息查看官网
http://caucho.com/resin-4.0/admin/config-resin-xml.xtp
新建菜鸟学习交流群:584498750