王朝网络
分享
 
 
 

Apache+Resin的java虚拟主机设置

王朝java/jsp·作者佚名  2008-05-18
宽屏版  字体: |||超大  

最近研究了一下apache+resin做虚拟主机,其中经过很多曲折,在网上搜索很多文章,最终搞定,总结一下.

概述

本文主要是为了做虚拟主机的人准备的,做resin的虚拟主机有几种方式:

1.缺省情况下,root用户运行resin,最不安全

强烈不建议这种方式,不过这种方式基本不需要配置

2.以另外一个用户,例如resin用户来运行resin

安全一些,类似缺省apache的方式,不过需要配置一些目录设置,否则无法运行

3.每个虚拟主机一个用户,虚拟主机用户多的时候太麻烦,不过最安全.

用户之间互不影响.配置相对麻烦一些.

安装

resin默认仅提供了源码方式,所以需要编译安装.(有第三方提供了rpm,但还是自己编译好控制和升级).

resin和apache的连接模块也需要编译,所以还需要apache有apxs程序,一般apache编译的版本才有这个程序,所以我们只好编译安装apache.

一般用户还需要安装php等等,不在赘述,下面开始安装.

下载apache 2.0.54,php5.0.5 or php 4.4,resin rpo 3.0.14,放在/temp目录下,并用tar zxvf命令展开.

编译安装apache,类似命令如下

./configure --prefix=/web/apache --with-mpm=worker --enable-so --enable-rewrite

make

make install

注意允许了apache的so模块和rewrite模块,开启apache的worker工作方式,具体请参考apache的文档.如果用户需要其他设置,请浏览configure的帮助. (./configure --help)

编译php4:

./configure --prefix=/web/php --with-apxs2=/web/apache/bin/apxs --with-config-file-path=/web/php --with-mysql

make

make install

指定php安装目录,设定apache的目录和php.ini的目录,并配置mysql.开启其他选项也请看帮助.

安装后把php.ini-recommend 复制到/web/php/php.ini,然后按照自己的需要修改.

(主要修改Safe_mode为on等等安全措施)

