利用systemd 实现 tomcat 多实例

简介:

环境: CentOS 7 x86_64


1、安装jdk

1
rpm -ivh jdk-8u60-linux-x64.rpm


2、创建普通用户

1
2
getent group tomcat || groupadd -r tomcat
getent  passwd  tomcat ||  useradd  -r -d  /opt  -s  /bin/nologin  tomcat


3、下载tomcat 7

1
2
3
4
5
6
7
8
9
cd  /opt
wget http: //mirrors .ustc.edu.cn /apache/tomcat/tomcat-7/v7 .0.64 /bin/apache-tomcat-7 .0.64. tar .gz
tar  zxvf apache-tomcat-7.0.64. tar .gz
mv  apache-tomcat-7.0.64 tomcat01
chown  -R tomcat:tomcat tomcat01
 
tar  zxvf apache-tomcat-7.0.64. tar .gz
mv  apache-tomcat-7.0.64 tomcat02
chown  -R tomcat:tomcat tomcat02


两个实例同时监听8080端口必然会产生冲突,所以必须修改.

1
2
3
4
sed  -i  's/8080/8081/g'  /opt/tomcat01/conf/server .xml
sed  -i  's/8005/8001/g'  /opt/tomcat01/conf/server .xml
sed  -i  's/8080/8082/g'  /opt/tomcat02/conf/server .xml
sed  -i  's/8005/8002/g'  /opt/tomcat02/conf/server .xml

AJP通常用不上,这里统一关闭

1
2
sed  -i  '/8009/d'  /opt/tomcat01/conf/server .xml
sed  -i  '/8009/d'  /opt/tomcat01/conf/server .xml

tomcat在Linux下默认工作模式是bio,性能非常低,建议使用apr或者nio,

这里改为nio,即非阻塞IO,性能比较好。

1
2
sed  -i.bak  's#HTTP/1.1#org.apache.coyote.http11.Http11NioProtocol#'  /opt/tomcat01/conf/server .xml
sed  -i.bak  's#HTTP/1.1#org.apache.coyote.http11.Http11NioProtocol#'  /opt/tomcat02/conf/server .xml

(如果想起用apr模式,需要安装apr-devel、tomcat-native两个软件包,无需改配置)


3、创建启动文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
cd  /usr/lib/systemd/system
cat  >tomcat01.service <<EOF
[Unit]
Description=Apache Tomcat 7
After=network.target
[Service]
Type=oneshot
ExecStart= /opt/tomcat01/bin/startup .sh
ExecStop= /opt/tomcat01/bin/shutdown .sh
RemainAfterExit= yes
User=tomcat
Group=tomcat
[Install]
WantedBy=multi-user.target
EOF

tomcat02同理

1
sed  's/tomcat01/tomcat02/g'  tomcat01.service > tomcat02.service


4、启动服务

1
2
3
4
systemctl  enable  tomcat01
systemctl  enable  tomcat02
systemctl start tomcat01
systemctl start tomcat02


5、日志轮转

由于tomcat是作为后台服务持续运行,天长日久,日志必定会越来越大,在当初部署tomcat之时很容易忽略这个问题,否则硬盘迟早会被撑爆。

创建文件/etc/logrotate.d/tomcat,内容如下:

1
2
3
4
5
6
7
8
9
10
11
/opt/tomcat01/logs/catalina.out
/opt/tomcat02/logs/catalina.out
{
     copytruncate
     daily
     rotate 7
     missingok
     notifempty
     compress
     create 0644 tomcat tomcat
}


6、查看进程

1
ps  aux | grep  tomcat


附上一份nginx反向代理tomcat的配置文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
proxy_cache_path /var/cache/nginx/proxy_cache levels=1:2 keys_zone=static:10m inactive=30d max_size=1g;
 
upstream tomcat {
         ip_hash       ;
         #hash           $remote_addr consistent;
         server          127.0.0.1:8081 max_fails=1 fail_timeout=2s ;
         server          127.0.0.1:8082 max_fails=1 fail_timeout=2s ; 
         keepalive       16;
}
 
