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

[经验分享] Apache+Resin的java虚拟主机设置

[复制链接]

尚未签到

发表于 2017-1-5 08:32:38 | 显示全部楼层 |阅读模式
  概述
  本文主要是为了做虚拟主机的人准备的,做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页面访问到.

运维网声明 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-323999-1-1.html 上篇帖子: Apache 2.2 Tomcat 6.0 cluster 下篇帖子: Apache源代码分析——模块的加载
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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