resion 学习笔记
resin是一个非常流行的web引用服务器,对servlet和jsp提供了良好的支持,自身采用java开发,支持集群,还支持PHP。
resin分为普通版和专业版,主要区别是专业版支持缓存和负载均衡。
一、配置安装
1、安装jdk
# tar -xf jdk-8-linux-x64.tar.gz -C /application/
# ln -s /application/jdk1.8.0_60 /application/jdk
方法一、
# sed -i.ori '$a export JAVA_HOME=/application/jdk\nexport PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH\nexport CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$JAVA_HOME/lib/tools.jar' /etc/profile
方法二、
# echo '#java env config ' >>/etc/profile
# echo 'export JAVA_HOME=/application/jdk' >>/etc/profile
# echo 'export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib' >>/etc/profile
# echo 'export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH:$HOME/bin' >>/etc/profile
# echo 'export RESON_HOME=/application/resin' >>/etc/profile
生效及检查版本
# source /etc/profile
# java -version
2、安装resin
# cd /home/nulige/tools/
# tar xf resin-3.1.13.tar.gz
# mv resin-3.1.13 /application/
# ln -s /application/resin-3.1.13/ /application/resin
# ls -l /application/resin/
3、配置resin
# ls /application/resin/conf
app-default.xml development.conf fine.conf minimal.conf resin.conf resin.conf.orig
# vim /application/resin/conf/resin.conf
从88行开始删除到146行,(快整跳到88行,用快捷键:88gg) 再用快捷键:59dd (删除59行内容)
#再添加下面代码到删除的地方,并注意:server id= xxx,是指启动时指定的标签,地址就是本机网卡地址,端口不用改。
<http address="*" port="8080"/> #如果做web服务用,就把端口修改成80。
添加代码如下:
<!-- resin Configure -->
<server id='oldboy' address='10.0.0.8' port='6911' watchdog-port="6921"> # 6911:真正resin端口,6921:watchdog端口
<http address="*" port="8080"/> #8080:resin web server端口
<jvm-arg>-Xmx256m</jvm-arg> #最大堆大小
<jvm-arg>-Xss1m</jvm-arg> #初始堆大小,一般xmx和xss值是相同的,避免运行时内存不足,系统在内存申请的花销
<jvm-arg>-Xdebug</jvm-arg>
<jvm-arg>-Dcom.sun.management.jmxremote</jvm-arg>
<memory-free-min>1M</memory-free-min> #当jvm的内存小于这个指定值,resin服务会gracefully重启,来释放泄露的内存空间
<thread-max>256</thread-max>
<socket-timeout>65s</socket-timeout> #读写socket最大超时时间
<keepalive-max>128</keepalive-max> #最大长连接数量
<keepalive-timeout>15s</keepalive-timeout> #长连接超时时间
</server>
4、启动resin
# /application/resin/bin/httpd.sh -server oldboy start
# netstat -lntup|egrep "6911|6921|8080"
tcp 0 0 :::8080 :::* LISTEN 2373/java
tcp 0 0 ::ffff:192.168.1.139:6911 :::* LISTEN 2373/java
tcp 0 0 ::ffff:127.0.0.1:6921 :::* LISTEN 2345/java
# ps -ef|grep java
5、配置站点目录
# cd /application/resin/webapps/ROOT/
# echo '<99+1=<%=99+1>' >/application/resin/webapps/ROOT/test.jsp
# cat /application/resin/webapps/ROOT/test.jsp
# curl http://192.168.1.8:8080/test.jsp
6、配置启动方式
1)系统自带的启动脚本
# cp /application/resin/contrib/init.resin.in /etc/init.d/resind
# chmod +x /etc/init.d/resind
2)自己写一个启动脚本,放在启动目录
resind启动脚本
#!/bin/sh
#chkconfig:345 85 15
#To install, configure this file as needed and copy init.resin
#to /etc/rc.d/init.d as resin. Then use "# /sbin/chkconfig resin reset"
. /etc/init.d/functions
StartPath='/application/resin/bin/httpd.sh'
ResinLog=/app/logs/resinlog
[ ! -d $ResinLog ] && mkdir -p &ResinLog resind() {
#如果是多进程增加下面的配置段:oldboy后面空格再接标签名即可
for id in oldboy
do
$StartPath -server $id $1 >> $ResinLog/resin_startup.log
if [ $? -eq 0 ]
then
action "$1 $id resin..."/bin/true
else
action "$1 $id resin..."/bin/false
fi
done } case "$1" in
start)
resind $1
echo '------checking-------'
sleep 15
netstat -lnt|egrep "80|69"
echo '------check over------'
;; stop)
resind $1
;; restart)
resind stop
resind start
;; *)
echo "Usage: $0{start|stop|restart}"
exit 1
esac exit 0
#dos2unix处理一下
# dos2unix /home/tom/init.d/resind
# chmod +x /home/tom/init.d/resind
7、添加开机自启动
# chkconfig --add resind
# chkconfig resind on
# chkconfig --list resind
# echo “/home/tom/init.d/resind start ” >>/etc/rc.local
二、整合 appche + resin
1、安装appche
# yum -y install zlib libxml libjpeg freetype libpng gd curl libiconv zlib-devel libxml2-devel
# ./configure --prefix=/application/apache2.2.23
--enable-deflate \
--enable-headers \
--enable-modules=so \
--enable-so \
--with-mpm=worker \
--enable-rewrite
# make && make install
2、为apache编译resin mod_caucho 模块
# cd /application/resin-3.1.13
# ./configure --with-apxs=/application/apache2.2.23/bin/apxs
# cd /application/resin/modules/c/src/
# make && make install
# ls -l /application/apache/modules/
mod_caucho.so
提示:这个模块很类似Apache+php结合的PHP模块一样,Apache就是通过这个mod_caucho.so模块调用resin解析Java程序的
# tail -9 /application/apache/conf/httpd.conf
#mod_caucho Resin Configuration
LoadModule caucho_module /application/apache2.2.23/modules/mod_caucho.so
ResinConfigServer 192.168.1.8 6911
CauchoConfigCacheDirectory /tmp
CauchoStatus yes
3、测试
echo "apache" /var/www/a.html
echo "<%resin=99+1%>" /application/resin/webapps/ROOT/a.jsp
curl http://192.168.1.8/a.html
curl http://192.168.1.8/a.jsp
默认情况:
Apache:解析静态网页,resin:解析动态网页
# vim /application/apache/conf/httpd.conf 到结尾,修改内容
ResinConfigServer 192.168.1.8 6921
SetHandler caucho-reques
SetHandler caucho-reques是转发作用,由Apache把所有的请求转给resin。
三、Apache虚拟主机+resin
1、配置虚拟主机
# cd /application/apache/conf/extra/
# vim httpd-vhosts.conf
<VirtualHost *:80>
DocumentRoot "/var/www"
DirectoryIndex index.html index.jsp index.php
ServerName www.abc.com
ErrorLog "logs/abc-error_log"
CustomLog "logs/abc-access_log" common <Directory "/var/www">
Options -Indexes +FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>
#Resin Configuration
ResinConfigServer 192.168.1.8 6921
</ViretualHost>
2、修改Apache主配置文件内容:
# vim /application/apache/conf/httpd.conf
395 # Virtual hosts
396 Include conf/extra/httpd-vhosts.conf ---此行注释要打开 # tail -9 /application/apache/conf/httpd.conf
#mod_caucho Resin Configuration
LoadModule caucho_module /application/apache2.2.23/modules/mod_caucho.so
#ResinConfigServer 192.168.1.8 6911 ---这里注释掉!
#SetHandler caucho-request
CauchoConfigCacheDirectory /tmp
CauchoStatus yes
3、测试
# echo "Apache" >/var/www/a.html
# echo "<%Apache=99+1%>" >/var/www/a.jspApache
# echo "<%resin=99+1%>" >/application/resin/webapps/ROOT/a.jsp
# curl www.abc.com/a.html
Apache
# curl www.abc.com/a.jsp
resin=100
四、Apache多虚拟主机+ resin多虚拟主机
1、配置Apache虚拟主机
# cat /application/apache/conf/extra/httpd-vhosts.conf
NameVirtualHost *:80
<VirtualHost *:80>
DocumentRoot "/var/www"
DirectoryIndex index.html index.php index.jsp
ServerName www.abc.com
ErrorLog "logs/abc-error_log"
CustomLog "logs/abc-access_log" common <Directory "/var/www">
Options -Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>
#Resin Configuration
ResinConfigServer 192.168.1.140 6911
SetHandler caucho-request
</VirtualHost>
###########################
<VirtualHost *:80>
DocumentRoot "/var/blog"
DirectoryIndex index.html index.php index.jsp
ServerName www.abc.org
ErrorLog "logs/org-error_log"
CustomLog "logs/org-access_log" common <Directory "/var/blog">
Options -Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>
#Resin Configuration
ResinConfigServer 192.168.1.140 6912
#SetHandler caucho-request
</VirtualHost>
2、配置resin多虚拟机
配置主配置 /application/resin/conf/resin.conf
<!-- resin Configure at 2018-1-11 -->
<server id='abc' address='192.168.1.8' port='6911' watchdog-port="6921">
# <http address="*" port="8080"/>
<jvm-arg>-Xmx256m</jvm-arg>
<jvm-arg>-Xss1m</jvm-arg>
<jvm-arg>-Xdebug</jvm-arg>
<jvm-arg>-Dcom.sun.management.jmxremote</jvm-arg>
<memory-free-min>1M</memory-free-min>
<thread-max>256</thread-max>
<socket-timeout>65s</socket-timeout>
<keepalive-max>128</keepalive-max>
<keepalive-timeout>15s</keepalive-timeout>
</server> #######################################
<!-- resin Configure at 2018-1-11 -->
<server id='abc01' address='192.168.1.8' port='6912' watchdog-port="6922">
# <http address="*" port="8081"/>
<jvm-arg>-Xmx256m</jvm-arg>
<jvm-arg>-Xss1m</jvm-arg>
<jvm-arg>-Xdebug</jvm-arg>
<jvm-arg>-Dcom.sun.management.jmxremote</jvm-arg>
<memory-free-min>1M</memory-free-min>
<thread-max>256</thread-max>
<socket-timeout>65s</socket-timeout>
<keepalive-max>128</keepalive-max>
<keepalive-timeout>15s</keepalive-timeout>
</server>
<!--Create first virtual hosts at 20180112.-->
<host id="www.abc.com" root-directory="/application/resin/webapps">
<host-alias>blog.abc.com</host-alias>
<!--
- configures an explicit root web-app matching the
- webapp's ROOT
-->
<web-app id="/" root-directory="/application/resin/webapps/ROOT">
<session-config cookie-domain="pp.org" reuse-session-id="true">
<session-timeout>5</session-timeout>
<session-max>12000</session-max>
</session-config>
<servlet-mapping servlet-class='com.caucho.servlets.ResinStatusServlet'>
<url-pattern>/resin-status-abc.org</url-pattern>
<init enable="read"/>
</servlet-mapping>
<error-page error-code='404' location='/tips/404.html'/> </web-app>
<web-app id="/resin-admin-abc.org" root-directory="${resin.home}/php/admin">
<character-encoding>utf8</character-encoding>
<prologue>
<resin:set var="resin_admin_external" value="true"/>
<resin:set var="resin_admin_insecure" value="true"/>
</prologue>
<security-constraint>
<web-resource-collection>
<url-pattern>/*</url-pattern>
</web-resource-collection>
</security-constraint>
</web-app>
<stderr-log path='/app/log/resinlog/www_stderr.log'
rollover-period='1W'/>
<stdout-log path='/app/log/resinlog/www_stdout.log'
rollover-period='1W'/>
</host>
##################################
<!--Create first virtual hosts at 20180112.-->
<host id="www.abc.org" root-directory="/application/resin/webapps">
<host-alias>blog.abc.org</host-alias>
<!--
- configures an explicit root web-app matching the
- webapp's ROOT
-->
<web-app id="/" root-directory="/application/resin/webapps/org">
<session-config cookie-domain="pp.org" reuse-session-id="true">
<session-timeout>5</session-timeout>
<session-max>12000</session-max>
</session-config>
<servlet-mapping servlet-class='com.caucho.servlets.ResinStatusServlet'>
<url-pattern>/resin-status-abc.org</url-pattern>
<init enable="read"/>
</servlet-mapping>
<error-page error-code='404' location='/tips/404.html'/> </web-app>
<web-app id="/resin-admin-abc.org" root-directory="${resin.home}/php/admin">
<character-encoding>utf8</character-encoding>
<prologue>
<resin:set var="resin_admin_external" value="true"/>
<resin:set var="resin_admin_insecure" value="true"/>
</prologue>
<security-constraint>
<web-resource-collection>
<url-pattern>/*</url-pattern>
</web-resource-collection>
</security-constraint>
</web-app>
<stderr-log path='/app/log/resinlog/blog_stderr.log'
rollover-period='1W'/>
<stdout-log path='/app/log/resinlog/blog_stdout.log'
rollover-period='1W'/>
</host> 注释掉resin主配置中虚拟主机中的http端口内容:
90 <!-- <http address="*" port="8080"/> -->
104 <!-- <http address="*" port="8081"/> -->
3、测试
# echo "<%com=99+1%>" /application/resin/webapps/ROOT/a.jsp
# echo "www.abc.com" /application/resin/webapps/ROOT/a.html
# echo "<%org=99+1%>" /application/resin/webapps/org/a.jsp
# echo "www.abc.org" /application/resin/webapps/ROOT/a.html
# echo "<%com=99-1%>" /var/www/a.jsp
# echo "apache www" /var/www/a.html
# echo "<%com=99-1%>" /var/blog/a.jsp
# echo "apache blog" /var/blog/a.html
# curl www.abc.cc/a.jsp
com=100
# curl www.abc.cc/a.html
www.abc.com
# curl www.abc.org/a.jsp
org=100
# curl www.abc.org/a.html
apache blog
4、理想结构图
resion 学习笔记的更多相关文章
- js学习笔记:webpack基础入门(一)
之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...
- PHP-自定义模板-学习笔记
1. 开始 这几天,看了李炎恢老师的<PHP第二季度视频>中的“章节7:创建TPL自定义模板”,做一个学习笔记,通过绘制架构图.UML类图和思维导图,来对加深理解. 2. 整体架构图 ...
- PHP-会员登录与注册例子解析-学习笔记
1.开始 最近开始学习李炎恢老师的<PHP第二季度视频>中的“章节5:使用OOP注册会员”,做一个学习笔记,通过绘制基本页面流程和UML类图,来对加深理解. 2.基本页面流程 3.通过UM ...
- 2014年暑假c#学习笔记目录
2014年暑假c#学习笔记 一.C#编程基础 1. c#编程基础之枚举 2. c#编程基础之函数可变参数 3. c#编程基础之字符串基础 4. c#编程基础之字符串函数 5.c#编程基础之ref.ou ...
- JAVA GUI编程学习笔记目录
2014年暑假JAVA GUI编程学习笔记目录 1.JAVA之GUI编程概述 2.JAVA之GUI编程布局 3.JAVA之GUI编程Frame窗口 4.JAVA之GUI编程事件监听机制 5.JAVA之 ...
- seaJs学习笔记2 – seaJs组建库的使用
原文地址:seaJs学习笔记2 – seaJs组建库的使用 我觉得学习新东西并不是会使用它就够了的,会使用仅仅代表你看懂了,理解了,二不代表你深入了,彻悟了它的精髓. 所以不断的学习将是源源不断. 最 ...
- CSS学习笔记
CSS学习笔记 2016年12月15日整理 CSS基础 Chapter1 在console输入escape("宋体") ENTER 就会出现unicode编码 显示"%u ...
- HTML学习笔记
HTML学习笔记 2016年12月15日整理 Chapter1 URL(scheme://host.domain:port/path/filename) scheme: 定义因特网服务的类型,常见的为 ...
- DirectX Graphics Infrastructure(DXGI):最佳范例 学习笔记
今天要学习的这篇文章写的算是比较早的了,大概在DX11时代就写好了,当时龙书11版看得很潦草,并没有注意这篇文章,现在看12,觉得是跳不过去的一篇文章,地址如下: https://msdn.micro ...
随机推荐
- 在 CentOS 或 RHEL 系统上检查可用的安全更新的方法
当你更新系统时,根据你所在公司的安全策略,有时候可能只需要打上与安全相关的补丁.大多数情况下,这应该是出于程序兼容性方面的考量.那该怎样实践呢?有没有办法让 yum 只安装安全补丁呢? 答案是肯定的, ...
- WPF中常用控件(TreeView, ComboBox, DataGrid, ListView)使用MVVM模式绑定的demo
之前几篇关于TreeView的博客中只是贴了源代码,并没有把整个项目上传到github.最近就想着把我常用的几个控件做成一个demo,这样也方便自己以后查看.本人也是WPF新手,但是我并没有打算就往这 ...
- Java基础--集合解析-ArrayList
1.ArrayList中添加,获取,删除元素: 2.ArrayList中是否包含某个元素: 3.ArrayList中根据索引将元素数值改变(替换): 4.ArrayList中查看(判断)元素的索引: ...
- docker:alpine使用logrotate切割日志
最近在交付项目的时候使用了docker,大家都知道日志是项目定位问题的重要依据,但如果一开始项目本身没有对日志进行合理切割那就会导致长时间运行的项目日志文件大得编辑器打不开的情况.这里使用大部分lin ...
- 进程&线程(二):Thread相关方法与属性
学习自:python进程.线程.协程 - 张岩林 - 博客园 1.threading.Thread Thread方法 方法(使用方法为Thread.xxx) 说明 start() 激活线程 getNa ...
- docker-docke安装和镜像仓库安装和管理
1.安装docker # yum install -y yum-utils device-mapper-persistent-data lvm2 # yum-config-manager \ --ad ...
- JZ-025-复杂链表的复制
复杂链表的复制 题目描述 输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针random指向一个随机节点),请对此链表进行深拷贝, 并返回拷贝后的头结点.(注意,输 ...
- jarvisoj_level3
自己的第一篇博客 *其实很早就想写博客了但是自己安全学的比较晚而且也很菜,现在虽然还是比较菜但是也是有一些心得的 *第一个问题什么是ctf,根据某度来说:CTF(Capture The Flag)中文 ...
- react 也就这么回事 05 —— 组件 & Props
什么是组件:用来实现局部功能的可复用代码片段 比如很多界面会用到"分页"功能,因此可以将它封装成独立的组件 这样用到分页的界面只需引入该组件而不必重新写代码 1 定义组件 在 Re ...
- SQL注入 - SQLi-Labs靶场过关记录
Less-1 1.看报错类型,确定注入点 ?id=1' order by 4--++ 2.确定数据库 ?id=-1' union select 1,2,3--++ 3.查看数据库 ?id=-1' un ...