Chinaunix首页 | 论坛 | 博客
  • 博客访问: 4218076
  • 博文数量: 291
  • 博客积分: 8003
  • 博客等级: 大校
  • 技术积分: 4275
  • 用 户 组: 普通用户
  • 注册时间: 2010-10-30 18:28
文章分类

全部博文(291)

文章存档

2017年(1)

2013年(47)

2012年(115)

2011年(121)

2010年(7)

分类: 系统运维

2012-09-29 08:31:24

我客户的改版的网站(是多个国家版本)要在客户的服务器上线,新网站是使用opencms开发,采用前端是apache,后端是tomcat的结构。之前在另外一台产品机上放了几个国家,配置安装非常顺利。
但是到这台服务器上,出现访问不到root用户创建的文件或者是tomcat产生的静态文件,就是提示“403 禁止访问”
查找到问题所在,所有用户创建出来的文件权限都是如下:
也就是说所有用户创建出来的用户只能自己读。但是我没法去修改这个设置(权限管理是有另一家公司管理,很严)。
那么就出现一个问题了,客户在opencms后台上传了图片或者静态文件,这些文件会被写到硬盘中,而tomcat目前是使用root身份,也就是说只能root可读。而apache是daemon身份运行(这个用户是nologin的,这样比较安全),那么用户通过apache访问这些静态文件就会出现403错误。
于是我尝试使用daemon身份运行tomcat,结果发现su和sudo都不可以,因为这个用户是nologin的。
结果发现有jsvc这个东西可以使用特定的身份允许tomcat
安装如下
1)下载

点击(此处)折叠或打开

  1. wget
2)解压并安装

 点击(此处)折叠或打开

  1. tar -zxvf commons-daemon-1.0.10-native-src.tar.gz
  2. cd commons-daemon-1.0.10-native-src
  3. cd unix/
  4. ./configure --with-java=/home/soft/jdk/
  5. make
  6. cp jsvc /home/tomcat/bin/
3)创建service

点击(此处)折叠或打开

  1. vi /etc/init.d/tomcat
  2. cat /etc/init.d/tomcat


/etc/init.d/tomcat的内容如下:

点击(此处)折叠或打开

  1. #!/bin/sh
  2. #
  3. # Startup Script for Tomcat5
  4. #
  5. # chkconfig: 345 88 14
  6. # description: Tomcat Daemon
  7. # processname: jsvc
  8. # pidfile: /var/run/jsvc.pid
  9. # config:
  10. #
  11. # Source function library.
  12. . /etc/rc.d/init.d/functions
  13. #
  14. prog=tomcat_id
  15. #
  16. JAVA_HOME=/home/soft/jdk
  17. CATALINA_HOME=/home/tomcat
  18. DAEMON_HOME=$CATALINA_HOME/bin
  19. TOMCAT_USER=daemon
  20. # for multi instances adapt those lines.
  21. TMP_DIR=/var/tmp
  22. PID_FILE=/var/run/jsvc.pid
  23. CATALINA_BASE=$CATALINA_HOME
  24. JAVA_OPTS='-server -Xms512m -Xmx1024m -XX:PermSize=64m -XX:MaxPermSize=512m -XX:-UseGCOverheadLimit'
  25. CATALINA_OPTS=
  26. CLASSPATH=\
  27. $JAVA_HOME/lib/tools.jar:\
  28. $CATALINA_HOME/bin/commons-daemon.jar:\
  29. $CATALINA_HOME/bin/bootstrap.jar
  30. case "$1" in
  31. start)
  32. #
  33. # Start Tomcat
  34. #
  35. $DAEMON_HOME/jsvc \
  36. -user $TOMCAT_USER \
  37. -home $JAVA_HOME \
  38. -Dcatalina.home=$CATALINA_HOME \
  39. -Dcatalina.base=$CATALINA_BASE \
  40. -Djava.io.tmpdir=$TMP_DIR \
  41. -wait 10 \
  42. -pidfile $PID_FILE \
  43. -outfile $CATALINA_HOME/logs/catalina.out \
  44. -errfile '&1' \
  45. $JAVA_OPTS \
  46. $CATALINA_OPTS \
  47. -cp $CLASSPATH \
  48. org.apache.catalina.startup.Bootstrap
  49. #
  50. # To get a verbose JVM
  51. #-verbose \
  52. # To get a debug of jsvc.
  53. #-debug \
  54. exit $?
  55. ;;
  56. stop)
  57. #
  58. # Stop Tomcat
  59. #
  60. $DAEMON_HOME/jsvc \
  61. -stop \
  62. -pidfile $PID_FILE \
  63. org.apache.catalina.startup.Bootstrap
  64. exit $?
  65. ;;
  66. *)
  67. echo "Usage tomcat_th start/stop"
  68. exit 1;;
  69. esac

设置可以执行

点击(此处)折叠或打开

  1. chmod +x /etc/init.d/tomcat
4)修改tomcat拥有者

点击(此处)折叠或打开

  1. chown -R daemon:daemon /home/tomcat
  2. chown -R daemon:daemon /home/tomcatlogs/*

5)启动tomcat

点击(此处)折叠或打开

  1. service tomcat_th start

这时tomcat写出来的文件都是daemon拥有,因此apache就能够访问
阅读(8815) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

xieyunge2012-10-07 10:49:33

一直是用root运行tomcat,会不会不安全啊