设为首页 收藏本站
查看: 2786|回复: 0

[经验分享] resin安装与配置

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2016-9-5 14:56:22 | 显示全部楼层 |阅读模式
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
[iyunv@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安装成功后各目录
wKioL1fMFoaDA-bhAAB_ekbHdYQ994.jpg
备份好配置文件

[iyunv@RS2 conf]# cp resin.xml resin.xml.bak
[iyunv@RS2 conf]# cp resin.properties resin.properties.bak
启动resin服务:

[iyunv@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主要进程

[iyunv@RS2 conf]# jps
28963 Resin
28997 Jps
28917 WatchdogManager
[iyunv@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         
浏览器尝试访问如下图

wKiom1fMF7aww_uXAABjM6-0uwI781.jpg

配置resin-admin这个uri:
wKioL1fMGHujNxbjAACXhbT1T6A567.jpg
编辑配置文件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
注释信息很详细,于是使用如下命令配置
[iyunv@RS2 conf]# resinctl generate-password my-admin mypassword
admin_user : my-admin
admin_password : {SSHA}eZYiiZTQCO9XQbcrUfQq1Br57Q2zrCJQ
用户名:my-admin
密码:mypassword将生成的两行信息复制到配置文件中
修改完配置文件,然后重启
[iyunv@RS2 conf]# /etc/init.d/resin restart
Stopping resin: .
Starting resin: .
观察日志信息,看是否报错

[iyunv@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
[iyunv@RS2 log]# pwd
/usr/local/resin/log
wKioL1fMGc-T1nseAAGeTJamH2M870.jpg
从日志中可以看出很多信息,方便进行查错
再次访问resin-admin,并输入账号密码
wKiom1fMGjHwMoFCAAFCqxoycAw591.jpg
从管理界面可以看出很多内容,这里不详细介绍,自行查看

根据resin官方阐述,resin也能做web服务器,于是配置虚拟主机,看看效果
编辑配置文件vim resin.xml
<cluster id="app">
    <server-multi id-prefix="app-" address-list="${app_servers}" port="6800"/>
    <host-default>
      <web-app-deploy path="webapps"
                      expand-preserve-fileset="WEB-INF/work/**"
                      multiversion-routing="${webapp_multiversion_routing}"
                      path-suffix="${elastic_webapp?resin.id:''}"/>
    </host-default>
    <host-deploy path="hosts">
      <host-default>
        <resin:import path="host.xml" optional="true"/>
      </host-default>
    </host-deploy>
    <host id="" root-directory=".">
      <web-app id="/" root-directory="webapps/ROOT"/>
    </host>
    <resin:if test="${resin_doc}">
      <host id="${resin_doc_host}" root-directory="${resin_doc_host}">
        <web-app id="/resin-doc" root-directory="${resin.root}/doc/resin-doc"/>
      </host>
    </resin:if>
  </cluster>
这里是摘出来的一段默认的cluster配置,这里大致介绍下配置参数的含义,更多详细内容参考官方文档
<cluster id="app">   cluster是标签,id是The cluster identifier.,cluster的标识符,下面的server标签中的id也是类似
<server-multi id-prefix="app-" address-list="${app_servers}" port="6800"/>
server-multi:相当于多个server组合,id-prefix:以某某为前缀的组合,这里是以app-
address-list="${app_servers}":指一个address列表,这里参考配置文件resin.properties中
app_servers      : 127.0.0.1:6800这个参数,当然也可以不使用宏定义,而以下面的方式
<server-multi id-prefix="app-" address-list="192.168.1.2 192.168.1.3" port="6800"/>
port="6800":指监听的tcp端口
<host id="" root-directory=".">
      <web-app id="/" root-directory="webapps/ROOT"/>
</host>
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

<web-app id="/" root-directory="webapps/ROOT"/>:这里的id指的是The url prefix selecting this application.,也就是uri这里就是www.baidu.com/最后的/
root-directory="webapps/ROOT":The root directory for the application, corresponding to a url of /id/. A relative path is relative to the <root-directory> of the containing <host>. Can use regexp replacement variables.我理解为网站的根目录
因为ROOT下面就是index,jsp也就是www.baidu.com/index.jsp

好了,接下来新增一个host主机名
<host id="www.hcstart.com" root-directory="/www">
      <!--
         - webapps can be overridden/extended in the resin.xml
        -->
      <web-app id="/" root-directory="html"/>
</host>
创建好网站目录,mkdir -p /www/html

编辑jsp文件,vim /www/html/index.jsp
<%@ page language="java" %>
<%@ page import="java.util.*" %>
<html>
  <head>
    <title>JSP Test Page</title>
  </head>
  <body>
    <%
        out.println("Hello world!");
    %>
  </body>
</html>
然后重启resin服务,查看日志信息,观察浏览器信息

wKiom1fMH8HysqG5AAAvRUpcR84264.jpg
于是添加host信息成功

接下来为resin创建多实例,也就是绑定多个http port,这里介绍两种方式
1、注释掉配置文件resin.properties中的某些行,具体操作如下
app_servers      : 127.0.0.1:6800
app.http          : 8080
注释掉这两行
然后修改配置文件resin.xml
<cluster id="app">
      <server id="app-0" address="192.168.1.113" port="6800">
        <http port="80"/>
      </server>
      <host id="www.hcstart.com" root-directory="/www">
      <web-app id="/" root-directory="html"/>
      </host>
  </cluster>
精简了配置文件,于是再为cluster中添加一个server,一个host,于是
<cluster id="app">
      <server id="app-0" address="192.168.1.113" port="6800">
        <http port="80"/>
      </server>
      <host id="www.hcstart.com" root-directory="/www">
      <web-app id="/" root-directory="html"/>
      </host>
      <server id="app-1" address="192.168.1.113" port="6801">
        <http port="8080"/>
      </server>   
      <host id="www.hcstart.com" root-directory="/www">
      <web-app id="/" root-directory="blog"/>
      </host>
  </cluster>
然后重启resin服务,发现端口并没有如实出现,于是查看日志信息
wKioL1fMIt6ARlSFAACoaduFf0g255.jpg
从报错信息可以看出,一个cluster中不能支持多个server实例,要想支持必须使用商业版
于是做如下修改,增加cluster,并配置server以及host
<cluster id="app">
      <server id="app-0" address="192.168.1.113" port="6800">
        <http port="80"/>
      </server>
      <host id="www.hcstart.com" root-directory="/www">
      <web-app id="/" root-directory="html"/>
      </host>
  </cluster>

<cluster id="mycluster">
      <server id="app-1" address="192.168.1.113" port="6801">
        <http port="8080"/>
      </server>
      <host id="www.hcstart.com" root-directory="/www">
      <web-app id="/" root-directory="blog"/>
      </host>
  </cluster>
然后再次重启,查看端口
[iyunv@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的变化
wKioL1fMJI2hvKrLAAAkq1n6Yvk151.jpg wKiom1fMJJjx36S6AAAspw6U0Do940.jpg
至此一个主机多实例搞定,采用第二种方法
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,如下

<cluster id="app1">   这里的cluster要和resin.properties配置文件那里定义好的ip和端口要一致
      <server-multi id-prefix="${app1.http}" address-list="${app1_servers}" port="6801"/>
      <host id="www.hcstart.com" root-directory="/www">
      <web-app id="/" root-directory="html"/>
      </host>
  </cluster>
  <cluster id="app2">   这里的cluster要和resin.properties配置文件那里定义好的ip和端口要一致
      <server-multi id-prefix="${app2.http}" address-list="${app2_servers}" port="6802"/>
      <host id="www.hcstart.com" root-directory="/www">
      <web-app id="/" root-directory="blog"/>
      </host>
  </cluster>
查看端口状态

[iyunv@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   
查看浏览器效果
wKioL1fMK83gvbEKAAAoEhRdmuY135.jpg
wKioL1fMK9vTWh5zAAAoa565beg172.jpg

结合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;
    }
[iyunv@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
[iyunv@RS2 conf]# service nginx start
正在启动 nginx:                                           [确定]
观察浏览器效果:

wKiom1fMLXPCtLXmAAAlrRI2VvM446.jpg
当然也可以结合nginx做动态分离,但resin服务也支持静态页面,所以这个改如何设计架构还是得看业务模式,这里只是简单的介绍了resin的使用,更多信息查看官网
http://caucho.com/resin-4.0/admin/config-resin-xml.xtp


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-268004-1-1.html 上篇帖子: resin安装配置 下篇帖子: 整合Apache2/Resin/MySQL
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表