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。