CenOS系统中安装Tomcat7并设置为自启动服务

1、 软件

a)         下载apache-tomcat-7.0.27 地址: http://apache.etoak.com/tomcat/tomcat-7/v7.0.27/bin/apache-tomcat-7.0.27.tar.gz

b)        如无特殊说明,本文档操作用户为tomcat

2、 安装

a)         解压

1 # tar zxvf apache-tomcat-7.0.27.zip

 

b)        移动到其他目录

1 # mv apache-tomcat-7.0.27 /home/tomcat/tomcat

 

c)         启动Tomcat服务

# cd /home/tomcat/tomcat/bin

# ./startup.sh

 

d)        检查是否启动成功

在本机浏览器中访问URL: http://localhost:8080/

会出现Tomcat的欢迎页面

注:如果想远程通过浏览器访问,则在远程浏览器中输入http://<ip>:8080/

<ip> 可通过在本地机器上输入命令 ifconfig 查看

    如果未能访问到tomcat的欢迎页面,需要查看本机的防火墙设置,是否打开了端口8080

e)         停止服务

1 # ./shutdown.sh 

3、 可能出现的问题

a)         Java未先安装,或未正确配置JAVA_HOME系统环境变量

b)         Linux系统的防火墙8080端口未被设置为远程可访问

4、配置tomcat由tomcat用户自启动(使用jsvc

a)         编译安装jsvc

 1 # export CATALINA_HOME=/home/tomcat/tomcat
 2 
 3 # cd $CATALINA_HOME/bin
 4 
 5 # tar xvfz commons-daemon-native.tar.gz
 6 
 7 # cd commons-daemon-1.0.8-native-src/unix
 8 
 9 # ./configure
10 
11 # make
12 
13 # cp jsvc ../..

 

b)        编写自启动脚本:用root用户登录,创建脚本tomcat7

1 # vi /etc/init.d/tomcat7

 

添加如下脚本:

  1 #! /bin/sh
  2 
  3  
  4 
  5 # chkconfig: 35 96 04
  6 
  7 # description: Apache-Tomcat service script.
  8 
  9  
 10 
 11 # Version:
 12 
 13 #        2008-01-17-01
 14 
 15 # By:
 16 
 17 #        Typhoon.Free.Wolf.
 18 
 19  
 20 
 21 # Service name.
 22 
 23 SVC_NAME="tomcat7"
 24 
 25 # Lock file.
 26 
 27 LOCK_FILE="/var/lock/subsys/tfw_tomcat"
 28 
 29 # Installation prefix.
 30 
 31 APP_HOME="/home/tomcat/tomcat"
 32 
 33 # The process name to monitor.
 34 
 35 APP_PROC="java"
 36 
 37 # Authorize user.
 38 
 39 APP_USER="tomcat"
 40 
 41  
 42 
 43 SLEEP_START=5
 44 
 45 SLEEP_STOP=$SLEEP_START
 46 
 47  
 48 
 49 # Importing functions.
 50 
 51 flg_func=0
 52 
 53 if [ -f /etc/init.d/functions ] ; then
 54 
 55         . /etc/init.d/functions
 56 
 57         flg_func=1
 58 
 59 elif [ -f /etc/rc.d/init.d/functions ] ; then
 60 
 61         . /etc/rc.d/init.d/functions
 62 
 63         flg_func=1
 64 
 65 fi
 66 
 67  
 68 
 69 # Templete.
 70 
 71 # Return:
 72 
 73 #        FLG_PROC_ON means process is there.
 74 
 75 #        FLG_PROC_OFF means process not exists.
 76 
 77 #        Other means error.
 78 
 79 FLG_PROC_ON=1
 80 
 81 FLG_PROC_OFF=0
 82 
 83 probe() {
 84 
 85         srch_rst=$(ps -A|grep $APP_PROC|awk '{print $4}')
 86 
 87         for rst in $srch_rst ; do
 88 
 89                 if [ $APP_PROC = $rst ] ; then
 90 
 91                         return $FLG_PROC_ON
 92 
 93                 fi
 94 
 95         done
 96 
 97         return $FLG_PROC_OFF
 98 
 99 }
