Tomcat以普通户用运行在80端口

Tomcat以普通户用运行在80端口

默认情况下,Tomcat是以root权限运行的,这样权限太大了;对于开发人员必须要降权运行;建立一个普通用户供开发人员发布项目及重启服务等;

 

建立普通用户:

 
  1. useradd usertest 
  2. echo "123456"|passwd --stdin usertest 
 

注意问题:

1、运行Tomcat的环境变量可以直接写在/etc/profile文件中,或者直接写在用户家目录下的:~/.bash_profile文件中;
2、在Tomcat的bin目录中的startup.sh和shutdown.sh脚本文件中也加入上面的环境变量;
 

添加启动脚本:

 
  1. #!/bin/bash   
  2. #   
  3. # chkconfig: - 95 15    
  4. # description: Tomcat start/stop/status script   
  5. #Author:swper 
  6. #Email:hz328@58jb.com 
  7.  
  8. #Location of JAVA_HOME (bin files)   
  9. export  JAVA_HOME=/usr/local/java7 
  10. export  JRE_HOME=$JAVA_HOME/jre 
  11. export  CLASSPATH=$CLASSPATH:./:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar 
  12. export  PATH=$PATH:/usr/local/java7/bin 
  13.    
  14. #Add Java binary files to PATH   
  15. export PATH=$JAVA_HOME/bin:$PATH   
  16.    
  17. #CATALINA_HOME is the location of the configuration files of this instance of Tomcat   
  18. CATALINA_HOME=/usr/local/tomcat7   
  19.    
  20. #TOMCAT_USER is the default user of tomcat   
  21. TOMCAT_USER=root 
  22.    
  23. #TOMCAT_USAGE is the message if this script is called without any options   
  24. TOMCAT_USAGE="Usage: $0 {\e[00;32mstart\e[00m|\e[00;31mstop\e[00m|\e[00;32mstatus\e[00m|\e[00;31mrestart\e[00m}"   
  25.    
  26. #SHUTDOWN_WAIT is wait time in seconds for java proccess to stop   
  27. SHUTDOWN_WAIT=10   
  28.    
  29. tomcat_pid() {   
  30.         echo `ps -ef | grep $CATALINA_HOME | grep -v grep | tr -s " "|cut -d" " -f2`   
  31. }   
  32.    
  33. start() {   
  34.   pid=$(tomcat_pid)   
  35.   if [ -n "$pid" ];then   
  36.     echo -e "\e[00;31mTomcat is already running (pid: $pid)\e[00m"   
  37.   else   
  38.     echo -e "\e[00;32mStarting tomcat\e[00m"   
  39.     if [ `user_exists $TOMCAT_USER` = "1" ];then   
  40.       sudo $CATALINA_HOME/bin/startup.sh   
  41.     else   
  42.       sudo $CATALINA_HOME/bin/startup.sh   
  43.     fi   
  44.     status   
  45.   fi   
  46.   return 0   
  47. }   
  48.    
  49. status(){   
  50.   pid=$(tomcat_pid)   
  51.   if [ -n "$pid" ];then   
  52.     echo -e "\e[00;32mTomcat is running with pid: $pid\e[00m"   
  53.   else   
  54.     echo -e "\e[00;31mTomcat is not running\e[00m"   
  55.   fi   
  56. }   
  57.    
  58. stop() {   
  59.   pid=$(tomcat_pid)   
  60.   if [ -n "$pid" ];then   
  61.     echo -e "\e[00;31mStoping Tomcat\e[00m"   
  62.         sudo $CATALINA_HOME/bin/shutdown.sh   
  63.    
  64.     let kwait=$SHUTDOWN_WAIT   
  65.     count=0;   
  66.     until [ `ps -p $pid | grep -c $pid` = "0" ] || [ $count -gt $kwait ]   
  67.     do   
  68.       echo -n -e "\e[00;31mwaiting for processes to exit\e[00m\n";   
  69.       sleep 1   
  70.       let count=$count+1;   
  71.     done   
  72.    
  73.     if [ $count -gt $kwait ];then   
  74.       echo -n -e "\n\e[00;31mkilling processes which didn't stop after $SHUTDOWN_WAIT seconds\e[00m"   
  75.       kill -9 $pid   
  76.     fi   
  77.   else   
  78.     echo -e "\e[00;31mTomcat is not running\e[00m"   
  79.   fi   
  80.    
  81.   return 0   
  82. }   
  83.    
  84. user_exists(){   
  85.   if id -u $1 >/dev/null 2>&1; then   
  86.     echo "1"   
  87.   else   
  88.     echo "0"   
  89.   fi   
  90. }   
  91.    
  92. case $1 in   
  93.         start)   
  94.           start   
  95.         ;;   
  96.    
  97.         stop)     
  98.           stop   
  99.         ;;   
  100.    
  101.         restart)   
  102.           stop   
  103.           start   
  104.         ;;   
  105.    
  106.         status)   
  107.       status   
  108.         ;;   
  109.    
  110.         *)   
  111.       echo -e $TOMCAT_USAGE   
  112.         ;;   
  113. esac       
  114. exit 0   
 

加入可执行权限:

  1. chmod +x /etc/init.d/tomcat 
 

修改Tomcat程序的权限:

  1. chown -R usertest:usertest /usr/local/tomcat7 
 

sudo授权:

 
  1. cat >/etc/sudoers<<EOF 
  2. ##======================================= 
  3. #User group 
  4. User_Alias MONITOR = usertest 
  5.   
  6. ## Restart Tomcat service. 
  7. #Cmnd_Alias RESTART_SSH = /sbin/service sshd restart 
  8. Cmnd_Alias RESTART_TOMCAT  = /usr/local/tomcat7/bin/startup.sh, /usr/local/tomcat7/bin/shutdown.sh 
  9.   
  10. ## Restart mysqld service. 
  11. Cmnd_Alias RESTART_MYSQL  = /etc/init.d/mysqld restart,/sbin/service mysqld restart 
  12.   
  13. ## monitor can only restart tomcat and mysqld. 
  14. MONITOR ALL=(ALL) NOPASSWD: RESTART_TOMCAT,RESTART_MYSQL 
  15. ##======================================= 
  16. EOF 
 
上面授权配置中,添加了Tomcat的启动脚本和Mysql的启动授权;利用sudo 命令,这样以最小权限运行程序;
 

启动方法:

 
  1. Tomcat: 
  2. service tomcat [start|restart|stop] 
  3.   
  4. Mysql: 
  5. sudo service mysqld restart 
 
这样一来就降低了权限,同时也解决了Tomcat无法以普通用户运行在80端口的问题;