我客户的改版的网站(是多个国家版本)要在客户的服务器上线,新网站是使用opencms开发,采用前端是apache,后端是tomcat的结构。之前在另外一台产品机上放了几个国家,配置安装非常顺利。
但是到这台服务器上,出现访问不到root用户创建的文件或者是tomcat产生的静态文件,就是提示“403 禁止访问”
查找到问题所在,所有用户创建出来的文件权限都是如下:
也就是说所有用户创建出来的用户只能自己读。但是我没法去修改这个设置(权限管理是有另一家公司管理,很严)。
那么就出现一个问题了,客户在opencms后台上传了图片或者静态文件,这些文件会被写到硬盘中,而tomcat目前是使用root身份,也就是说只能root可读。而apache是daemon身份运行(这个用户是nologin的,这样比较安全),那么用户通过apache访问这些静态文件就会出现403错误。
于是我尝试使用daemon身份运行tomcat,结果发现su和sudo都不可以,因为这个用户是nologin的。
结果发现有jsvc这个东西可以使用特定的身份允许tomcat
安装如下
1)下载
2)解压并安装
- tar -zxvf commons-daemon-1.0.10-native-src.tar.gz
- cd commons-daemon-1.0.10-native-src
- cd unix/
- ./configure --with-java=/home/soft/jdk/
- make
- cp jsvc /home/tomcat/bin/
3)创建service
- vi /etc/init.d/tomcat
- cat /etc/init.d/tomcat
/etc/init.d/tomcat的内容如下:
- #!/bin/sh
- #
- # Startup Script for Tomcat5
- #
- # chkconfig: 345 88 14
- # description: Tomcat Daemon
- # processname: jsvc
- # pidfile: /var/run/jsvc.pid
- # config:
- #
- # Source function library.
- . /etc/rc.d/init.d/functions
- #
- prog=tomcat_id
- #
- JAVA_HOME=/home/soft/jdk
- CATALINA_HOME=/home/tomcat
- DAEMON_HOME=$CATALINA_HOME/bin
- TOMCAT_USER=daemon
- # for multi instances adapt those lines.
- TMP_DIR=/var/tmp
- PID_FILE=/var/run/jsvc.pid
- CATALINA_BASE=$CATALINA_HOME
- JAVA_OPTS='-server -Xms512m -Xmx1024m -XX:PermSize=64m -XX:MaxPermSize=512m -XX:-UseGCOverheadLimit'
- CATALINA_OPTS=
- CLASSPATH=\
- $JAVA_HOME/lib/tools.jar:\
- $CATALINA_HOME/bin/commons-daemon.jar:\
- $CATALINA_HOME/bin/bootstrap.jar
- case "$1" in
- start)
- #
- # Start Tomcat
- #
- $DAEMON_HOME/jsvc \
- -user $TOMCAT_USER \
- -home $JAVA_HOME \
- -Dcatalina.home=$CATALINA_HOME \
- -Dcatalina.base=$CATALINA_BASE \
- -Djava.io.tmpdir=$TMP_DIR \
- -wait 10 \
- -pidfile $PID_FILE \
- -outfile $CATALINA_HOME/logs/catalina.out \
- -errfile '&1' \
- $JAVA_OPTS \
- $CATALINA_OPTS \
- -cp $CLASSPATH \
- org.apache.catalina.startup.Bootstrap
- #
- # To get a verbose JVM
- #-verbose \
- # To get a debug of jsvc.
- #-debug \
- exit $?
- ;;
- stop)
- #
- # Stop Tomcat
- #
- $DAEMON_HOME/jsvc \
- -stop \
- -pidfile $PID_FILE \
- org.apache.catalina.startup.Bootstrap
- exit $?
- ;;
- *)
- echo "Usage tomcat_th start/stop"
- exit 1;;
- esac
设置可以执行
- chmod +x /etc/init.d/tomcat
4)修改tomcat拥有者
- chown -R daemon:daemon /home/tomcat
- chown -R daemon:daemon /home/tomcatlogs/*
5)启动tomcat
这时tomcat写出来的文件都是daemon拥有,因此apache就能够访问
阅读(8815) | 评论(1) | 转发(0) |