100 
101  
102 
103 # Templete.
104 
105 #        Shows OK.
106 
107 # Return:
108 
109 echo_ok() {
110 
111         case $flg_func in
112 
113                 1)
114 
115                         echo_success
116 
117                         echo ""
118 
119                 ;;
120 
121                 *)
122 
123                         echo ""
124 
125                         echo "        [  OK  ]"
126 
127                 ;;
128 
129         esac
130 
131 }
132 
133  
134 
135 # Templete.
136 
137 #        Shows Passed.
138 
139 # Return:
140 
141 echo_pass() {
142 
143         case $flg_func in
144 
145                 1)
146 
147                         echo_passed
148 
149                         echo ""
150 
151                 ;;
152 
153                 *)
154 
155                         echo ""
156 
157                         echo "        [PASSED]"
158 
159                 ;;
160 
161         esac
162 
163 }
164 
165  
166 
167 # Templete.
168 
169 #        Shows Failed.
170 
171 # Return:
172 
173 echo_bad() {
174 
175         case $flg_func in
176 
177                 1)
178 
179                         echo_failure
180 
181                         echo ""
182 
183                 ;;
184 
185                 *)
186 
187                         echo ""
188 
189                         echo "        [FAILED]"
190 
191                 ;;
192 
193         esac
194 
195 }
196 
197  
198 
199 # Templete.
200 
201 #        Start section.
202 
203 # Return:
204 
205 _start() {
206 
207         probe
208 
209         proc=$?
210 
211         echo ""
212 
213         echo "Starting $SVC_NAME..."
214 
215  
216 
217         if (touch $LOCK_FILE) ; then
218 
219                 echo_ok
220 
221         else
222 
223                 echo_bad
224 
225         fi
226 
227 }
228 
229  
230 
231 start() {
232 
233         probe
234 
235         proc=$?
236 
237         echo ""
238 
239         echo "Starting $SVC_NAME..."
240 
241  
242 
243         if [ $FLG_PROC_OFF = $proc ] ; then
244 
245                 if (su - $APP_USER -c "$APP_HOME/bin/startup.sh") ; then
246 
247                         sleep $SLEEP_START
248 
249                         if (touch $LOCK_FILE) ; then
250 
251                                 echo_ok
252 
253                         else
254 
255                                 echo_pass
256 
257                                 echo ""
258 
259                         fi
260 
261                 else
262 
263                         echo_bad
264 
265                 fi
266 
267         elif [ $FLG_PROC_ON = $proc ] ; then
268 
269                 if (touch $LOCK_FILE) ; then
270 
271                         echo_passed
272 
273                         echo ""
274 
275                 else
276 
277                         echo_bad
278 
279                 fi
280 
281         fi
282 
283 }
284 
285  
286 
287 # Templete.
288 
289 #        Stop section.
290 
291 # Return:
292 
293 _stop() {
294 
295         probe
296 
297         proc=$?
298 
299         echo ""
300 
301         echo "Stopping $SVC_NAME..."
302 
303  
304 
305         if (rm -Rf $LOCK_FILE) ; then
306 
307                 echo_ok
308 
309         else
310 
311                 echo_bad
312 
313         fi
314 
315 }
316 
317  
318 
319 stop() {
320 
321         probe
322 
323         proc=$?
324 
325         echo ""
326 
327         echo "Stopping $SVC_NAME..."
328 
329  
330 
331         if [ $FLG_PROC_OFF = $proc ] ; then
332 
333                 if (rm -Rf $LOCK_FILE) ; then
334 
335                         echo_passed
336 
337                         echo ""
338 
339                 else
340 
341                         echo_bad
342 
343                 fi
344 
345         elif [ $FLG_PROC_ON = $proc ] ; then
346 
347                 if (su - $APP_USER -c "$APP_HOME/bin/shutdown.sh") ; then
348 
349                         sleep $SLEEP_STOP
350 
351                         if (rm -Rf $LOCK_FILE) ; then
352 
353                                 echo_ok
354 
355                         else
356 
357                                 echo_pass
358 
359                                 echo ""
360 
361                         fi
362 
363                 else
364 
365                         echo_bad
366 
367                 fi
368 
369         fi
370 
371 }
372 
373  
374 
375 # Parse command line parameters.
376 
377 case $1 in
378 
379         start)
380 
381                 start
382 
383         ;;
384 
385         stop)
386 
387                 stop
388 
389         ;;
390 
391         restart)
392 
393                 stop
394 
395                 start
396 
397         ;;
398 
399         *)
400 
401                 # Print help
402 
403                 echo "Usage: $0 {start|stop|restart}"
404 
405                 exit 1
406 
407         ;;
408 
409 esac
410 
411 exit 0

 

注意修改APP_HOME为tomcat实际安装路径,APP_USER为启动tomcat的用户。

c)         设置tomcat自启动服务

使用如下命令给tomcat7增加执行权限

1 # chmod +x tomcat7

 

将tomcat添加到启动服务中

1 # chkconfig --add tomcat7
2 
3 # chkconfig --level 234 tomcat7 on

 

可以用如下命令确认是否配置成功

1 # chkconfig --list tomcat7

 

之后就可以用service来控制tomcat的启动和停止了。

1 # service tomcat7 start
2 # service tomcat7 stop

 

查看/home/tomcat/tomcat/logs/catalina-daemon.out,确认没有error

posted @ 2012-09-17 10:22 没头脑的土豆 阅读(...) 评论(...) 编辑 收藏