日期:2014-05-16  浏览次数:20905 次

Apache+Resin的java虚拟主机设置

?

?

  概述

  本文主要是为了做虚拟主机的人准备的,做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

  新增