php5提示:如果同时安装mysql和mysqli,生成的Makefile会有一个小错误,多了一个-lmysqlclient ,去掉即可. ( http://cn.php.net/mysqli )

安装jdk:

下载rpm包安装

设置JAVA_HOME变量,把jdk/bin目录加入到path里

并把tools.jar设置到classpath中.classpath里面还要包括当前路径,也就是一个点.

一般是通过修改/etc/profile设置,可搜索相关文档.

编译resin:

./configure --prefix=/web/resin --with-apxs=/web/apache/bin/apxs

make

make install

resin默认提供了启动脚本,位于contrib目录下,我一般把init.resin.in复制到/etc/init.d/resin,然后使用checkconfig 设置,可以打开这个文件看看如何设置.

然后打开这个文件,修改JAVA_HOME,RESIN_HOME为实际目录:

JAVA_HOME=/usr/java/jdk1.5

RESIN_HOME=/web/resin

至此,apache,php,resin的默认设置就可以运行了.

注:resin安装的时候,已经把和apache连接的模块和配置都设置好了,可以打开apache的httpd.conf看看:

LoadModule caucho_module modules/mod_caucho.so

ResinConfigServer localhost 6802

CauchoStatus yes

其中php 的设置也自动设置好了,如下:

LoadModule php5_module modules/libphp5.so

#

# Cause the PHP interpreter to handle files with a .php extension.

#

AddType application/x-httpd-php .php

# AddType application/x-httpd-php-source .phps

设置apache

首先是设置apache的基本属性:

调整cgi设置,如果你要运行cgi程序: AddHandler cgi-script .cgi .pl

设置默认编码 AddDefaultCharset GB2312

DirectoryIndex DirectoryIndex index.htm index.html index.php index.jsp

连接数:参考文档吧,这个要根据实际情况调整了,注意如果是worker模块,设置worker部分的连接数即可

邮件地址ServerAdmin

Group nobody

为了java web程序的安全,我们在httpd.conf里加入

<LocationMatch "/WEB-INF/">

AllowOverride None

deny from all

</LocationMatch>

<LocationMatch "/META-INF/">

AllowOverride None

deny from all

</LocationMatch>

我们在apache里新增一个虚拟主机:

<VirtualHost *:80>

ServerAdmin testuser@testuser.com

DocumentRoot /home/testuser/html

ServerName www.testuser.com

ServerAlias testuser.com ftp.testuser.com

ScriptAlias /cgi-bin/ "/home/testuser/cgi-bin/"

<Directory /home/testuser/cgi-bin/>

##本用户可以运行cgi,其他用户要看httpd.conf的设置了,我是没有默认开启的,只允许特定用户运行cgi

AddHandler cgi-script .pl .cgi

</Directory>

##把日志放到自己的目录下,这样用户可以看自己的日志了,出了错误好跟踪

ErrorLog /home/testuser/tmp/log/testuser-error_log

CustomLog /home/testuser/tmp/log/testuser-access_log common

</VirtualHost>

注:如果/home/testuser/tmp/log目录权限可以设置为合适的用户权限,方便用户管理日志,例如删除

为了防止日志过大,还可以浏览logratate,cronolog等程序来设置.例如,安装了cronolog的情况下设置为:

CustomLog "|/usr/local/sbin/cronolog /home/testuser/tmp/log/access_%m_%d.log" common

警告:为了用户能删除日志,你可能需要对目录做额外设置(例如777),否则用户是不能删除目录下的文件的. 或者采用定期删除日志的方法也可以.

设置resin

新增一个resin用户,为了运行resin,这个用户要求有shell,不能是true或者nologin.假设我们增加了一个用户resin,组也是resin.

修改/etc/init.d/resin,修改一行:

USER=resin

这样默认resin程序就以resin用户的身份运行了,为了运行缺省的程序,需要把resin安装目录的所有owner,group修改为resin.resin,递归修改.

负载均衡:resin支持设置多个端口启动,来做负载均衡,可以参考相关文档.

<cluster>

<srun server-id="" host="127.0.0.1" port="6802"/>

<srun server-id="" host="127.0.0.1" port="6803"/>

<srun server-id="" host="127.0.0.1" port="6804"/>

</cluster>

对应apache的httpd.conf也要修改:

ResinConfigServer localhost 6802

ResinConfigServer localhost 6803

ResinConfigServer localhost 6804

因为apache默认已经有access日志了,还可以关闭resin的access日志.

<access-log path="logs/resinlog/access.log"

format=’%h %l %u %t "%r" %s %b "%{Referer}i" "%{User-Agent}i"’

rollover-period="1D"/>

注释掉这段即可关闭.

现在我们来配置对应apache的虚拟主机:

<host id=’’>

<web-app id=’/’ document-directory="/home/testuser/html">

<work-dir>/home/testuser/tmp/work</work-dir>

<temp-dir>/home/testuser/tmp/tmp</temp-dir>

<stdout-log path=’/home/testuser/tmp/resinlog/stdout.log’ rollover-period=’1D’ archive-format="stdout_%m%d.log" />

<stderr-log path=’/home/testuser/tmp/resinlog/stderr.log’ rollover-period=’1D’ archive-format="stderr_%m%d.log" />

</web-app>

</host>

注意如果有多个虚拟主机,id需要写上域名,因为目前只有一个虚拟主机,所以id为空就是默认的都访问这个.

<host id=’www.testuser.com’>

我们可以看到,这个虚拟主机设置了resin的work-dir和resin-dir,并设置了stdout和stderr日志,都放在用户的目录下.

如果不设置work-dir的话,resin默认是在WEB-INF下建立一个work目录.

如果不设置temp-dir的话,resin默认是在WEB-INF下建立一个tmp目录.

但是用户的目录对resin来说是没权限的,所以要首先建立这些目录,并且设置目录的owner是resin,这样resin程序才能操作.

(root用户运行情况下不存在此问题)

两种日志也放到用户的目录下,方便用户调试,除错,日志目录的owner也要设置为resin,否则也无法正常运作.日志设置为一天产生一个,可以根据需要修改.

警告:为了用户能删除日志,你可能需要对目录做额外设置(例如777),否则用户是不能删除目录下的文件的. 或者采用定期删除日志的方法也可以.

警告:work,tmp,resinlog目录都是必须要管理员建立的,并设置为resin用户拥有,否则resin无法运行,而且注意目录不应该被web页面访问到.

友情提示

本文写的非常笼统,因为一个管理员必须亲自熟悉每个细节才好,否则出了问题不好定位,很多事情还是亲历亲为才好.

本文很多内容都是在网上没有找到答案自己看文档试验出来的,所以仅仅希望给读者带来一些提示,并不能代替程序本身的文档.

作为一个系统管理员,应该好好阅读文档.

虽然,我也很懒 :P

有问题,请留言或者评论,肯定会有问题的!

安全沙箱

为了java虚拟主机对本地文件不造成危害,我们还需要设置resin的安全沙箱,请访问后续文章.

介绍:没有开启安全沙箱的话,任何一个虚拟主机的用户都可以读取/etc/passwd等重要文件...

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
>>返回首页<<
推荐阅读
 
 
频道精选
 
静静地坐在废墟上,四周的荒凉一望无际,忽然觉得,凄凉也很美
© 2005- 王朝网络 版权所有