server {
         listen          80;
         server_name     tomcat.example.com;
 
         charset         utf-8;
         access_log      /var/log/nginx/tomcat.access.log  main;
         root            /usr/share/nginx/html;
         index           index.html index.htm index.jsp;
 
         location / {
                 proxy_pass              http://tomcat;
                 proxy_redirect          off;
                 proxy_set_header        Host $host;
                 proxy_set_header        X-Real-IP $remote_addr;
                 proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
                 proxy_cache_use_stale   error timeout invalid_header updating http_500 http_502 http_503 http_504;
 
                 proxy_connect_timeout   300;
                 proxy_send_timeout      300;
                 proxy_read_timeout      300;
                 proxy_http_version      1.1;
                 proxy_set_header        Connection "";
 
                 add_header              X-Backend "$upstream_addr";
         }
 
         location ~* ^.+\.(js|css|ico|gif|jpg|jpeg|png)$ {
                 proxy_pass              http://tomcat ;
                 proxy_redirect          off;
                 proxy_set_header        Host $host;
                 proxy_set_header        X-Real-IP $remote_addr;
                 proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
                 proxy_cache_use_stale   error timeout invalid_header updating http_500 http_502 http_503 http_504;
 
                 proxy_connect_timeout   300;
                 proxy_send_timeout      300;
                 proxy_read_timeout      300;
                 proxy_http_version      1.1;
                 proxy_set_header        Connection "";
 
                 proxy_cache             static;
                 proxy_cache_key         $host$uri$is_args$args;
                 proxy_cache_valid       200 302 7d;
                 proxy_cache_valid       404 1m;
                 proxy_cache_valid       any 1h;
                 add_header              X-Cache $upstream_cache_status;
 
                 #log_not_found off;
                 #access_log off;
                 expires max;
         }
 
         location ~ /\.ht {
                 deny  all;
         }
 
}


本文理论上也适用于tomcat8,未经测试。










本文转自 紫色葡萄 51CTO博客,原文链接:http://blog.51cto.com/purplegrape/1702292,如需转载请自行联系原作者
目录
相关文章
|
8月前
|
Java 应用服务中间件 网络安全
Tomcat多实例部署
Tomcat多实例部署
61 0
|
5月前
|
负载均衡 安全 应用服务中间件
Nginx + Tomcat+HTTP/HTTPS实现负载均衡实例
Nginx + Tomcat+HTTP/HTTPS实现负载均衡实例
181 0
|
9月前
|
应用服务中间件 Shell
Tomcat 的多实例配置
有时候需要在一个服务器上部署多个Tomcat,通过不同的端口进行区分,比如,反向代理。但是不想简单的通过复制Tomcat来实现,这样既不方便以后的升级也不方便管理,那么这时候就需要配置Tomcat的单机多实例了。
88 0
|
11月前
|
监控 网络协议 安全
tomcat多实例优化及zabbix监控群集(二)
tomcat多实例优化及zabbix监控群集
128 0
|
11月前
|
监控 Java 应用服务中间件
tomcat多实例优化及zabbix监控群集(一)
tomcat多实例优化及zabbix监控群集
104 0
|
11月前
|
监控 Java 应用服务中间件
简单看看就会的tomcat全家桶(部署-多实例-监控-远程上传-日志-优化等)(下)
简单看看就会的tomcat全家桶(部署-多实例-监控-远程上传-日志-优化等)(下)
132 0
|
11月前
|
监控 Java 应用服务中间件
简单看看就会的tomcat全家桶(部署-多实例-监控-远程上传-日志-优化等)(上)
简单看看就会的tomcat全家桶(部署-多实例-监控-远程上传-日志-优化等)(上)
144 0
|
SQL Java 关系型数据库
IDEA+Java+JSP+Mysql+Tomcat实现Web商品信息管理系统
IDEA+Java+JSP+Mysql+Tomcat实现Web商品信息管理系统
375 0
IDEA+Java+JSP+Mysql+Tomcat实现Web商品信息管理系统
|
Ubuntu 关系型数据库 MySQL
Linux:Ubuntu安装jdk、tomcat、mysql,以及实现Tomcat开机自启动
Linux:Ubuntu安装jdk、tomcat、mysql,以及实现Tomcat开机自启动
278 0
Linux:Ubuntu安装jdk、tomcat、mysql,以及实现Tomcat开机自启动